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

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: Addressed some of dpapad@'s comments. 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 while (tableBody.firstChild)
dpapad 2016/08/05 17:25:11 Nit: I think you can clear the tableBody element i
Reilly Grant (use Gerrit) 2016/08/05 18:08:35 Done.
18 tableBody.removeChild(tableBody.firstChild);
19 for (let device of response.devices) {
20 let row = document.createElement('tr');
21 let name = document.createElement('td');
22 let serialNumber = document.createElement('td');
23 let landingPage = document.createElement('td');
24 let allowedOrigin = document.createElement('td');
25 let remove = document.createElement('td');
26 let removeButton = document.createElement('button');
27 name.textContent = device.name;
28 serialNumber.textContent = device.serial_number;
29 landingPage.textContent = device.landing_page;
30 allowedOrigin.textContent = device.allowed_origin;
31 removeButton.addEventListener('click', function(e) {
dpapad 2016/08/05 17:25:11 Nit: The |e| parameter is not used, so it can be o
Reilly Grant (use Gerrit) 2016/08/05 18:08:35 Done.
32 pageHandler.removeDeviceForTesting(device.guid)
33 .then(refreshDeviceList);
34 });
35 removeButton.textContent = 'Remove';
36 row.appendChild(name);
37 row.appendChild(serialNumber);
38 row.appendChild(landingPage);
39 row.appendChild(allowedOrigin);
40 remove.appendChild(removeButton);
41 row.appendChild(remove);
42 tableBody.appendChild(row);
43 }
44 });
45 }
46
47 function addTestDevice(event) {
48 pageHandler.addDeviceForTesting(
49 $('test-device-name').value,
50 $('test-device-serial').value,
51 $('test-device-landing-page').value,
52 $('test-device-allowed-origin').value).then(function(response) {
53 if (response.success)
54 refreshDeviceList();
55 $('add-test-device-result').textContent = response.message;
56 $('add-test-device-result').className =
57 response.success ? 'action-success' : 'action-failure';
58 });
59 event.preventDefault();
60 }
61
62 /**
63 * Helper to convert callback-based define() API to a promise-based API.
64 * @param {!Array<string>} moduleNames
65 * @return {!Promise}
66 */
67 function importModules(moduleNames) {
68 return new Promise(function(resolve, reject) {
69 define(moduleNames, function(var_args) {
70 resolve(Array.prototype.slice.call(arguments, 0));
71 });
72 });
73 }
74
75 function initializeProxies() {
76 return importModules([
77 'mojo/public/js/connection',
78 'chrome/browser/ui/webui/usb_internals/usb_internals.mojom',
79 'content/public/renderer/frame_interfaces',
80 ]).then(function(modules) {
81 let connection = modules[0];
82 let mojom = modules[1];
83 let frameInterfaces = modules[2];
84
85 pageHandler = connection.bindHandleToProxy(
86 frameInterfaces.getInterface(mojom.UsbInternalsPageHandler.name),
87 mojom.UsbInternalsPageHandler);
88 });
89 }
90
91 document.addEventListener('DOMContentLoaded', function() {
92 initializeProxies().then(function() {
93 $('add-test-device-form').addEventListener('submit', addTestDevice);
94 refreshDeviceList();
95 });
96 });
97 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698