Skip to content

Commit ef50223

Browse files
committed
ported to google chrome
1 parent d12f8e5 commit ef50223

18 files changed

+282
-117
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ node_modules/
99
/dist/firephp.zip
1010
/dist/firephp.build/.web-extension-id
1111
.~*
12-
/package-lock.json
12+
/package-lock.json
13+
/dist/firephp.build.zip

README.md

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
**Status: DEV - Commands will currently not run for you!**
22

3-
![FirePHP Logo](https://rawgit.com/firephp/firephp-for-firefox-devtools/master/src/skin/Logo.png "FirePHP Logo")
3+
![FirePHP Logo](https://rawgit.com/firephp/firephp-for-browser-devtools/master/src/skin/Logo.png "FirePHP Logo")
44

5-
FirePHP for Firefox Developer Tools
5+
FirePHP for Browser Developer Tools
66
===================================
77

8-
This project holds the [FirePHP Tool](http://firephp.org) in the form of a [Mozilla Web Extension](https://developer.mozilla.org/en-US/Add-ons/WebExtensions) which is compatible with the latest *Multiprocess Firefox Browser (>= 56.0.2)*.
8+
This project holds the [FirePHP Tool](http://firephp.org) in the form of a Browser Extension compatible with:
9+
10+
* Mozilla Firefox - https://developer.mozilla.org/en-US/Add-ons/WebExtensions
11+
* Google Chrome - https://developer.chrome.com/extensions
912

1013
> Log from PHP to Browser Developer Tools via HTTP Response Headers.
1114
@@ -15,16 +18,17 @@ For a list of supported server libraries see [http://firephp.org](http://firephp
1518
Install
1619
-------
1720

18-
### AMO Listed
21+
### Published
1922

20-
Install from: [addons.mozilla.org/en-US/firefox/addon/firephp](https://addons.mozilla.org/en-US/firefox/addon/firephp/)
23+
* Firefox: [addons.mozilla.org/en-US/firefox/addon/firephp](https://addons.mozilla.org/en-US/firefox/addon/firephp/)
24+
* Chrome: *TBD*
2125

22-
### Unlisted
26+
### Local
2327

2428
**NOTE:** These downloads do **NOT** auto-update!
2529

26-
1. Download latest: [dist/firephp.xpi](https://github.com/firephp/firephp-for-firefox-devtools/raw/master/dist/firephp.xpi)
27-
2. Drag into Firefox
30+
* Firefox: [dist/firephp.xpi](https://github.com/firephp/firephp-for-browser-devtools/raw/master/dist/firephp.xpi)
31+
* Chrome: [dist/firephp.build](https://github.com/firephp/firephp-for-browser-devtools/raw/master/dist/firephp.build)
2832

2933
### Source
3034

@@ -42,12 +46,12 @@ Build from source:
4246
git diff # Optional to verify build
4347
# Only the `version` property in `dist/firephp.build/manifest.json` should have changed.
4448

45-
*Load Temporary Addon* at `dist/firephp.build/` into Firefox.
49+
*Load Temporary Addon* at `dist/firephp.build/` into Firefox or Chrome.
4650

4751
Preview
4852
-------
4953

50-
<img src="https://rawgit.com/firephp/firephp-for-firefox-devtools/master/src/skin/CodeScreenshot.png" alt="Code" width="300"> &nbsp; <img src="https://rawgit.com/firephp/firephp-for-firefox-devtools/master/src/skin/PanelScreenshot.png" alt="Panel" width="300">
54+
<img src="https://rawgit.com/firephp/firephp-for-browser-devtools/master/src/skin/CodeScreenshot.png" alt="Code" width="300"> &nbsp; <img src="https://rawgit.com/firephp/firephp-for-browser-devtools/master/src/skin/PanelScreenshot.png" alt="Panel" width="300">
5155

5256
Provenance
5357
==========

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "github.com~firephp~firephp-for-firefox-devtools",
3-
"version": "1.2.4",
3+
"version": "1.3.0",
44
"__devDependencies": {
55
"bash.origin.lib": "",
66
"fireconsole.rep.js": "^0.0.13"

src/adapters/http-request-observer.js

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ exports.for = function (API) {
55
var requestIndex = 0;
66

77

8+
// Firefox allows returning a promise since version 52
9+
// @see https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest
10+
// Chrome requires a sync return
11+
// @see https://developer.chrome.com/extensions/webRequest#event-onBeforeSendHeaders
812
function onRequest (request) {
913

1014
//console.log("MAKE REQUEST ... add headers", request);
@@ -27,25 +31,30 @@ exports.for = function (API) {
2731
"hostname": request.url.replace(/^https?:\/\/([^:\/]+)(:\d+)?\/.*?$/, "$1"),
2832
"port": request.url.replace(/^https?:\/\/[^:]+:?(\d+)?\/.*?$/, "$1") || 80,
2933
"method": request.method,
30-
"headers": headers,
34+
"headers": headers
35+
/*
3136
setRequestHeader: function (name, value) {
3237
38+
//console.log("SET REQUEST HEADER", "name, value", name, value);
39+
3340
request.requestHeaders.filter(function (header) {
3441
return (header.name === name);
3542
})[0].value = value;
3643
}
44+
*/
3745
});
3846

3947
if (!result) {
4048
return {};
4149
}
4250

43-
return result.then(function (changes) {
44-
45-
if (!changes) {
46-
return {};
47-
}
51+
const changes = result;
52+
//return Promise.resolve(result).then(function (changes) {
4853

54+
//if (!changes) {
55+
// return {};
56+
//}
57+
4958
var ret = {};
5059

5160
if (changes.requestHeaders) {
@@ -59,8 +68,10 @@ exports.for = function (API) {
5968
ret.requestHeaders = headers;
6069
}
6170

71+
//console.log("onBeforeSendHeaders:", ret);
72+
6273
return ret;
63-
});
74+
//});
6475
}
6576

6677

src/adapters/page-content-script.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
const BROWSER = browser;
2+
const BROWSER = (typeof browser != "undefined") ? browser : chrome;
33

44

55
BROWSER.runtime.onMessage.addListener(function (request) {

src/background.js

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11

2-
const BROWSER = browser;
2+
const BROWSER = (typeof browser != "undefined") ? browser : chrome;
33
const WILDFIRE = exports.WILDFIRE = require("./wildfire");
44

5-
WILDFIRE.VERBOSE = false;
5+
const LIB = require("./lib");
6+
7+
WILDFIRE.VERBOSE = true;
68

79

810
WILDFIRE.once("error", function (err) {
@@ -15,17 +17,23 @@ async function initCurrentContext () {
1517
// Already initialized
1618
return;
1719
}
18-
19-
const tabDetails = (await BROWSER.tabs.query({
20-
currentWindow: true,
21-
active: true
22-
}))[0];
23-
24-
if (tabDetails.url) {
25-
setCurrentContextFromDetails({
26-
tabId: tabDetails.id,
27-
url: tabDetails.url
28-
}, true);
20+
try {
21+
const searchResult = (await LIB.browser.tabs.query({
22+
currentWindow: true,
23+
active: true
24+
}));
25+
if (searchResult.length === 1) {
26+
const tabDetails = searchResult[0];
27+
28+
if (tabDetails.url) {
29+
setCurrentContextFromDetails({
30+
tabId: tabDetails.id,
31+
url: tabDetails.url
32+
}, true);
33+
}
34+
}
35+
} catch (err) {
36+
console.error(err.stack || err.message || err);
2937
}
3038
}
3139

@@ -42,7 +50,7 @@ function broadcastForContext (context, message) {
4250
message.context = context;
4351
message.to = "message-listener";
4452

45-
return BROWSER.runtime.sendMessage(message).catch(function (err) {
53+
return LIB.browser.runtime.sendMessage(message).catch(function (err) {
4654
if (WILDFIRE.VERBOSE) console.log("WARNING", err);
4755
});
4856
}
@@ -136,7 +144,7 @@ async function runtime_onMessage (message) {
136144
} else
137145
if (message.to === "background") {
138146
if (message.event === "reload") {
139-
browser.tabs.reload(message.context.tabId, {
147+
LIB.browser.tabs.reload(message.context.tabId, {
140148
bypassCache: true
141149
});
142150
}
@@ -176,9 +184,15 @@ function webRequest_onBeforeRequest (details) {
176184

177185
// We only care about the page frame event.
178186
if (
179-
typeof details.documentUrl !== "undefined" ||
187+
(
188+
// Firefox
189+
typeof details.documentUrl !== "undefined" ||
190+
// Google Chrome
191+
typeof details.initiator !== "undefined"
192+
) ||
180193
details.parentFrameId !== -1
181194
) {
195+
// These are resource or sub-frame events
182196
return;
183197
}
184198

src/component.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ exports.for = function (ctx) {
4141
ctx.browser.runtime.onMessage.addListener(function (message) {
4242
try {
4343
if (
44-
typeof ctx.browser !== "undefined" &&
45-
message.context &&
44+
!ctx.browser ||
45+
!ctx.browser.devtools ||
46+
!ctx.browser.devtools.inspectedWindow ||
47+
!message.context ||
4648
message.context.tabId != ctx.browser.devtools.inspectedWindow.tabId
4749
) {
4850
return;

src/console.rep.js

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
const BROWSER = (typeof browser !== "undefined" && browser) || null;
2+
//const BROWSER = (typeof browser != "undefined") ? browser : chrome;
33
const WINDOW = window;
44

55

@@ -38,7 +38,7 @@ exports.main = function (JSONREP, node, options) {
3838
const COMPONENT = require("./component");
3939

4040
const comp = COMPONENT.for({
41-
browser: browser
41+
browser: WINDOW.crossbrowser
4242
});
4343

4444
comp.on("setting.enabled", function (enabled) {
@@ -187,7 +187,7 @@ console.log("CLEAR lastRequestConsole CONSOLE!!");
187187
} else
188188
if (message.event === "prepare") {
189189

190-
//console.log("PREPARE CONSOLE!!!");
190+
console.log("PREPARE CONSOLE!!!", message.context);
191191

192192
let fc = getConsoleForContext(message.context);
193193
if (!persistLogs) {
@@ -209,7 +209,7 @@ console.log("CLEAR lastRequestConsole CONSOLE!!");
209209

210210
} else
211211
if (message.event === "clear") {
212-
//console.log("CLEAR CONSOLE!!!", message.context);
212+
console.log("CLEAR CONSOLE!!!", message.context);
213213

214214
Object.keys(consoles).forEach(function (id) {
215215
//console.log("console id", id);
@@ -221,7 +221,7 @@ console.log("CLEAR lastRequestConsole CONSOLE!!");
221221
scrollIfBottom();
222222
} else
223223
if (message.event === "destroyContext") {
224-
//console.log("DESTROY CONTEXT!!!");
224+
console.log("DESTROY CONTEXT!!!", message.context);
225225

226226
Object.keys(consoles).forEach(function (id) {
227227
if (id == message.context.pageUid) {
@@ -245,11 +245,14 @@ console.log("CLEAR lastRequestConsole CONSOLE!!");
245245

246246
function syncPersistentConsole () {
247247

248-
return BROWSER.storage.local.get("persist-on-navigate").then(function (value) {
248+
return WINDOW.crossbrowser.storage.local.get("persist-on-navigate").then(function (value) {
249249
persistLogs = value["persist-on-navigate"];
250250

251251
if (persistLogs) {
252-
if (!persistentConsole) {
252+
if (
253+
!persistentConsole &&
254+
comp.currentContext
255+
) {
253256
persistentConsole = getConsoleForContext(comp.currentContext);
254257
}
255258
} else {
@@ -271,8 +274,8 @@ console.log("CLEAR lastRequestConsole CONSOLE!!");
271274
}
272275

273276
var persistLogs = false;
274-
if (BROWSER) {
275-
BROWSER.storage.onChanged.addListener(function (changes, area) {
277+
if (WINDOW.crossbrowser) {
278+
WINDOW.crossbrowser.storage.onChanged.addListener(function (changes, area) {
276279
if (changes["persist-on-navigate"]) {
277280

278281
syncPersistentConsole();
@@ -322,6 +325,13 @@ console.log("CLEAR lastRequestConsole CONSOLE!!");
322325
if (persistentConsole) {
323326
return persistentConsole;
324327
}
328+
if (
329+
!context ||
330+
typeof context.pageUid === "undefined"
331+
) {
332+
console.error("context", context);
333+
throw new Error("'context' does not have required property 'pageUid'!");
334+
}
325335
// var key = makeKeyForContext(context);
326336
if (!consoles[context.pageUid]) {
327337
//console.log("MAKE CONSOLE FOR Page UID:", context.pageUid);

src/enabler.rep.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11

2+
const WINDOW = window;
3+
24
exports.main = function (JSONREP, node, options) {
35

46
var api = {
57
currentContext: null
68
};
79

8-
browser.runtime.onMessage.addListener(function (message) {
10+
WINDOW.crossbrowser.runtime.onMessage.addListener(function (message) {
911

1012
if (message.to === "message-listener") {
1113
if (message.event === "currentContext") {
@@ -70,7 +72,7 @@ exports.main = function (JSONREP, node, options) {
7072
tag.enabled = null;
7173

7274
const comp = COMPONENT.for({
73-
browser: browser
75+
browser: WINDOW.crossbrowser
7476
});
7577

7678
comp.on("setting.enabled", function (enabled) {

src/inspector.rep.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11

2+
const WINDOW = window;
3+
24
exports.main = function (JSONREP, node, options) {
35

46

@@ -36,7 +38,7 @@ exports.main = function (JSONREP, node, options) {
3638
const COMPONENT = require("./component");
3739

3840
const comp = COMPONENT.for({
39-
browser: browser
41+
browser: WINDOW.crossbrowser
4042
});
4143

4244
comp.on("setting.enabled", function (enabled) {

0 commit comments

Comments
 (0)