Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / renderer / resources / extensions / developer_private_custom_bindings.js
blob3c41a5ebf98960507eecdda77a6f90db9a944f53
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
3 // found in the LICENSE file.
5 // Custom binding for the developerPrivate API.
7 var binding = require('binding').Binding.create('developerPrivate');
9 binding.registerCustomHook(function(bindingsAPI) {
10   var apiFunctions = bindingsAPI.apiFunctions;
12   // Converts the argument of |functionName| from DirectoryEntry to URL.
13   function bindFileSystemFunction(functionName) {
14     apiFunctions.setUpdateArgumentsPostValidate(
15         functionName, function(directoryEntry, callback) {
16           var fileSystemName = directoryEntry.filesystem.name;
17           var relativePath = $String.slice(directoryEntry.fullPath, 1);
18           var url = directoryEntry.toURL();
19           return [fileSystemName, relativePath, url, callback];
20     });
21   }
23   bindFileSystemFunction('loadDirectory');
25   // developerPrivate.enable is the same as chrome.management.setEnabled.
26   // TODO(devlin): Migrate callers off developerPrivate.enable.
27   bindingsAPI.compiledApi.enable = chrome.management.setEnabled;
29   apiFunctions.setHandleRequest('allowFileAccess',
30                                 function(id, allow, callback) {
31     chrome.developerPrivate.updateExtensionConfiguration(
32         {extensionId: id, fileAccess: allow}, callback);
33   });
35   apiFunctions.setHandleRequest('allowIncognito',
36                                 function(id, allow, callback) {
37     chrome.developerPrivate.updateExtensionConfiguration(
38         {extensionId: id, incognitoAccess: allow}, callback);
39   });
41   apiFunctions.setHandleRequest('inspect', function(options, callback) {
42     var renderViewId = options.render_view_id;
43     if (typeof renderViewId == 'string') {
44       renderViewId = parseInt(renderViewId);
45       if (isNaN(renderViewId))
46         throw new Error('Invalid value for render_view_id');
47     }
48     var renderProcessId = options.render_process_id;
49     if (typeof renderProcessId == 'string') {
50       renderProcessId = parseInt(renderProcessId);
51       if (isNaN(renderProcessId))
52         throw new Error('Invalid value for render_process_id');
53     }
54     chrome.developerPrivate.openDevTools({
55         extensionId: options.extension_id,
56         renderProcessId: renderProcessId,
57         renderViewId: renderViewId,
58         incognito: options.incognito
59     }, callback);
60   });
61 });
63 exports.binding = binding.generate();