summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/resources/extensions/file_browser_handler_custom_bindings.js
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer/resources/extensions/file_browser_handler_custom_bindings.js')
-rw-r--r--chrome/renderer/resources/extensions/file_browser_handler_custom_bindings.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/chrome/renderer/resources/extensions/file_browser_handler_custom_bindings.js b/chrome/renderer/resources/extensions/file_browser_handler_custom_bindings.js
index 44d1539..4ce96be 100644
--- a/chrome/renderer/resources/extensions/file_browser_handler_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/file_browser_handler_custom_bindings.js
@@ -22,3 +22,26 @@ chromeHidden.Event.registerArgumentMassager('fileBrowserHandler.onExecute',
for (var i = 0; i < fileList.length; i++)
fileList[i] = GetExternalFileEntry(fileList[i]);
});
+
+chromeHidden.registerCustomHook('fileBrowserHandler', function(bindingsAPI) {
+ var apiFunctions = bindingsAPI.apiFunctions;
+
+ apiFunctions.setHandleRequest('selectFile',
+ function(selectionParams, callback) {
+ function internalCallback(externalCallback, internalResult) {
+ if (!externalCallback)
+ return;
+ var result = undefined;
+ if (internalResult) {
+ result = { success: internalResult.success, entry: null };
+ if (internalResult.success)
+ result.entry = GetExternalFileEntry(internalResult.entry);
+ }
+
+ externalCallback(result);
+ }
+
+ return chromeHidden.internalAPIs.fileBrowserHandlerInternal.selectFile(
+ selectionParams, internalCallback.bind(null, callback));
+ });
+});