Index: chrome/renderer/resources/extensions/send_request.js |
diff --git a/chrome/renderer/resources/extensions/send_request.js b/chrome/renderer/resources/extensions/send_request.js |
deleted file mode 100644 |
index 808c6cd8e6d7dd5aa93ef0b521698e3f74c70ff6..0000000000000000000000000000000000000000 |
--- a/chrome/renderer/resources/extensions/send_request.js |
+++ /dev/null |
@@ -1,178 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-var handleUncaughtException = require('uncaught_exception_handler').handle; |
-var lastError = require('lastError'); |
-var logging = requireNative('logging'); |
-var natives = requireNative('sendRequest'); |
-var processNatives = requireNative('process'); |
-var validate = require('schemaUtils').validate; |
- |
-// All outstanding requests from sendRequest(). |
-var requests = {}; |
- |
-// Used to prevent double Activity Logging for API calls that use both custom |
-// bindings and ExtensionFunctions (via sendRequest). |
-var calledSendRequest = false; |
- |
-// Runs a user-supplied callback safely. |
-function safeCallbackApply(name, request, callback, args) { |
- try { |
- $Function.apply(callback, request, args); |
- } catch (e) { |
- var errorMessage = "Error in response to " + name + ": " + e; |
- if (request.stack && request.stack != '') |
- errorMessage += "\n" + request.stack; |
- handleUncaughtException(errorMessage, e); |
- } |
-} |
- |
-// Callback handling. |
-function handleResponse(requestId, name, success, responseList, error) { |
- // The chrome objects we will set lastError on. Really we should only be |
- // setting this on the callback's chrome object, but set on ours too since |
- // it's conceivable that something relies on that. |
- var callerChrome = chrome; |
- |
- try { |
- var request = requests[requestId]; |
- logging.DCHECK(request != null); |
- |
- // lastError needs to be set on the caller's chrome object no matter what, |
- // though chances are it's the same as ours (it will be different when |
- // calling API methods on other contexts). |
- if (request.callback) |
- callerChrome = natives.GetGlobal(request.callback).chrome; |
- |
- lastError.clear(chrome); |
- if (callerChrome !== chrome) |
- lastError.clear(callerChrome); |
- |
- if (!success) { |
- if (!error) |
- error = "Unknown error."; |
- lastError.set(name, error, request.stack, chrome); |
- if (callerChrome !== chrome) |
- lastError.set(name, error, request.stack, callerChrome); |
- } |
- |
- if (request.customCallback) { |
- safeCallbackApply(name, |
- request, |
- request.customCallback, |
- $Array.concat([name, request], responseList)); |
- } |
- |
- if (request.callback) { |
- // Validate callback in debug only -- and only when the |
- // caller has provided a callback. Implementations of api |
- // calls may not return data if they observe the caller |
- // has not provided a callback. |
- if (logging.DCHECK_IS_ON() && !error) { |
- if (!request.callbackSchema.parameters) |
- throw new Error(name + ": no callback schema defined"); |
- validate(responseList, request.callbackSchema.parameters); |
- } |
- safeCallbackApply(name, request, request.callback, responseList); |
- } |
- |
- if (error && |
- !lastError.hasAccessed(chrome) && |
- !lastError.hasAccessed(callerChrome)) { |
- // The native call caused an error, but the developer didn't check |
- // runtime.lastError. |
- // Notify the developer of the error via the (error) console. |
- console.error("Unchecked runtime.lastError while running " + |
- (name || "unknown") + ": " + error + |
- (request.stack ? "\n" + request.stack : "")); |
- } |
- } finally { |
- delete requests[requestId]; |
- lastError.clear(chrome); |
- if (callerChrome !== chrome) |
- lastError.clear(callerChrome); |
- } |
-}; |
- |
-function getExtensionStackTrace(call_name) { |
- var stack = $String.split(new Error().stack, '\n'); |
- var id = processNatives.GetExtensionId(); |
- |
- // Remove stack frames before and after that weren't associated with the |
- // extension. |
- return $Array.join(stack.filter(function(line) { |
- return line.indexOf(id) != -1; |
- }), '\n'); |
-} |
- |
-function prepareRequest(args, argSchemas) { |
- var request = {}; |
- var argCount = args.length; |
- |
- // Look for callback param. |
- if (argSchemas.length > 0 && |
- argSchemas[argSchemas.length - 1].type == "function") { |
- request.callback = args[args.length - 1]; |
- request.callbackSchema = argSchemas[argSchemas.length - 1]; |
- --argCount; |
- } |
- |
- request.args = []; |
- for (var k = 0; k < argCount; k++) { |
- request.args[k] = args[k]; |
- } |
- |
- return request; |
-} |
- |
-// Send an API request and optionally register a callback. |
-// |optArgs| is an object with optional parameters as follows: |
-// - customCallback: a callback that should be called instead of the standard |
-// callback. |
-// - nativeFunction: the v8 native function to handle the request, or |
-// StartRequest if missing. |
-// - forIOThread: true if this function should be handled on the browser IO |
-// thread. |
-// - preserveNullInObjects: true if it is safe for null to be in objects. |
-function sendRequest(functionName, args, argSchemas, optArgs) { |
- calledSendRequest = true; |
- if (!optArgs) |
- optArgs = {}; |
- var request = prepareRequest(args, argSchemas); |
- request.stack = getExtensionStackTrace(); |
- if (optArgs.customCallback) { |
- request.customCallback = optArgs.customCallback; |
- } |
- |
- var nativeFunction = optArgs.nativeFunction || natives.StartRequest; |
- |
- var requestId = natives.GetNextRequestId(); |
- request.id = requestId; |
- requests[requestId] = request; |
- |
- var hasCallback = request.callback || optArgs.customCallback; |
- return nativeFunction(functionName, |
- request.args, |
- requestId, |
- hasCallback, |
- optArgs.forIOThread, |
- optArgs.preserveNullInObjects); |
-} |
- |
-function getCalledSendRequest() { |
- return calledSendRequest; |
-} |
- |
-function clearCalledSendRequest() { |
- calledSendRequest = false; |
-} |
- |
-exports.sendRequest = sendRequest; |
-exports.getCalledSendRequest = getCalledSendRequest; |
-exports.clearCalledSendRequest = clearCalledSendRequest; |
-exports.safeCallbackApply = safeCallbackApply; |
-exports.getExtensionStackTrace = getExtensionStackTrace; |
- |
-// Called by C++. |
-exports.handleResponse = handleResponse; |