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

Unified 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: Use typemaped types in the TestDeviceInfo struct. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/resources/usb_internals/usb_internals.html ('k') | chrome/browser/ui/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/usb_internals/usb_internals.js
diff --git a/chrome/browser/resources/usb_internals/usb_internals.js b/chrome/browser/resources/usb_internals/usb_internals.js
new file mode 100644
index 0000000000000000000000000000000000000000..7784ec02f9b1bc467e59f532cb3403b55cbddb61
--- /dev/null
+++ b/chrome/browser/resources/usb_internals/usb_internals.js
@@ -0,0 +1,97 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * Javascript for usb_internals.html, served from chrome://usb-internals/.
+ */
+
+(function() {
+ // Connection to the UsbInternalsPageHandler instance running in the browser
+ // process.
+ let pageHandler = null;
+
+ function refreshDeviceList() {
+ pageHandler.getTestDevices().then(function(response) {
+ let tableBody = $('test-device-list');
+ tableBody.innerHTML = '';
+ for (let device of response.devices) {
+ let row = document.createElement('tr');
+ let name = document.createElement('td');
+ let serialNumber = document.createElement('td');
+ let landingPage = document.createElement('td');
+ let allowedOrigin = document.createElement('td');
+ let remove = document.createElement('td');
+ let removeButton = document.createElement('button');
+ name.textContent = device.name;
+ serialNumber.textContent = device.serial_number;
+ landingPage.textContent = device.landing_page.url;
+ allowedOrigin.textContent = device.allowed_origin.scheme + '://' +
+ device.allowed_origin.host + ':' + device.allowed_origin.port;
+ removeButton.addEventListener('click', function() {
+ pageHandler.removeDeviceForTesting(device.guid)
+ .then(refreshDeviceList);
+ });
+ removeButton.textContent = 'Remove';
+ row.appendChild(name);
+ row.appendChild(serialNumber);
+ row.appendChild(landingPage);
+ row.appendChild(allowedOrigin);
+ remove.appendChild(removeButton);
+ row.appendChild(remove);
+ tableBody.appendChild(row);
+ }
+ });
+ }
+
+ function addTestDevice(event) {
+ pageHandler.addDeviceForTesting(
+ $('test-device-name').value,
+ $('test-device-serial').value,
+ $('test-device-landing-page').value,
+ $('test-device-allowed-origin').value).then(function(response) {
+ if (response.success)
+ refreshDeviceList();
+ $('add-test-device-result').textContent = response.message;
+ $('add-test-device-result').className =
+ response.success ? 'action-success' : 'action-failure';
+ });
+ event.preventDefault();
+ }
+
+ /**
+ * Helper to convert callback-based define() API to a promise-based API.
+ * @param {!Array<string>} moduleNames
+ * @return {!Promise}
+ */
+ function importModules(moduleNames) {
+ return new Promise(function(resolve, reject) {
+ define(moduleNames, function(var_args) {
+ resolve(Array.prototype.slice.call(arguments, 0));
+ });
+ });
+ }
+
+ function initializeProxies() {
+ return importModules([
+ 'mojo/public/js/connection',
+ 'chrome/browser/ui/webui/usb_internals/usb_internals.mojom',
+ 'content/public/renderer/frame_interfaces',
+ ]).then(function(modules) {
+ let connection = modules[0];
+ let mojom = modules[1];
+ let frameInterfaces = modules[2];
+
+ pageHandler = connection.bindHandleToProxy(
+ frameInterfaces.getInterface(mojom.UsbInternalsPageHandler.name),
+ mojom.UsbInternalsPageHandler);
+ });
+ }
+
+ document.addEventListener('DOMContentLoaded', function() {
+ initializeProxies().then(function() {
+ $('add-test-device-form').addEventListener('submit', addTestDevice);
+ refreshDeviceList();
+ });
+ });
+})();
« no previous file with comments | « chrome/browser/resources/usb_internals/usb_internals.html ('k') | chrome/browser/ui/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698