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

Side by Side Diff: chrome/renderer/resources/extensions/file_system_custom_bindings.js

Issue 2794043002: [Extensions Bindings] Move safeCallbackApply to exception handler (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Custom binding for the fileSystem API. 5 // Custom binding for the fileSystem API.
6 6
7 var binding = require('binding').Binding.create('fileSystem'); 7 var binding = require('binding').Binding.create('fileSystem');
8 var sendRequest = require('sendRequest'); 8 var sendRequest = require('sendRequest');
9 9
10 var getFileBindingsForApi = 10 var getFileBindingsForApi =
11 require('fileEntryBindingUtil').getFileBindingsForApi; 11 require('fileEntryBindingUtil').getFileBindingsForApi;
12 var fileBindings = getFileBindingsForApi('fileSystem'); 12 var fileBindings = getFileBindingsForApi('fileSystem');
13 var bindFileEntryCallback = fileBindings.bindFileEntryCallback; 13 var bindFileEntryCallback = fileBindings.bindFileEntryCallback;
14 var entryIdManager = fileBindings.entryIdManager; 14 var entryIdManager = fileBindings.entryIdManager;
15 var fileSystemNatives = requireNative('file_system_natives'); 15 var fileSystemNatives = requireNative('file_system_natives');
16 var safeCallbackApply = require('uncaught_exception_handler').safeCallbackApply;
16 17
17 binding.registerCustomHook(function(bindingsAPI) { 18 binding.registerCustomHook(function(bindingsAPI) {
18 var apiFunctions = bindingsAPI.apiFunctions; 19 var apiFunctions = bindingsAPI.apiFunctions;
19 var fileSystem = bindingsAPI.compiledApi; 20 var fileSystem = bindingsAPI.compiledApi;
20 21
21 function bindFileEntryFunction(functionName) { 22 function bindFileEntryFunction(functionName) {
22 apiFunctions.setUpdateArgumentsPostValidate( 23 apiFunctions.setUpdateArgumentsPostValidate(
23 functionName, function(fileEntry, callback) { 24 functionName, function(fileEntry, callback) {
24 var fileSystemName = fileEntry.filesystem.name; 25 var fileSystemName = fileEntry.filesystem.name;
25 var relativePath = $String.slice(fileEntry.fullPath, 1); 26 var relativePath = $String.slice(fileEntry.fullPath, 1);
(...skipping 17 matching lines...) Expand all
43 44
44 sendRequest.sendRequest(this.name, [id, fileSystemName, relativePath], 45 sendRequest.sendRequest(this.name, [id, fileSystemName, relativePath],
45 this.definition.parameters); 46 this.definition.parameters);
46 return id; 47 return id;
47 }); 48 });
48 49
49 apiFunctions.setHandleRequest('isRestorable', 50 apiFunctions.setHandleRequest('isRestorable',
50 function(id, callback) { 51 function(id, callback) {
51 var savedEntry = entryIdManager.getEntryById(id); 52 var savedEntry = entryIdManager.getEntryById(id);
52 if (savedEntry) { 53 if (savedEntry) {
53 sendRequest.safeCallbackApply( 54 safeCallbackApply('fileSystem.isRestorable', {}, callback, [true]);
54 'fileSystem.isRestorable',
55 {},
56 callback,
57 [true]);
58 } else { 55 } else {
59 sendRequest.sendRequest( 56 sendRequest.sendRequest(
60 this.name, [id, callback], this.definition.parameters); 57 this.name, [id, callback], this.definition.parameters);
61 } 58 }
62 }); 59 });
63 60
64 apiFunctions.setUpdateArgumentsPostValidate('restoreEntry', 61 apiFunctions.setUpdateArgumentsPostValidate('restoreEntry',
65 function(id, callback) { 62 function(id, callback) {
66 var savedEntry = entryIdManager.getEntryById(id); 63 var savedEntry = entryIdManager.getEntryById(id);
67 if (savedEntry) { 64 if (savedEntry) {
68 // We already have a file entry for this id so pass it to the callback and 65 // We already have a file entry for this id so pass it to the callback and
69 // send a request to the browser to move it to the back of the LRU. 66 // send a request to the browser to move it to the back of the LRU.
70 sendRequest.safeCallbackApply( 67 safeCallbackApply('fileSystem.restoreEntry', {}, callback, [savedEntry]);
71 'fileSystem.restoreEntry',
72 {},
73 callback,
74 [savedEntry]);
75 return [id, false, null]; 68 return [id, false, null];
76 } else { 69 } else {
77 // Ask the browser process for a new file entry for this id, to be passed 70 // Ask the browser process for a new file entry for this id, to be passed
78 // to |callback|. 71 // to |callback|.
79 return [id, true, callback]; 72 return [id, true, callback];
80 } 73 }
81 }); 74 });
82 75
83 apiFunctions.setCustomCallback('requestFileSystem', 76 apiFunctions.setCustomCallback('requestFileSystem',
84 function(name, request, callback, response) { 77 function(name, request, callback, response) {
85 var fileSystem; 78 var fileSystem;
86 if (response && response.file_system_id) { 79 if (response && response.file_system_id) {
87 fileSystem = fileSystemNatives.GetIsolatedFileSystem( 80 fileSystem = fileSystemNatives.GetIsolatedFileSystem(
88 response.file_system_id, response.file_system_path); 81 response.file_system_id, response.file_system_path);
89 } 82 }
90 sendRequest.safeCallbackApply( 83 safeCallbackApply('fileSystem.requestFileSystem', request, callback,
91 'fileSystem.requestFileSystem', 84 [fileSystem]);
92 request,
93 callback,
94 [fileSystem]);
95 }); 85 });
96 86
97 // TODO(benwells): Remove these deprecated versions of the functions. 87 // TODO(benwells): Remove these deprecated versions of the functions.
98 fileSystem.getWritableFileEntry = function() { 88 fileSystem.getWritableFileEntry = function() {
99 console.log("chrome.fileSystem.getWritableFileEntry is deprecated"); 89 console.log("chrome.fileSystem.getWritableFileEntry is deprecated");
100 console.log("Please use chrome.fileSystem.getWritableEntry instead"); 90 console.log("Please use chrome.fileSystem.getWritableEntry instead");
101 $Function.apply(fileSystem.getWritableEntry, this, arguments); 91 $Function.apply(fileSystem.getWritableEntry, this, arguments);
102 }; 92 };
103 93
104 fileSystem.isWritableFileEntry = function() { 94 fileSystem.isWritableFileEntry = function() {
105 console.log("chrome.fileSystem.isWritableFileEntry is deprecated"); 95 console.log("chrome.fileSystem.isWritableFileEntry is deprecated");
106 console.log("Please use chrome.fileSystem.isWritableEntry instead"); 96 console.log("Please use chrome.fileSystem.isWritableEntry instead");
107 $Function.apply(fileSystem.isWritableEntry, this, arguments); 97 $Function.apply(fileSystem.isWritableEntry, this, arguments);
108 }; 98 };
109 99
110 fileSystem.chooseFile = function() { 100 fileSystem.chooseFile = function() {
111 console.log("chrome.fileSystem.chooseFile is deprecated"); 101 console.log("chrome.fileSystem.chooseFile is deprecated");
112 console.log("Please use chrome.fileSystem.chooseEntry instead"); 102 console.log("Please use chrome.fileSystem.chooseEntry instead");
113 $Function.apply(fileSystem.chooseEntry, this, arguments); 103 $Function.apply(fileSystem.chooseEntry, this, arguments);
114 }; 104 };
115 }); 105 });
116 106
117 exports.$set('bindFileEntryCallback', bindFileEntryCallback); 107 exports.$set('bindFileEntryCallback', bindFileEntryCallback);
118 exports.$set('binding', binding.generate()); 108 exports.$set('binding', binding.generate());
OLDNEW
« no previous file with comments | « chrome/renderer/resources/extensions/file_entry_binding_util.js ('k') | extensions/renderer/resources/binding.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698