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

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

Issue 11571014: Lazy load chrome.* APIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: android compilation Created 7 years, 9 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 | Annotate | Revision Log
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 bindings for the Permissions API. 5 // Custom binding for the Permissions API.
6 6
7 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); 7 var binding = require('binding').Binding.create('permissions');
8
8 var sendRequest = require('sendRequest').sendRequest; 9 var sendRequest = require('sendRequest').sendRequest;
9 var lastError = require('lastError'); 10 var lastError = require('lastError');
10 11
11 // These custom bindings are only necessary because it is not currently 12 // These custom binding are only necessary because it is not currently
12 // possible to have a union of types as the type of the items in an array. 13 // possible to have a union of types as the type of the items in an array.
13 // Once that is fixed, this entire file should go away. 14 // Once that is fixed, this entire file should go away.
14 // See, 15 // See,
15 // https://code.google.com/p/chromium/issues/detail?id=162044 16 // https://code.google.com/p/chromium/issues/detail?id=162044
16 // https://code.google.com/p/chromium/issues/detail?id=162042 17 // https://code.google.com/p/chromium/issues/detail?id=162042
17 // TODO(bryeung): delete this file. 18 // TODO(bryeung): delete this file.
18 chromeHidden.registerCustomHook('permissions', function(api) { 19 binding.registerCustomHook(function(api) {
19 var apiFunctions = api.apiFunctions; 20 var apiFunctions = api.apiFunctions;
21 var permissions = api.compiledApi;
20 22
21 function maybeConvertToObject(str) { 23 function maybeConvertToObject(str) {
22 var parts = str.split('|'); 24 var parts = str.split('|');
23 if (parts.length != 2) 25 if (parts.length != 2)
24 return str; 26 return str;
25 27
26 var ret = {}; 28 var ret = {};
27 ret[parts[0]] = JSON.parse(parts[1]); 29 ret[parts[0]] = JSON.parse(parts[1]);
28 return ret; 30 return ret;
29 } 31 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 // that handleResponse doesn't call it again. 75 // that handleResponse doesn't call it again.
74 if (request.callback) 76 if (request.callback)
75 request.callback.apply(request, [response]); 77 request.callback.apply(request, [response]);
76 delete request.callback; 78 delete request.callback;
77 }); 79 });
78 80
79 // Also convert complex permissions back to objects for events. The 81 // Also convert complex permissions back to objects for events. The
80 // dispatchToListener call happens after argument validation, which works 82 // dispatchToListener call happens after argument validation, which works
81 // around the problem that Permissions.permissions is supposed to be a list 83 // around the problem that Permissions.permissions is supposed to be a list
82 // of strings. 84 // of strings.
83 chrome.permissions.onAdded.dispatchToListener = function(callback, args) { 85 permissions.onAdded.dispatchToListener = function(callback, args) {
84 for (var i = 0; i < args[0].permissions.length; i += 1) { 86 for (var i = 0; i < args[0].permissions.length; i += 1) {
85 args[0].permissions[i] = maybeConvertToObject(args[0].permissions[i]); 87 args[0].permissions[i] = maybeConvertToObject(args[0].permissions[i]);
86 } 88 }
87 chrome.Event.prototype.dispatchToListener(callback, args); 89 chrome.Event.prototype.dispatchToListener(callback, args);
88 }; 90 };
89 chrome.permissions.onRemoved.dispatchToListener = 91 permissions.onRemoved.dispatchToListener =
90 chrome.permissions.onAdded.dispatchToListener; 92 permissions.onAdded.dispatchToListener;
91 }); 93 });
94
95 exports.binding = binding.generate();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698