Chromium Code Reviews| Index: chrome/renderer/resources/extensions/file_system_custom_bindings.js |
| diff --git a/chrome/renderer/resources/extensions/file_system_custom_bindings.js b/chrome/renderer/resources/extensions/file_system_custom_bindings.js |
| index 8df8200cc51034addcba310805a3d66f62a24d51..1c0f184859ffe1e48fd36bedeb84f053c57e8e76 100644 |
| --- a/chrome/renderer/resources/extensions/file_system_custom_bindings.js |
| +++ b/chrome/renderer/resources/extensions/file_system_custom_bindings.js |
| @@ -10,6 +10,7 @@ var fileSystemNatives = requireNative('file_system_natives'); |
| var forEach = require('utils').forEach; |
| var GetIsolatedFileSystem = fileSystemNatives.GetIsolatedFileSystem; |
| var lastError = require('lastError'); |
| +var sendRequest = require('sendRequest').sendRequest; |
| var GetModuleSystem = requireNative('v8_context').GetModuleSystem; |
| // TODO(sammc): Don't require extension. See http://crbug.com/235689. |
| var GetExtensionViews = requireNative('extension').GetExtensionViews; |
| @@ -81,16 +82,42 @@ binding.registerCustomHook(function(bindingsAPI) { |
| forEach(['getDisplayPath', 'getWritableEntry', 'isWritableEntry'], |
| bindFileEntryFunction); |
| - forEach(['getWritableEntry', 'chooseEntry'], function(i, functionName) { |
| + forEach(['getWritableEntry', 'chooseEntry', 'restoreEntry'], |
| + function(i, functionName) { |
| bindFileEntryCallback(functionName, apiFunctions); |
| }); |
| - apiFunctions.setHandleRequest('getEntryId', function(fileEntry) { |
| - return entryIdManager.getEntryId(fileEntry); |
| + apiFunctions.setHandleRequest('retainEntry', function(fileEntry) { |
| + var id = entryIdManager.getEntryId(fileEntry); |
| + if (!id) |
| + return ''; |
| + var fileSystemName = fileEntry.filesystem.name; |
| + var relativePath = fileEntry.fullPath.slice(1); |
| + |
| + sendRequest(this.name, [id, fileSystemName, relativePath], |
| + this.definition.parameters, {}); |
| + return id; |
| + }); |
| + |
| + apiFunctions.setHandleRequest('isRestorable', |
| + function(id, callback) { |
| + var savedEntry = entryIdManager.getEntryById(id); |
| + if (savedEntry) { |
| + callback(true); |
| + } else { |
| + sendRequest(this.name, [id, callback], this.definition.parameters, {}); |
| + } |
| }); |
| - apiFunctions.setHandleRequest('getEntryById', function(id) { |
| - return entryIdManager.getEntryById(id); |
| + apiFunctions.setUpdateArgumentsPostValidate('restoreEntry', |
| + function(id, callback) { |
| + var savedEntry = entryIdManager.getEntryById(id); |
| + if (savedEntry) { |
| + callback(savedEntry); |
| + return [id, false, null]; |
|
koz (OOO until 15th September)
2013/05/23 07:32:22
A clarifying comment here would help de-mystify th
Sam McNally
2013/05/24 00:46:03
Done.
|
| + } else { |
| + return [id, true, callback]; |
| + } |
| }); |
| // TODO(benwells): Remove these deprecated versions of the functions. |