| OLD | NEW |
| 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 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); | 5 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); |
| 6 var json = require('json'); |
| 6 var lastError = require('lastError'); | 7 var lastError = require('lastError'); |
| 7 var natives = requireNative('sendRequest'); | 8 var natives = requireNative('sendRequest'); |
| 8 var validate = require('schemaUtils').validate; | 9 var validate = require('schemaUtils').validate; |
| 9 | 10 |
| 10 // Callback handling. | 11 // Callback handling. |
| 11 var requests = []; | 12 var requests = []; |
| 12 chromeHidden.handleResponse = function(requestId, name, | 13 chromeHidden.handleResponse = function(requestId, name, |
| 13 success, responseList, error) { | 14 success, responseList, error) { |
| 14 try { | 15 try { |
| 15 var request = requests[requestId]; | 16 var request = requests[requestId]; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 // - forIOThread: true if this function should be handled on the browser IO | 87 // - forIOThread: true if this function should be handled on the browser IO |
| 87 // thread. | 88 // thread. |
| 88 // - preserveNullInObjects: true if it is safe for null to be in objects. | 89 // - preserveNullInObjects: true if it is safe for null to be in objects. |
| 89 function sendRequest(functionName, args, argSchemas, optArgs) { | 90 function sendRequest(functionName, args, argSchemas, optArgs) { |
| 90 if (!optArgs) | 91 if (!optArgs) |
| 91 optArgs = {}; | 92 optArgs = {}; |
| 92 var request = prepareRequest(args, argSchemas); | 93 var request = prepareRequest(args, argSchemas); |
| 93 if (optArgs.customCallback) { | 94 if (optArgs.customCallback) { |
| 94 request.customCallback = optArgs.customCallback; | 95 request.customCallback = optArgs.customCallback; |
| 95 } | 96 } |
| 96 // JSON.stringify doesn't support a root object which is undefined. | 97 // json.stringify doesn't support a root object which is undefined. |
| 97 if (request.args === undefined) | 98 if (request.args === undefined) |
| 98 request.args = null; | 99 request.args = null; |
| 99 | 100 |
| 100 // TODO(asargent) - convert all optional native functions to accept raw | 101 // TODO(asargent) - convert all optional native functions to accept raw |
| 101 // v8 values instead of expecting JSON strings. | 102 // v8 values instead of expecting JSON strings. |
| 102 var doStringify = false; | 103 var doStringify = false; |
| 103 if (optArgs.nativeFunction && !optArgs.noStringify) | 104 if (optArgs.nativeFunction && !optArgs.noStringify) |
| 104 doStringify = true; | 105 doStringify = true; |
| 105 var requestArgs = doStringify ? | 106 var requestArgs = doStringify ? json.stringify(request.args) : request.args; |
| 106 chromeHidden.JSON.stringify(request.args) : request.args; | |
| 107 var nativeFunction = optArgs.nativeFunction || natives.StartRequest; | 107 var nativeFunction = optArgs.nativeFunction || natives.StartRequest; |
| 108 | 108 |
| 109 var requestId = natives.GetNextRequestId(); | 109 var requestId = natives.GetNextRequestId(); |
| 110 request.id = requestId; | 110 request.id = requestId; |
| 111 requests[requestId] = request; | 111 requests[requestId] = request; |
| 112 var hasCallback = request.callback || optArgs.customCallback; | 112 var hasCallback = request.callback || optArgs.customCallback; |
| 113 return nativeFunction(functionName, | 113 return nativeFunction(functionName, |
| 114 requestArgs, | 114 requestArgs, |
| 115 requestId, | 115 requestId, |
| 116 hasCallback, | 116 hasCallback, |
| 117 optArgs.forIOThread, | 117 optArgs.forIOThread, |
| 118 optArgs.preserveNullInObjects); | 118 optArgs.preserveNullInObjects); |
| 119 } | 119 } |
| 120 | 120 |
| 121 exports.sendRequest = sendRequest; | 121 exports.sendRequest = sendRequest; |
| OLD | NEW |