OLD | NEW |
1 var chromium; | 1 var chromium; |
2 (function() { | 2 (function() { |
3 if (!chromium) | 3 if (!chromium) |
4 chromium = {}; | 4 chromium = {}; |
5 | 5 |
6 // callback handling | 6 // callback handling |
7 var callbacks = []; | 7 var callbacks = []; |
8 chromium._dispatchCallback = function(callbackId, str) { | 8 chromium._dispatchCallback = function(callbackId, str) { |
9 callbacks[callbackId](goog.json.parse(str)); | 9 try { |
10 delete callbacks[callbackId]; | 10 if (str) { |
| 11 callbacks[callbackId](goog.json.parse(str)); |
| 12 } else { |
| 13 callbacks[callbackId](); |
| 14 } |
| 15 } finally { |
| 16 delete callbacks[callbackId]; |
| 17 } |
11 }; | 18 }; |
12 | 19 |
13 // Send an API request and optionally register a callback. | 20 // Send an API request and optionally register a callback. |
14 function sendRequest(request, args, callback) { | 21 function sendRequest(request, args, callback) { |
15 var sargs = goog.json.serialize(args); | 22 var sargs = goog.json.serialize(args); |
16 var callbackId = -1; | 23 var callbackId = -1; |
17 if (callback) { | 24 if (callback) { |
18 native function GetNextCallbackId(); | 25 native function GetNextCallbackId(); |
19 callbackId = GetNextCallbackId(); | 26 callbackId = GetNextCallbackId(); |
20 callbacks[callbackId] = callback; | 27 callbacks[callbackId] = callback; |
21 } | 28 } |
22 request(sargs, callbackId); | 29 request(sargs, callbackId); |
23 } | 30 } |
24 | 31 |
25 // Tabs | 32 // Tabs |
26 chromium.tabs = {}; | 33 chromium.tabs = {}; |
27 // TODO(aa): This should eventually take an optional windowId param. | 34 // TODO(aa): This should eventually take an optional windowId param. |
28 chromium.tabs.getTabsForWindow = function(callback) { | 35 chromium.tabs.getTabsForWindow = function(callback) { |
29 native function GetTabsForWindow(); | 36 native function GetTabsForWindow(); |
30 sendRequest(GetTabsForWindow, null, callback); | 37 sendRequest(GetTabsForWindow, null, callback); |
31 }; | 38 }; |
| 39 chromium.tabs.getTab = function(tabId, callback) { |
| 40 native function GetTab(); |
| 41 sendRequest(GetTab, tabId, callback); |
| 42 }; |
32 chromium.tabs.createTab = function(tab, callback) { | 43 chromium.tabs.createTab = function(tab, callback) { |
33 native function CreateTab(); | 44 native function CreateTab(); |
34 sendRequest(CreateTab, tab, callback); | 45 sendRequest(CreateTab, tab, callback); |
35 }; | 46 }; |
| 47 chromium.tabs.updateTab = function(tab) { |
| 48 native function UpdateTab(); |
| 49 sendRequest(UpdateTab, tab); |
| 50 }; |
| 51 chromium.tabs.removeTab = function(tabId) { |
| 52 native function RemoveTab(); |
| 53 sendRequest(RemoveTab, tabId); |
| 54 }; |
36 })(); | 55 })(); |
OLD | NEW |