Index: extensions/renderer/resources/runtime_custom_bindings.js |
diff --git a/extensions/renderer/resources/runtime_custom_bindings.js b/extensions/renderer/resources/runtime_custom_bindings.js |
index 1f829d4deb11abfe83933bb9fc0ec94881e267f1..0ab65d54b0448c7ee9cbef1d1b941b0f3bb2c8c2 100644 |
--- a/extensions/renderer/resources/runtime_custom_bindings.js |
+++ b/extensions/renderer/resources/runtime_custom_bindings.js |
@@ -11,7 +11,17 @@ var runtimeNatives = requireNative('runtime'); |
var process = requireNative('process'); |
var forEach = require('utils').forEach; |
-var backgroundPage = window; |
+var WINDOW = {}; |
+try { |
+ WINDOW = window; |
+} catch (e) { |
+ // Running in SW context. |
+ // TODO(lazyboy): Synchronous access to background page is not possible from |
+ // service worker context. Decide what we should do in this case for the class |
+ // of APIs that require access to background page or window object |
+} |
+ |
+var backgroundPage = WINDOW; |
var backgroundRequire = require; |
var contextType = process.GetContextType(); |
if (contextType == 'BLESSED_EXTENSION' || |
@@ -25,7 +35,7 @@ if (contextType == 'BLESSED_EXTENSION' || |
var GetModuleSystem = requireNative('v8_context').GetModuleSystem; |
backgroundRequire = GetModuleSystem(backgroundPage).require; |
} else { |
- backgroundPage = window; |
+ backgroundPage = WINDOW; |
} |
} |
} |
@@ -34,7 +44,7 @@ if (contextType == 'BLESSED_EXTENSION' || |
// background page so their FileEntry objects have the background page's context |
// as their own. This allows them to be used from other windows (including the |
// background page) after the original window is closed. |
-if (window == backgroundPage) { |
+if (WINDOW == backgroundPage) { |
var lastError = require('lastError'); |
var fileSystemNatives = requireNative('file_system_natives'); |
var GetIsolatedFileSystem = fileSystemNatives.GetIsolatedFileSystem; |