Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(348)

Unified Diff: extensions/renderer/resources/runtime_custom_bindings.js

Issue 2895493004: [Extensions Bindings] Move directory util out of runtime_custom_bindings (Closed)
Patch Set: . Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 00a86a2239cfca7ce35bfcc08e963575b35cc79e..cafd658936762243caf8aad1667ee16ac30731ee 100644
--- a/extensions/renderer/resources/runtime_custom_bindings.js
+++ b/extensions/renderer/resources/runtime_custom_bindings.js
@@ -11,81 +11,8 @@ var runtimeNatives = requireNative('runtime');
var messagingNatives = requireNative('messaging_natives');
var process = requireNative('process');
var utils = require('utils');
-
-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' ||
- contextType == 'UNBLESSED_EXTENSION') {
- var manifest = runtimeNatives.GetManifest();
- if (manifest.app && manifest.app.background) {
- // Get the background page if one exists. Otherwise, default to the current
- // window.
- backgroundPage = runtimeNatives.GetExtensionViews(-1, -1, 'BACKGROUND')[0];
- if (backgroundPage) {
- var GetModuleSystem = requireNative('v8_context').GetModuleSystem;
- backgroundRequire = GetModuleSystem(backgroundPage).require;
- } else {
- backgroundPage = WINDOW;
- }
- }
-}
-
-// For packaged apps, all windows use the bindFileEntryCallback from the
-// 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) {
- var lastError = require('lastError');
- var fileSystemNatives = requireNative('file_system_natives');
- var GetIsolatedFileSystem = fileSystemNatives.GetIsolatedFileSystem;
- var bindDirectoryEntryCallback = function(functionName, apiFunctions) {
- apiFunctions.setCustomCallback(functionName,
- function(name, request, callback, response) {
- if (callback) {
- if (!response) {
- callback();
- return;
- }
- var fileSystemId = response.fileSystemId;
- var baseName = response.baseName;
- var fs = GetIsolatedFileSystem(fileSystemId);
-
- try {
- fs.root.getDirectory(baseName, {}, callback, function(fileError) {
- lastError.run('runtime.' + functionName,
- 'Error getting Entry, code: ' + fileError.code,
- request.stack,
- callback);
- });
- } catch (e) {
- lastError.run('runtime.' + functionName,
- 'Error: ' + e.stack,
- request.stack,
- callback);
- }
- }
- });
- };
-} else {
- // Force the runtime API to be loaded in the background page. Using
- // backgroundPageModuleSystem.require('runtime') is insufficient as
- // requireNative is only allowed while lazily loading an API.
- backgroundPage.chrome.runtime;
- var bindDirectoryEntryCallback =
- backgroundRequire('runtime').bindDirectoryEntryCallback;
-}
+var getBindDirectoryEntryCallback =
+ require('fileEntryBindingUtil').getBindDirectoryEntryCallback;
binding.registerCustomHook(function(binding, id, contextType) {
var apiFunctions = binding.apiFunctions;
@@ -184,9 +111,9 @@ binding.registerCustomHook(function(binding, id, contextType) {
}
});
- bindDirectoryEntryCallback('getPackageDirectoryEntry', apiFunctions);
+ apiFunctions.setCustomCallback('getPackageDirectoryEntry',
+ getBindDirectoryEntryCallback());
});
-exports.$set('bindDirectoryEntryCallback', bindDirectoryEntryCallback);
if (!apiBridge)
exports.$set('binding', binding.generate());
« extensions/renderer/dispatcher.cc ('K') | « extensions/renderer/resources/file_entry_binding_util.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698