OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // This script contains privileged chrome extension related javascript APIs. | 5 // This script contains privileged chrome extension related javascript APIs. |
6 // It is loaded by pages whose URL has the chrome-extension protocol. | 6 // It is loaded by pages whose URL has the chrome-extension protocol. |
7 | 7 |
8 var chrome = chrome || {}; | 8 var chrome = chrome || {}; |
9 (function() { | 9 (function() { |
10 native function GetExtensionAPIDefinition(); | 10 native function GetExtensionAPIDefinition(); |
11 native function StartRequest(); | 11 native function StartRequest(); |
12 native function GetChromeHidden(); | 12 native function GetChromeHidden(); |
13 native function GetNextRequestId(); | 13 native function GetNextRequestId(); |
14 native function Print(); | 14 native function Print(); |
15 | 15 |
16 native function GetCurrentPageActions(extensionId); | 16 native function GetCurrentPageActions(extensionId); |
17 native function GetExtensionViews(); | 17 native function GetExtensionViews(); |
18 native function GetNextContextMenuId(); | 18 native function GetNextContextMenuId(); |
19 native function GetNextTtsEventId(); | 19 native function GetNextTtsEventId(); |
20 native function OpenChannelToTab(); | 20 native function OpenChannelToTab(); |
21 native function GetRenderViewId(); | 21 native function GetRenderViewId(); |
22 native function SetIconCommon(); | 22 native function SetIconCommon(); |
23 native function GetUniqueSubEventName(eventName); | 23 native function GetUniqueSubEventName(eventName); |
24 native function GetLocalFileSystem(name, path); | 24 native function GetLocalFileSystem(name, path); |
25 native function DecodeJPEG(jpegImage); | 25 native function DecodeJPEG(jpegImage); |
26 native function CreateBlob(filePath); | 26 native function CreateBlob(filePath); |
| 27 native function SendResponseAck(requestId); |
27 | 28 |
28 var chromeHidden = GetChromeHidden(); | 29 var chromeHidden = GetChromeHidden(); |
29 | 30 |
30 if (!chrome) | 31 if (!chrome) |
31 chrome = {}; | 32 chrome = {}; |
32 | 33 |
33 function forEach(dict, f) { | 34 function forEach(dict, f) { |
34 for (key in dict) { | 35 for (key in dict) { |
35 if (dict.hasOwnProperty(key)) | 36 if (dict.hasOwnProperty(key)) |
36 f(key, dict[key]); | 37 f(key, dict[key]); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 } | 172 } |
172 // JSON.stringify doesn't support a root object which is undefined. | 173 // JSON.stringify doesn't support a root object which is undefined. |
173 if (request.args === undefined) | 174 if (request.args === undefined) |
174 request.args = null; | 175 request.args = null; |
175 | 176 |
176 var sargs = opt_args.noStringify ? | 177 var sargs = opt_args.noStringify ? |
177 request.args : chromeHidden.JSON.stringify(request.args); | 178 request.args : chromeHidden.JSON.stringify(request.args); |
178 var nativeFunction = opt_args.nativeFunction || StartRequest; | 179 var nativeFunction = opt_args.nativeFunction || StartRequest; |
179 | 180 |
180 var requestId = GetNextRequestId(); | 181 var requestId = GetNextRequestId(); |
| 182 request.id = requestId; |
181 requests[requestId] = request; | 183 requests[requestId] = request; |
182 var hasCallback = | 184 var hasCallback = |
183 (request.callback || opt_args.customCallback) ? true : false; | 185 (request.callback || opt_args.customCallback) ? true : false; |
184 return nativeFunction(functionName, sargs, requestId, hasCallback, | 186 return nativeFunction(functionName, sargs, requestId, hasCallback, |
185 opt_args.forIOThread); | 187 opt_args.forIOThread); |
186 } | 188 } |
187 | 189 |
188 // --- Setup additional api's not currently handled in common/extensions/api | 190 // --- Setup additional api's not currently handled in common/extensions/api |
189 | 191 |
190 // WebRequestEvent object. This is used for special webRequest events with | 192 // WebRequestEvent object. This is used for special webRequest events with |
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
788 }; | 790 }; |
789 | 791 |
790 apiFunctions["experimental.savePage.saveAsMHTML"].customCallback = | 792 apiFunctions["experimental.savePage.saveAsMHTML"].customCallback = |
791 function(name, request, response) { | 793 function(name, request, response) { |
792 var params = chromeHidden.JSON.parse(response); | 794 var params = chromeHidden.JSON.parse(response); |
793 var path = params.mhtmlFilePath; | 795 var path = params.mhtmlFilePath; |
794 var size = params.mhtmlFileLength; | 796 var size = params.mhtmlFileLength; |
795 | 797 |
796 if (request.callback) | 798 if (request.callback) |
797 request.callback(CreateBlob(path, size)); | 799 request.callback(CreateBlob(path, size)); |
| 800 request.callback = null; |
798 | 801 |
799 request.callback = null; | 802 // Notify the browser. Now that the blob is referenced from JavaScript, |
| 803 // the browser can drop its reference to it. |
| 804 SendResponseAck(request.id); |
800 }; | 805 }; |
801 | 806 |
802 apiFunctions["fileBrowserPrivate.requestLocalFileSystem"].customCallback = | 807 apiFunctions["fileBrowserPrivate.requestLocalFileSystem"].customCallback = |
803 function(name, request, response) { | 808 function(name, request, response) { |
804 var resp = response ? [chromeHidden.JSON.parse(response)] : []; | 809 var resp = response ? [chromeHidden.JSON.parse(response)] : []; |
805 var fs = null; | 810 var fs = null; |
806 if (!resp[0].error) | 811 if (!resp[0].error) |
807 fs = GetLocalFileSystem(resp[0].name, resp[0].path); | 812 fs = GetLocalFileSystem(resp[0].name, resp[0].path); |
808 if (request.callback) | 813 if (request.callback) |
809 request.callback(fs); | 814 request.callback(fs); |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1078 | 1083 |
1079 if (!chrome.tts) | 1084 if (!chrome.tts) |
1080 chrome.tts = {}; | 1085 chrome.tts = {}; |
1081 | 1086 |
1082 if (!chrome.ttsEngine) | 1087 if (!chrome.ttsEngine) |
1083 chrome.ttsEngine = {}; | 1088 chrome.ttsEngine = {}; |
1084 | 1089 |
1085 if (!chrome.experimental.downloads) | 1090 if (!chrome.experimental.downloads) |
1086 chrome.experimental.downloads = {}; | 1091 chrome.experimental.downloads = {}; |
1087 })(); | 1092 })(); |
OLD | NEW |