Index: chrome/renderer/resources/extensions/app_runtime_custom_bindings.js |
diff --git a/chrome/renderer/resources/extensions/app_runtime_custom_bindings.js b/chrome/renderer/resources/extensions/app_runtime_custom_bindings.js |
index d17d2e55fa76c8696fe26e0b90475b1af60ca3d9..0f3a0f784daa5cc6874c6d2ae5c3b2a72a5fb9d7 100644 |
--- a/chrome/renderer/resources/extensions/app_runtime_custom_bindings.js |
+++ b/chrome/renderer/resources/extensions/app_runtime_custom_bindings.js |
@@ -15,6 +15,38 @@ var appNatives = requireNative('app_runtime'); |
var DeserializeString = appNatives.DeserializeString; |
var SerializeToString = appNatives.SerializeToString; |
var CreateBlob = appNatives.CreateBlob; |
+var entryIdManager = require('entryIdManager'); |
+ |
+chromeHidden.Event.registerArgumentMassager('app.runtime.onRestarted', |
+ function(args, dispatch) { |
+ // These file entries don't get dispatched, we just use this hook to register |
+ // them all with entryIdManager. |
+ var fileEntries = args[0]; |
+ |
+ var pendingCallbacks = fileEntries.length; |
+ |
+ var dispatchIfNoPendingCallbacks = function() { |
+ if (pendingCallbacks == 0) |
+ dispatch([]); |
+ }; |
+ |
+ for (var i = 0; i < fileEntries.length; i++) { |
+ var fe = fileEntries[i]; |
+ var fs = GetIsolatedFileSystem(fe.fileSystemId); |
+ (function(fe, fs) { |
+ fs.root.getFile(fe.baseName, {}, function(fileEntry) { |
+ entryIdManager.registerEntry(fe.id, fileEntry); |
+ pendingCallbacks--; |
+ dispatchIfNoPendingCallbacks(); |
+ }, function(err) { |
+ console.error('Error getting fileEntry, code: ' + err.code); |
+ pendingCallbacks--; |
+ dispatchIfNoPendingCallbacks(); |
+ }); |
+ })(fe, fs); |
+ } |
+ dispatchIfNoPendingCallbacks(); |
+}); |
chromeHidden.Event.registerArgumentMassager('app.runtime.onLaunched', |
function(args, dispatch) { |