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

Side by Side Diff: chrome/renderer/resources/extensions/browser_action_custom_bindings.js

Issue 25305002: Implement initial chrome.browserAction.openPopup API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: please review Created 7 years, 2 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 (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 // Custom binding for the browserAction API. 5 // Custom binding for the browserAction API.
6 6
7 var binding = require('binding').Binding.create('browserAction'); 7 var binding = require('binding').Binding.create('browserAction');
8 8
9 var setIcon = require('setIcon').setIcon; 9 var setIcon = require('setIcon').setIcon;
10 var getExtensionViews = requireNative('extension').GetExtensionViews;
10 11
11 binding.registerCustomHook(function(bindingsAPI) { 12 binding.registerCustomHook(function(bindingsAPI) {
12 var apiFunctions = bindingsAPI.apiFunctions; 13 var apiFunctions = bindingsAPI.apiFunctions;
13 14
14 apiFunctions.setHandleRequest('setIcon', function(details, callback) { 15 apiFunctions.setHandleRequest('setIcon', function(details, callback) {
15 setIcon(details, callback, this.name, this.definition.parameters, 16 setIcon(details, callback, this.name, this.definition.parameters,
16 'browser action'); 17 'browser action');
17 }); 18 });
19
20 apiFunctions.setCustomCallback('openPopup',
21 function(name, request, response) {
22 if (response && request.callback) {
23 var callback = request.callback;
24 // TODO(justinlin): Figure out how to ensure the popup is already open
25 // before calling this.
Matt Perry 2013/10/11 22:22:53 The browser side will have to do that (add a notif
justinlin 2013/10/16 07:06:48 Done.
26 setTimeout(function() {
27 var views = getExtensionViews(-1, 'POPUP');
28 callback(views.length > 0 ? views[0] : null);
29 }, 50);
30 } else {
31 request.callback(null);
32 }
33 request.callback = null;
34 });
18 }); 35 });
19 36
20 exports.binding = binding.generate(); 37 exports.binding = binding.generate();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698