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

Side by Side Diff: chrome/browser/resources/usb_internals/usb_internals.js

Issue 2204713006: Add chrome://usb-internals page for adding and removing test devices. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addresses dpapad@'s nits. Created 4 years, 4 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
(Empty)
1 // Copyright 2016 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.
4
5 /**
6 * Javascript for usb_internals.html, served from chrome://usb-internals/.
7 */
8
9 (function() {
10 // Connection to the UsbInternalsPageHandler instance running in the browser
11 // process.
12 let pageHandler = null;
13
14 function refreshDeviceList() {
15 pageHandler.getTestDevices().then(function(response) {
16 let tableBody = $('test-device-list');
17 tableBody.innerHTML = '';
18 for (let device of response.devices) {
19 let row = document.createElement('tr');
20 let name = document.createElement('td');
21 let serialNumber = document.createElement('td');
22 let landingPage = document.createElement('td');
23 let allowedOrigin = document.createElement('td');
24 let remove = document.createElement('td');
25 let removeButton = document.createElement('button');
26 name.textContent = device.name;
27 serialNumber.textContent = device.serial_number;
28 landingPage.textContent = device.landing_page;
29 allowedOrigin.textContent = device.allowed_origin;
30 removeButton.addEventListener('click', function() {
31 pageHandler.removeDeviceForTesting(device.guid)
32 .then(refreshDeviceList);
33 });
34 removeButton.textContent = 'Remove';
35 row.appendChild(name);
36 row.appendChild(serialNumber);
37 row.appendChild(landingPage);
38 row.appendChild(allowedOrigin);
39 remove.appendChild(removeButton);
40 row.appendChild(remove);
41 tableBody.appendChild(row);
42 }
43 });
44 }
45
46 function addTestDevice(event) {
47 pageHandler.addDeviceForTesting(
48 $('test-device-name').value,
49 $('test-device-serial').value,
50 $('test-device-landing-page').value,
51 $('test-device-allowed-origin').value).then(function(response) {
52 if (response.success)
53 refreshDeviceList();
54 $('add-test-device-result').textContent = response.message;
55 $('add-test-device-result').className =
56 response.success ? 'action-success' : 'action-failure';
57 });
58 event.preventDefault();
59 }
60
61 /**
62 * Helper to convert callback-based define() API to a promise-based API.
63 * @param {!Array<string>} moduleNames
64 * @return {!Promise}
65 */
66 function importModules(moduleNames) {
67 return new Promise(function(resolve, reject) {
68 define(moduleNames, function(var_args) {
69 resolve(Array.prototype.slice.call(arguments, 0));
70 });
71 });
72 }
73
74 function initializeProxies() {
75 return importModules([
76 'mojo/public/js/connection',
77 'chrome/browser/ui/webui/usb_internals/usb_internals.mojom',
78 'content/public/renderer/frame_interfaces',
79 ]).then(function(modules) {
80 let connection = modules[0];
81 let mojom = modules[1];
82 let frameInterfaces = modules[2];
83
84 pageHandler = connection.bindHandleToProxy(
85 frameInterfaces.getInterface(mojom.UsbInternalsPageHandler.name),
86 mojom.UsbInternalsPageHandler);
87 });
88 }
89
90 document.addEventListener('DOMContentLoaded', function() {
91 initializeProxies().then(function() {
92 $('add-test-device-form').addEventListener('submit', addTestDevice);
93 refreshDeviceList();
94 });
95 });
96 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698