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

Side by Side Diff: extensions/renderer/resources/send_request.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 var exceptionHandler = require('uncaught_exception_handler'); 5 var exceptionHandler = require('uncaught_exception_handler');
6 var lastError = require('lastError'); 6 var lastError = require('lastError');
7 var logging = requireNative('logging'); 7 var logging = requireNative('logging');
8 var natives = requireNative('sendRequest'); 8 var natives = requireNative('sendRequest');
9 var validate = require('schemaUtils').validate; 9 var validate = require('schemaUtils').validate;
10 10
11 var safeCallbackApply = exceptionHandler.safeCallbackApply;
12
11 // All outstanding requests from sendRequest(). 13 // All outstanding requests from sendRequest().
12 var requests = { __proto__: null }; 14 var requests = { __proto__: null };
13 15
14 // Used to prevent double Activity Logging for API calls that use both custom 16 // Used to prevent double Activity Logging for API calls that use both custom
15 // bindings and ExtensionFunctions (via sendRequest). 17 // bindings and ExtensionFunctions (via sendRequest).
16 var calledSendRequest = false; 18 var calledSendRequest = false;
17 19
18 // Runs a user-supplied callback safely.
19 function safeCallbackApply(name, request, callback, args) {
20 try {
21 $Function.apply(callback, request, args);
22 } catch (e) {
23 exceptionHandler.handle('Error in response to ' + name, e, request.stack);
24 }
25 }
26
27 // Callback handling. 20 // Callback handling.
28 function handleResponse(requestId, name, success, responseList, error) { 21 function handleResponse(requestId, name, success, responseList, error) {
29 // The chrome objects we will set lastError on. Really we should only be 22 // The chrome objects we will set lastError on. Really we should only be
30 // setting this on the callback's chrome object, but set on ours too since 23 // setting this on the callback's chrome object, but set on ours too since
31 // it's conceivable that something relies on that. 24 // it's conceivable that something relies on that.
32 var callerChrome = chrome; 25 var callerChrome = chrome;
33 26
34 try { 27 try {
35 var request = requests[requestId]; 28 var request = requests[requestId];
36 logging.DCHECK(request != null); 29 logging.DCHECK(request != null);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 return calledSendRequest; 129 return calledSendRequest;
137 } 130 }
138 131
139 function clearCalledSendRequest() { 132 function clearCalledSendRequest() {
140 calledSendRequest = false; 133 calledSendRequest = false;
141 } 134 }
142 135
143 exports.$set('sendRequest', sendRequest); 136 exports.$set('sendRequest', sendRequest);
144 exports.$set('getCalledSendRequest', getCalledSendRequest); 137 exports.$set('getCalledSendRequest', getCalledSendRequest);
145 exports.$set('clearCalledSendRequest', clearCalledSendRequest); 138 exports.$set('clearCalledSendRequest', clearCalledSendRequest);
146 exports.$set('safeCallbackApply', safeCallbackApply);
147 139
148 // Called by C++. 140 // Called by C++.
149 exports.$set('handleResponse', handleResponse); 141 exports.$set('handleResponse', handleResponse);
OLDNEW
« no previous file with comments | « extensions/renderer/resources/binding.js ('k') | extensions/renderer/resources/uncaught_exception_handler.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698