Browse Source

Fix chrome.devtools not available in devtools extensions

Cheng Zhao 9 years ago
parent
commit
d6f9e57e33
1 changed files with 15 additions and 0 deletions
  1. 15 0
      lib/renderer/inspector.js

+ 15 - 0
lib/renderer/inspector.js

@@ -1,4 +1,7 @@
 window.onload = function () {
+  // Make sure |window.chrome| is defined for devtools extensions.
+  hijackSetInjectedScript(InspectorFrontendHost)
+
   // Use menu API to show context menu.
   window.InspectorFrontendHost.showContextMenuAtPoint = createMenu
 
@@ -6,6 +9,18 @@ window.onload = function () {
   window.WebInspector.createFileSelectorElement = createFileSelectorElement
 }
 
+const hijackSetInjectedScript = function (InspectorFrontendHost) {
+  const {setInjectedScriptForOrigin} = InspectorFrontendHost
+  InspectorFrontendHost.setInjectedScriptForOrigin = function (origin, source) {
+    const wrapped = `(function (...args) {
+      window.chrome = {}
+      const original = ${source}
+      original(...args)
+    })`
+    setInjectedScriptForOrigin(origin, wrapped)
+  }
+}
+
 var convertToMenuTemplate = function (items) {
   var fn, i, item, len, template
   template = []