Skip to content

Commit af59fe8

Browse files
committed
Implement options configuration for injecting in Chrome apps and extensions
1 parent 9ba546d commit af59fe8

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

src/browser/extension/background/messaging.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { onConnect, onMessage, sendToTab } from 'crossmessaging';
2+
import getOptions from '../options/getOptions';
23
import { MENU_DEVTOOLS } from '../../../app/constants/ContextMenus.js';
34
let connections = {};
45

@@ -27,13 +28,19 @@ function parseJSON(data) {
2728
}
2829

2930
// Receive message from content script and relay to the devTools page
30-
function messaging(request, sender) {
31+
function messaging(request, sender, sendResponse) {
3132
const tabId = sender.tab ? sender.tab.id : sender.id;
3233
if (tabId) {
3334
if (request.type === 'PAGE_UNLOADED') {
3435
if (connections[ tabId ]) connections[ tabId ].postMessage(naMessage);
3536
return true;
3637
}
38+
if (request.type === 'GET_OPTIONS') {
39+
getOptions(options => {
40+
sendResponse({options: options});
41+
});
42+
return true;
43+
}
3744
const payload = typeof request.payload === 'string' ? parseJSON(request.payload) : request.payload;
3845
if (!payload) return true;
3946
store.liftedStore.setState(payload);

src/browser/extension/inject/index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,13 @@
33

44
window.devToolsExtensionID = 'lmhkpmbekcpmknklioeibfkpmmfibljd';
55

6-
require('./contentScript');
7-
require('./pageScript');
6+
chrome.runtime.sendMessage(window.devToolsExtensionID, { type: 'GET_OPTIONS' }, function(response) {
7+
if (!response.options.inject) {
8+
const urls = response.options.urls.split('\n').join('|');
9+
if (!location.href.match(new RegExp(urls))) return;
10+
}
11+
12+
window.devToolsOptions = response.options;
13+
require('./contentScript');
14+
require('./pageScript');
15+
});

src/browser/extension/options/getOptions.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
const getOptions = callback => {
2+
if (window.devToolsExtensionID && chrome.runtime.id !== window.devToolsExtensionID) {
3+
callback(window.devToolsOptions);
4+
return;
5+
}
6+
27
chrome.storage.sync.get({
38
limit: 50,
49
timeout: 1,

0 commit comments

Comments
 (0)