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

Side by Side Diff: extensions/renderer/resources/extension_custom_bindings.js

Issue 2105033003: tabId support to chrome.extensions.getViews() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Minor followup to patch 5 Created 4 years, 5 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 // Custom binding for the extension API. 5 // Custom binding for the extension API.
6 6
7 var binding = require('binding').Binding.create('extension'); 7 var binding = require('binding').Binding.create('extension');
8 8
9 var messaging = require('messaging'); 9 var messaging = require('messaging');
10 var runtimeNatives = requireNative('runtime'); 10 var runtimeNatives = requireNative('runtime');
11 var GetExtensionViews = runtimeNatives.GetExtensionViews; 11 var GetExtensionViews = runtimeNatives.GetExtensionViews;
12 var chrome = requireNative('chrome').GetChrome(); 12 var chrome = requireNative('chrome').GetChrome();
13 13
14 var inIncognitoContext = requireNative('process').InIncognitoContext(); 14 var inIncognitoContext = requireNative('process').InIncognitoContext();
15 var sendRequestIsDisabled = requireNative('process').IsSendRequestDisabled(); 15 var sendRequestIsDisabled = requireNative('process').IsSendRequestDisabled();
16 var contextType = requireNative('process').GetContextType(); 16 var contextType = requireNative('process').GetContextType();
17 var manifestVersion = requireNative('process').GetManifestVersion(); 17 var manifestVersion = requireNative('process').GetManifestVersion();
18 18
19 // This should match chrome.windows.WINDOW_ID_NONE. 19 // This should match chrome.windows.WINDOW_ID_NONE.
20 // 20 //
21 // We can't use chrome.windows.WINDOW_ID_NONE directly because the 21 // We can't use chrome.windows.WINDOW_ID_NONE directly because the
22 // chrome.windows API won't exist unless this extension has permission for it; 22 // chrome.windows API won't exist unless this extension has permission for it;
23 // which may not be the case. 23 // which may not be the case.
24 var WINDOW_ID_NONE = -1; 24 var WINDOW_ID_NONE = -1;
25 var TAB_ID_NONE = -1;
25 26
26 binding.registerCustomHook(function(bindingsAPI, extensionId) { 27 binding.registerCustomHook(function(bindingsAPI, extensionId) {
27 var extension = bindingsAPI.compiledApi; 28 var extension = bindingsAPI.compiledApi;
28 if (manifestVersion < 2) { 29 if (manifestVersion < 2) {
29 chrome.self = extension; 30 chrome.self = extension;
30 extension.inIncognitoTab = inIncognitoContext; 31 extension.inIncognitoTab = inIncognitoContext;
31 } 32 }
32 extension.inIncognitoContext = inIncognitoContext; 33 extension.inIncognitoContext = inIncognitoContext;
33 34
34 var apiFunctions = bindingsAPI.apiFunctions; 35 var apiFunctions = bindingsAPI.apiFunctions;
35 36
36 apiFunctions.setHandleRequest('getViews', function(properties) { 37 apiFunctions.setHandleRequest('getViews', function(properties) {
37 var windowId = WINDOW_ID_NONE; 38 var windowId = WINDOW_ID_NONE;
39 var tabId = TAB_ID_NONE;
38 var type = 'ALL'; 40 var type = 'ALL';
39 if (properties) { 41 if (properties) {
40 if (properties.type != null) { 42 if (properties.type != null) {
41 type = properties.type; 43 type = properties.type;
42 } 44 }
43 if (properties.windowId != null) { 45 if (properties.windowId != null) {
44 windowId = properties.windowId; 46 windowId = properties.windowId;
45 } 47 }
48 if (properties.tabId != null) {
49 tabId = properties.tabId;
50 }
46 } 51 }
47 return GetExtensionViews(windowId, type); 52 return GetExtensionViews(windowId, tabId, type);
48 }); 53 });
49 54
50 apiFunctions.setHandleRequest('getBackgroundPage', function() { 55 apiFunctions.setHandleRequest('getBackgroundPage', function() {
51 return GetExtensionViews(-1, 'BACKGROUND')[0] || null; 56 return GetExtensionViews(-1, -1, 'BACKGROUND')[0] || null;
52 }); 57 });
53 58
54 apiFunctions.setHandleRequest('getExtensionTabs', function(windowId) { 59 apiFunctions.setHandleRequest('getExtensionTabs', function(windowId) {
55 if (windowId == null) 60 if (windowId == null)
56 windowId = WINDOW_ID_NONE; 61 windowId = WINDOW_ID_NONE;
57 return GetExtensionViews(windowId, 'TAB'); 62 return GetExtensionViews(windowId, -1, 'TAB');
58 }); 63 });
59 64
60 apiFunctions.setHandleRequest('getURL', function(path) { 65 apiFunctions.setHandleRequest('getURL', function(path) {
61 path = String(path); 66 path = String(path);
62 if (!path.length || path[0] != '/') 67 if (!path.length || path[0] != '/')
63 path = '/' + path; 68 path = '/' + path;
64 return 'chrome-extension://' + extensionId + path; 69 return 'chrome-extension://' + extensionId + path;
65 }); 70 });
66 71
67 // Alias several messaging deprecated APIs to their runtime counterparts. 72 // Alias several messaging deprecated APIs to their runtime counterparts.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 }; 107 };
103 if (contextType == 'BLESSED_EXTENSION') { 108 if (contextType == 'BLESSED_EXTENSION') {
104 extension.onRequestExternal.addListener = function() { 109 extension.onRequestExternal.addListener = function() {
105 throw new Error(sendRequestIsDisabled); 110 throw new Error(sendRequestIsDisabled);
106 }; 111 };
107 } 112 }
108 } 113 }
109 }); 114 });
110 115
111 exports.$set('binding', binding.generate()); 116 exports.$set('binding', binding.generate());
OLDNEW
« no previous file with comments | « extensions/renderer/resources/app_window_custom_bindings.js ('k') | extensions/renderer/resources/runtime_custom_bindings.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698