| Index: third_party/WebKit/Source/devtools/front_end/devices/DevicesView.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/devices/DevicesView.js b/third_party/WebKit/Source/devtools/front_end/devices/DevicesView.js
|
| index 1cd39a56bfd80601343772f1a0023771fb2968ff..ffdb29a03409cc25de25aa799df24951012ff429 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/devices/DevicesView.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/devices/DevicesView.js
|
| @@ -1,27 +1,26 @@
|
| // Copyright 2015 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.
|
| -
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.VBox}
|
| + * @unrestricted
|
| */
|
| -WebInspector.DevicesView = function()
|
| -{
|
| - WebInspector.VBox.call(this, true);
|
| - this.registerRequiredCSS("devices/devicesView.css");
|
| - this.contentElement.classList.add("devices-view");
|
| +WebInspector.DevicesView = class extends WebInspector.VBox {
|
| + constructor() {
|
| + super(true);
|
| + this.registerRequiredCSS('devices/devicesView.css');
|
| + this.contentElement.classList.add('devices-view');
|
|
|
| - var hbox = this.contentElement.createChild("div", "hbox devices-container");
|
| - var sidebar = hbox.createChild("div", "devices-sidebar");
|
| - sidebar.createChild("div", "devices-view-title").createTextChild(WebInspector.UIString("Devices"));
|
| - this._sidebarList = sidebar.createChild("div", "devices-sidebar-list");
|
| + var hbox = this.contentElement.createChild('div', 'hbox devices-container');
|
| + var sidebar = hbox.createChild('div', 'devices-sidebar');
|
| + sidebar.createChild('div', 'devices-view-title').createTextChild(WebInspector.UIString('Devices'));
|
| + this._sidebarList = sidebar.createChild('div', 'devices-sidebar-list');
|
|
|
| this._discoveryView = new WebInspector.DevicesView.DiscoveryView();
|
| - this._sidebarListSpacer = this._sidebarList.createChild("div", "devices-sidebar-spacer");
|
| - this._discoveryListItem = this._sidebarList.createChild("div", "devices-sidebar-item");
|
| - this._discoveryListItem.textContent = WebInspector.UIString("Settings");
|
| - this._discoveryListItem.addEventListener("click", this._selectSidebarListItem.bind(this, this._discoveryListItem, this._discoveryView));
|
| + this._sidebarListSpacer = this._sidebarList.createChild('div', 'devices-sidebar-spacer');
|
| + this._discoveryListItem = this._sidebarList.createChild('div', 'devices-sidebar-item');
|
| + this._discoveryListItem.textContent = WebInspector.UIString('Settings');
|
| + this._discoveryListItem.addEventListener(
|
| + 'click', this._selectSidebarListItem.bind(this, this._discoveryListItem, this._discoveryView));
|
|
|
| /** @type {!Map<string, !WebInspector.DevicesView.DeviceView>} */
|
| this._viewById = new Map();
|
| @@ -30,667 +29,657 @@ WebInspector.DevicesView = function()
|
| /** @type {!Map<string, !Element>} */
|
| this._listItemById = new Map();
|
|
|
| - this._viewContainer = hbox.createChild("div", "flex-auto vbox");
|
| + this._viewContainer = hbox.createChild('div', 'flex-auto vbox');
|
|
|
| - var discoveryFooter = this.contentElement.createChild("div", "devices-footer");
|
| - this._deviceCountSpan = discoveryFooter.createChild("span");
|
| - discoveryFooter.createChild("span").textContent = WebInspector.UIString(" Read ");
|
| - discoveryFooter.appendChild(WebInspector.linkifyURLAsNode("https://developers.google.com/chrome-developer-tools/docs/remote-debugging", WebInspector.UIString("remote debugging documentation"), undefined, true));
|
| - discoveryFooter.createChild("span").textContent = WebInspector.UIString(" for more information.");
|
| + var discoveryFooter = this.contentElement.createChild('div', 'devices-footer');
|
| + this._deviceCountSpan = discoveryFooter.createChild('span');
|
| + discoveryFooter.createChild('span').textContent = WebInspector.UIString(' Read ');
|
| + discoveryFooter.appendChild(WebInspector.linkifyURLAsNode(
|
| + 'https://developers.google.com/chrome-developer-tools/docs/remote-debugging',
|
| + WebInspector.UIString('remote debugging documentation'), undefined, true));
|
| + discoveryFooter.createChild('span').textContent = WebInspector.UIString(' for more information.');
|
| this._updateFooter();
|
| this._selectSidebarListItem(this._discoveryListItem, this._discoveryView);
|
|
|
| - InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Events.DevicesUpdated, this._devicesUpdated, this);
|
| - InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Events.DevicesDiscoveryConfigChanged, this._devicesDiscoveryConfigChanged, this);
|
| - InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Events.DevicesPortForwardingStatusChanged, this._devicesPortForwardingStatusChanged, this);
|
| + InspectorFrontendHost.events.addEventListener(
|
| + InspectorFrontendHostAPI.Events.DevicesUpdated, this._devicesUpdated, this);
|
| + InspectorFrontendHost.events.addEventListener(
|
| + InspectorFrontendHostAPI.Events.DevicesDiscoveryConfigChanged, this._devicesDiscoveryConfigChanged, this);
|
| + InspectorFrontendHost.events.addEventListener(
|
| + InspectorFrontendHostAPI.Events.DevicesPortForwardingStatusChanged, this._devicesPortForwardingStatusChanged,
|
| + this);
|
|
|
| this.contentElement.tabIndex = 0;
|
| this.setDefaultFocusedElement(this.contentElement);
|
| -};
|
| -
|
| -WebInspector.DevicesView.prototype = {
|
| - /**
|
| - * @param {!Element} listItem
|
| - * @param {!WebInspector.Widget} view
|
| - */
|
| - _selectSidebarListItem: function(listItem, view)
|
| - {
|
| - if (this._selectedListItem === listItem)
|
| - return;
|
| -
|
| - if (this._selectedListItem) {
|
| - this._selectedListItem.classList.remove("selected");
|
| - this._visibleView.detach();
|
| - }
|
| -
|
| - this._visibleView = view;
|
| - this._selectedListItem = listItem;
|
| - this._visibleView.show(this._viewContainer);
|
| - this._selectedListItem.classList.add("selected");
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _devicesUpdated: function(event)
|
| - {
|
| - this._devices = /** @type {!Array.<!Adb.Device>} */ (event.data).slice().filter(d => d.adbSerial.toUpperCase() !== "WEBRTC");
|
| - for (var device of this._devices) {
|
| - if (!device.adbConnected)
|
| - device.adbModel = WebInspector.UIString("Unknown");
|
| - }
|
| -
|
| - var ids = new Set();
|
| - for (var device of this._devices)
|
| - ids.add(device.id);
|
| -
|
| - var selectedRemoved = false;
|
| - for (var deviceId of this._viewById.keys()) {
|
| - if (!ids.has(deviceId)) {
|
| - var listItem = /** @type {!Element} */ (this._listItemById.get(deviceId));
|
| - this._listItemById.remove(deviceId);
|
| - this._viewById.remove(deviceId);
|
| - listItem.remove();
|
| - if (listItem === this._selectedListItem)
|
| - selectedRemoved = true;
|
| - }
|
| - }
|
| -
|
| - for (var device of this._devices) {
|
| - var view = this._viewById.get(device.id);
|
| - var listItem = this._listItemById.get(device.id);
|
| -
|
| - if (!view) {
|
| - view = new WebInspector.DevicesView.DeviceView();
|
| - this._viewById.set(device.id, view);
|
| - listItem = this._createSidebarListItem(view);
|
| - this._listItemById.set(device.id, listItem);
|
| - this._sidebarList.insertBefore(listItem, this._sidebarListSpacer);
|
| - }
|
| -
|
| - listItem._title.textContent = device.adbModel;
|
| - listItem._status.textContent = device.adbConnected ? WebInspector.UIString("Connected") : WebInspector.UIString("Pending Authorization");
|
| - listItem.classList.toggle("device-connected", device.adbConnected);
|
| - view.update(device);
|
| - }
|
| -
|
| - if (selectedRemoved)
|
| - this._selectSidebarListItem(this._discoveryListItem, this._discoveryView);
|
| -
|
| - this._updateFooter();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Widget} view
|
| - * @return {!Element}
|
| - */
|
| - _createSidebarListItem: function(view)
|
| - {
|
| - var listItem = createElementWithClass("div", "devices-sidebar-item");
|
| - listItem.addEventListener("click", this._selectSidebarListItem.bind(this, listItem, view));
|
| - listItem._title = listItem.createChild("div", "devices-sidebar-item-title");
|
| - listItem._status = listItem.createChild("div", "devices-sidebar-item-status");
|
| - return listItem;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _devicesDiscoveryConfigChanged: function(event)
|
| - {
|
| - var discoverUsbDevices = /** @type {boolean} */ (event.data["discoverUsbDevices"]);
|
| - var portForwardingEnabled = /** @type {boolean} */ (event.data["portForwardingEnabled"]);
|
| - var portForwardingConfig = /** @type {!Adb.PortForwardingConfig} */ (event.data["portForwardingConfig"]);
|
| - this._discoveryView.discoveryConfigChanged(discoverUsbDevices, portForwardingEnabled, portForwardingConfig);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _devicesPortForwardingStatusChanged: function(event)
|
| - {
|
| - var status = /** @type {!Adb.PortForwardingStatus} */ (event.data);
|
| - for (var deviceId in status) {
|
| - var view = this._viewById.get(deviceId);
|
| - if (view)
|
| - view.portForwardingStatusChanged(status[deviceId]);
|
| - }
|
| - for (var deviceId of this._viewById.keys()) {
|
| - var view = this._viewById.get(deviceId);
|
| - if (view && !(deviceId in status))
|
| - view.portForwardingStatusChanged({ports: {}, browserId: ""});
|
| - }
|
| - },
|
| -
|
| - _updateFooter: function()
|
| - {
|
| - this._deviceCountSpan.textContent =
|
| - !this._devices.length ? WebInspector.UIString("No devices detected.") :
|
| - this._devices.length === 1 ? WebInspector.UIString("1 device detected.") : WebInspector.UIString("%d devices detected.", this._devices.length);
|
| - },
|
| + }
|
|
|
| - /**
|
| - * @override
|
| - */
|
| - wasShown: function()
|
| - {
|
| - WebInspector.PanelWithSidebar.prototype.wasShown.call(this);
|
| - InspectorFrontendHost.setDevicesUpdatesEnabled(true);
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - */
|
| - willHide: function()
|
| - {
|
| - WebInspector.PanelWithSidebar.prototype.wasShown.call(this);
|
| - InspectorFrontendHost.setDevicesUpdatesEnabled(false);
|
| - },
|
| -
|
| - __proto__: WebInspector.VBox.prototype
|
| -};
|
| -
|
| -/**
|
| - * @return {!WebInspector.DevicesView}
|
| - */
|
| -WebInspector.DevicesView._instance = function()
|
| -{
|
| + /**
|
| + * @return {!WebInspector.DevicesView}
|
| + */
|
| + static _instance() {
|
| if (!WebInspector.DevicesView._instanceObject)
|
| - WebInspector.DevicesView._instanceObject = new WebInspector.DevicesView();
|
| + WebInspector.DevicesView._instanceObject = new WebInspector.DevicesView();
|
| return WebInspector.DevicesView._instanceObject;
|
| + }
|
| +
|
| + /**
|
| + * @param {!Element} listItem
|
| + * @param {!WebInspector.Widget} view
|
| + */
|
| + _selectSidebarListItem(listItem, view) {
|
| + if (this._selectedListItem === listItem)
|
| + return;
|
| +
|
| + if (this._selectedListItem) {
|
| + this._selectedListItem.classList.remove('selected');
|
| + this._visibleView.detach();
|
| + }
|
| +
|
| + this._visibleView = view;
|
| + this._selectedListItem = listItem;
|
| + this._visibleView.show(this._viewContainer);
|
| + this._selectedListItem.classList.add('selected');
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _devicesUpdated(event) {
|
| + this._devices =
|
| + /** @type {!Array.<!Adb.Device>} */ (event.data).slice().filter(d => d.adbSerial.toUpperCase() !== 'WEBRTC');
|
| + for (var device of this._devices) {
|
| + if (!device.adbConnected)
|
| + device.adbModel = WebInspector.UIString('Unknown');
|
| + }
|
| +
|
| + var ids = new Set();
|
| + for (var device of this._devices)
|
| + ids.add(device.id);
|
| +
|
| + var selectedRemoved = false;
|
| + for (var deviceId of this._viewById.keys()) {
|
| + if (!ids.has(deviceId)) {
|
| + var listItem = /** @type {!Element} */ (this._listItemById.get(deviceId));
|
| + this._listItemById.remove(deviceId);
|
| + this._viewById.remove(deviceId);
|
| + listItem.remove();
|
| + if (listItem === this._selectedListItem)
|
| + selectedRemoved = true;
|
| + }
|
| + }
|
| +
|
| + for (var device of this._devices) {
|
| + var view = this._viewById.get(device.id);
|
| + var listItem = this._listItemById.get(device.id);
|
| +
|
| + if (!view) {
|
| + view = new WebInspector.DevicesView.DeviceView();
|
| + this._viewById.set(device.id, view);
|
| + listItem = this._createSidebarListItem(view);
|
| + this._listItemById.set(device.id, listItem);
|
| + this._sidebarList.insertBefore(listItem, this._sidebarListSpacer);
|
| + }
|
| +
|
| + listItem._title.textContent = device.adbModel;
|
| + listItem._status.textContent =
|
| + device.adbConnected ? WebInspector.UIString('Connected') : WebInspector.UIString('Pending Authorization');
|
| + listItem.classList.toggle('device-connected', device.adbConnected);
|
| + view.update(device);
|
| + }
|
| +
|
| + if (selectedRemoved)
|
| + this._selectSidebarListItem(this._discoveryListItem, this._discoveryView);
|
| +
|
| + this._updateFooter();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Widget} view
|
| + * @return {!Element}
|
| + */
|
| + _createSidebarListItem(view) {
|
| + var listItem = createElementWithClass('div', 'devices-sidebar-item');
|
| + listItem.addEventListener('click', this._selectSidebarListItem.bind(this, listItem, view));
|
| + listItem._title = listItem.createChild('div', 'devices-sidebar-item-title');
|
| + listItem._status = listItem.createChild('div', 'devices-sidebar-item-status');
|
| + return listItem;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _devicesDiscoveryConfigChanged(event) {
|
| + var discoverUsbDevices = /** @type {boolean} */ (event.data['discoverUsbDevices']);
|
| + var portForwardingEnabled = /** @type {boolean} */ (event.data['portForwardingEnabled']);
|
| + var portForwardingConfig = /** @type {!Adb.PortForwardingConfig} */ (event.data['portForwardingConfig']);
|
| + this._discoveryView.discoveryConfigChanged(discoverUsbDevices, portForwardingEnabled, portForwardingConfig);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _devicesPortForwardingStatusChanged(event) {
|
| + var status = /** @type {!Adb.PortForwardingStatus} */ (event.data);
|
| + for (var deviceId in status) {
|
| + var view = this._viewById.get(deviceId);
|
| + if (view)
|
| + view.portForwardingStatusChanged(status[deviceId]);
|
| + }
|
| + for (var deviceId of this._viewById.keys()) {
|
| + var view = this._viewById.get(deviceId);
|
| + if (view && !(deviceId in status))
|
| + view.portForwardingStatusChanged({ports: {}, browserId: ''});
|
| + }
|
| + }
|
| +
|
| + _updateFooter() {
|
| + this._deviceCountSpan.textContent = !this._devices.length ?
|
| + WebInspector.UIString('No devices detected.') :
|
| + this._devices.length === 1 ? WebInspector.UIString('1 device detected.') :
|
| + WebInspector.UIString('%d devices detected.', this._devices.length);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + wasShown() {
|
| + super.wasShown();
|
| + InspectorFrontendHost.setDevicesUpdatesEnabled(true);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + willHide() {
|
| + super.wasShown();
|
| + InspectorFrontendHost.setDevicesUpdatesEnabled(false);
|
| + }
|
| };
|
|
|
|
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.VBox}
|
| * @implements {WebInspector.ListWidget.Delegate}
|
| + * @unrestricted
|
| */
|
| -WebInspector.DevicesView.DiscoveryView = function()
|
| -{
|
| - WebInspector.VBox.call(this);
|
| +WebInspector.DevicesView.DiscoveryView = class extends WebInspector.VBox {
|
| + constructor() {
|
| + super();
|
| this.setMinimumSize(100, 100);
|
| - this.element.classList.add("discovery-view");
|
| + this.element.classList.add('discovery-view');
|
|
|
| - this.contentElement.createChild("div", "hbox device-text-row").createChild("div", "view-title").textContent = WebInspector.UIString("Settings");
|
| + this.contentElement.createChild('div', 'hbox device-text-row').createChild('div', 'view-title').textContent =
|
| + WebInspector.UIString('Settings');
|
|
|
| - var discoverUsbDevicesCheckbox = createCheckboxLabel(WebInspector.UIString("Discover USB devices"));
|
| - discoverUsbDevicesCheckbox.classList.add("usb-checkbox");
|
| + var discoverUsbDevicesCheckbox = createCheckboxLabel(WebInspector.UIString('Discover USB devices'));
|
| + discoverUsbDevicesCheckbox.classList.add('usb-checkbox');
|
| this.element.appendChild(discoverUsbDevicesCheckbox);
|
| this._discoverUsbDevicesCheckbox = discoverUsbDevicesCheckbox.checkboxElement;
|
| - this._discoverUsbDevicesCheckbox.addEventListener("click", this._updateDiscoveryConfig.bind(this), false);
|
| + this._discoverUsbDevicesCheckbox.addEventListener('click', this._updateDiscoveryConfig.bind(this), false);
|
|
|
| - var help = this.element.createChild("div", "discovery-help");
|
| - help.createChild("span").textContent = WebInspector.UIString("Need help? Read Chrome ");
|
| - help.appendChild(WebInspector.linkifyURLAsNode("https://developers.google.com/chrome-developer-tools/docs/remote-debugging", WebInspector.UIString("remote debugging documentation."), undefined, true));
|
| + var help = this.element.createChild('div', 'discovery-help');
|
| + help.createChild('span').textContent = WebInspector.UIString('Need help? Read Chrome ');
|
| + help.appendChild(WebInspector.linkifyURLAsNode(
|
| + 'https://developers.google.com/chrome-developer-tools/docs/remote-debugging',
|
| + WebInspector.UIString('remote debugging documentation.'), undefined, true));
|
|
|
| - var portForwardingHeader = this.element.createChild("div", "port-forwarding-header");
|
| - var portForwardingEnabledCheckbox = createCheckboxLabel(WebInspector.UIString("Port forwarding"));
|
| - portForwardingEnabledCheckbox.classList.add("port-forwarding-checkbox");
|
| + var portForwardingHeader = this.element.createChild('div', 'port-forwarding-header');
|
| + var portForwardingEnabledCheckbox = createCheckboxLabel(WebInspector.UIString('Port forwarding'));
|
| + portForwardingEnabledCheckbox.classList.add('port-forwarding-checkbox');
|
| portForwardingHeader.appendChild(portForwardingEnabledCheckbox);
|
| this._portForwardingEnabledCheckbox = portForwardingEnabledCheckbox.checkboxElement;
|
| - this._portForwardingEnabledCheckbox.addEventListener("click", this._updateDiscoveryConfig.bind(this), false);
|
| + this._portForwardingEnabledCheckbox.addEventListener('click', this._updateDiscoveryConfig.bind(this), false);
|
|
|
| - var portForwardingFooter = this.element.createChild("div", "port-forwarding-footer");
|
| - portForwardingFooter.createChild("span").textContent = WebInspector.UIString("Define the listening port on your device that maps to a port accessible from your development machine. ");
|
| - portForwardingFooter.appendChild(WebInspector.linkifyURLAsNode("https://developer.chrome.com/devtools/docs/remote-debugging#port-forwarding", WebInspector.UIString("Learn more"), undefined, true));
|
| + var portForwardingFooter = this.element.createChild('div', 'port-forwarding-footer');
|
| + portForwardingFooter.createChild('span').textContent = WebInspector.UIString(
|
| + 'Define the listening port on your device that maps to a port accessible from your development machine. ');
|
| + portForwardingFooter.appendChild(WebInspector.linkifyURLAsNode(
|
| + 'https://developer.chrome.com/devtools/docs/remote-debugging#port-forwarding',
|
| + WebInspector.UIString('Learn more'), undefined, true));
|
|
|
| this._list = new WebInspector.ListWidget(this);
|
| - this._list.registerRequiredCSS("devices/devicesView.css");
|
| - this._list.element.classList.add("port-forwarding-list");
|
| - var placeholder = createElementWithClass("div", "port-forwarding-list-empty");
|
| - placeholder.textContent = WebInspector.UIString("No rules");
|
| + this._list.registerRequiredCSS('devices/devicesView.css');
|
| + this._list.element.classList.add('port-forwarding-list');
|
| + var placeholder = createElementWithClass('div', 'port-forwarding-list-empty');
|
| + placeholder.textContent = WebInspector.UIString('No rules');
|
| this._list.setEmptyPlaceholder(placeholder);
|
| this._list.show(this.element);
|
|
|
| - this.element.appendChild(createTextButton(WebInspector.UIString("Add rule"), this._addRuleButtonClicked.bind(this), "add-rule-button"));
|
| + this.element.appendChild(
|
| + createTextButton(WebInspector.UIString('Add rule'), this._addRuleButtonClicked.bind(this), 'add-rule-button'));
|
|
|
| /** @type {!Array<!Adb.PortForwardingRule>} */
|
| this._portForwardingConfig = [];
|
| -};
|
| + }
|
|
|
| -WebInspector.DevicesView.DiscoveryView.prototype = {
|
| - _addRuleButtonClicked: function()
|
| - {
|
| - this._list.addNewItem(this._portForwardingConfig.length, {port: "", address: ""});
|
| - },
|
| + _addRuleButtonClicked() {
|
| + this._list.addNewItem(this._portForwardingConfig.length, {port: '', address: ''});
|
| + }
|
|
|
| - /**
|
| - * @param {boolean} discoverUsbDevices
|
| - * @param {boolean} portForwardingEnabled
|
| - * @param {!Adb.PortForwardingConfig} portForwardingConfig
|
| - */
|
| - discoveryConfigChanged: function(discoverUsbDevices, portForwardingEnabled, portForwardingConfig)
|
| - {
|
| - this._discoverUsbDevicesCheckbox.checked = discoverUsbDevices;
|
| - this._portForwardingEnabledCheckbox.checked = portForwardingEnabled;
|
| -
|
| - this._portForwardingConfig = [];
|
| - this._list.clear();
|
| - for (var key of Object.keys(portForwardingConfig)) {
|
| - var rule = /** @type {!Adb.PortForwardingRule} */ ({port: key, address: portForwardingConfig[key]});
|
| - this._portForwardingConfig.push(rule);
|
| - this._list.appendItem(rule, true);
|
| - }
|
| - },
|
| + /**
|
| + * @param {boolean} discoverUsbDevices
|
| + * @param {boolean} portForwardingEnabled
|
| + * @param {!Adb.PortForwardingConfig} portForwardingConfig
|
| + */
|
| + discoveryConfigChanged(discoverUsbDevices, portForwardingEnabled, portForwardingConfig) {
|
| + this._discoverUsbDevicesCheckbox.checked = discoverUsbDevices;
|
| + this._portForwardingEnabledCheckbox.checked = portForwardingEnabled;
|
|
|
| - /**
|
| - * @override
|
| - * @param {*} item
|
| - * @param {boolean} editable
|
| - * @return {!Element}
|
| - */
|
| - renderItem: function(item, editable)
|
| - {
|
| - var rule = /** @type {!Adb.PortForwardingRule} */ (item);
|
| - var element = createElementWithClass("div", "port-forwarding-list-item");
|
| - var port = element.createChild("div", "port-forwarding-value port-forwarding-port");
|
| - port.createChild("span", "port-localhost").textContent = WebInspector.UIString("localhost:");
|
| - port.createTextChild(rule.port);
|
| - element.createChild("div", "port-forwarding-separator");
|
| - element.createChild("div", "port-forwarding-value").textContent = rule.address;
|
| - return element;
|
| - },
|
| + this._portForwardingConfig = [];
|
| + this._list.clear();
|
| + for (var key of Object.keys(portForwardingConfig)) {
|
| + var rule = /** @type {!Adb.PortForwardingRule} */ ({port: key, address: portForwardingConfig[key]});
|
| + this._portForwardingConfig.push(rule);
|
| + this._list.appendItem(rule, true);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {*} item
|
| + * @param {boolean} editable
|
| + * @return {!Element}
|
| + */
|
| + renderItem(item, editable) {
|
| + var rule = /** @type {!Adb.PortForwardingRule} */ (item);
|
| + var element = createElementWithClass('div', 'port-forwarding-list-item');
|
| + var port = element.createChild('div', 'port-forwarding-value port-forwarding-port');
|
| + port.createChild('span', 'port-localhost').textContent = WebInspector.UIString('localhost:');
|
| + port.createTextChild(rule.port);
|
| + element.createChild('div', 'port-forwarding-separator');
|
| + element.createChild('div', 'port-forwarding-value').textContent = rule.address;
|
| + return element;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {*} item
|
| + * @param {number} index
|
| + */
|
| + removeItemRequested(item, index) {
|
| + this._portForwardingConfig.splice(index, 1);
|
| + this._list.removeItem(index);
|
| + this._updateDiscoveryConfig();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {*} item
|
| + * @param {!WebInspector.ListWidget.Editor} editor
|
| + * @param {boolean} isNew
|
| + */
|
| + commitEdit(item, editor, isNew) {
|
| + var rule = /** @type {!Adb.PortForwardingRule} */ (item);
|
| + rule.port = editor.control('port').value.trim();
|
| + rule.address = editor.control('address').value.trim();
|
| + if (isNew)
|
| + this._portForwardingConfig.push(rule);
|
| + this._updateDiscoveryConfig();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {*} item
|
| + * @return {!WebInspector.ListWidget.Editor}
|
| + */
|
| + beginEdit(item) {
|
| + var rule = /** @type {!Adb.PortForwardingRule} */ (item);
|
| + var editor = this._createEditor();
|
| + editor.control('port').value = rule.port;
|
| + editor.control('address').value = rule.address;
|
| + return editor;
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.ListWidget.Editor}
|
| + */
|
| + _createEditor() {
|
| + if (this._editor)
|
| + return this._editor;
|
| +
|
| + var editor = new WebInspector.ListWidget.Editor();
|
| + this._editor = editor;
|
| + var content = editor.contentElement();
|
| + var fields = content.createChild('div', 'port-forwarding-edit-row');
|
| + fields.createChild('div', 'port-forwarding-value port-forwarding-port')
|
| + .appendChild(editor.createInput('port', 'text', 'Device port (3333)', portValidator.bind(this)));
|
| + fields.createChild('div', 'port-forwarding-separator port-forwarding-separator-invisible');
|
| + fields.createChild('div', 'port-forwarding-value')
|
| + .appendChild(editor.createInput('address', 'text', 'Local address (dev.example.corp:3333)', addressValidator));
|
| + return editor;
|
|
|
| /**
|
| - * @override
|
| * @param {*} item
|
| * @param {number} index
|
| + * @param {!HTMLInputElement|!HTMLSelectElement} input
|
| + * @this {WebInspector.DevicesView.DiscoveryView}
|
| + * @return {boolean}
|
| */
|
| - removeItemRequested: function(item, index)
|
| - {
|
| - this._portForwardingConfig.splice(index, 1);
|
| - this._list.removeItem(index);
|
| - this._updateDiscoveryConfig();
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @param {*} item
|
| - * @param {!WebInspector.ListWidget.Editor} editor
|
| - * @param {boolean} isNew
|
| - */
|
| - commitEdit: function(item, editor, isNew)
|
| - {
|
| - var rule = /** @type {!Adb.PortForwardingRule} */ (item);
|
| - rule.port = editor.control("port").value.trim();
|
| - rule.address = editor.control("address").value.trim();
|
| - if (isNew)
|
| - this._portForwardingConfig.push(rule);
|
| - this._updateDiscoveryConfig();
|
| - },
|
| + function portValidator(item, index, input) {
|
| + var value = input.value.trim();
|
| + var match = value.match(/^(\d+)$/);
|
| + if (!match)
|
| + return false;
|
| + var port = parseInt(match[1], 10);
|
| + if (port < 1024 || port > 65535)
|
| + return false;
|
| + for (var i = 0; i < this._portForwardingConfig.length; ++i) {
|
| + if (i !== index && this._portForwardingConfig[i].port === value)
|
| + return false;
|
| + }
|
| + return true;
|
| + }
|
|
|
| /**
|
| - * @override
|
| * @param {*} item
|
| - * @return {!WebInspector.ListWidget.Editor}
|
| - */
|
| - beginEdit: function(item)
|
| - {
|
| - var rule = /** @type {!Adb.PortForwardingRule} */ (item);
|
| - var editor = this._createEditor();
|
| - editor.control("port").value = rule.port;
|
| - editor.control("address").value = rule.address;
|
| - return editor;
|
| - },
|
| -
|
| - /**
|
| - * @return {!WebInspector.ListWidget.Editor}
|
| + * @param {number} index
|
| + * @param {!HTMLInputElement|!HTMLSelectElement} input
|
| + * @return {boolean}
|
| */
|
| - _createEditor: function()
|
| - {
|
| - if (this._editor)
|
| - return this._editor;
|
| -
|
| - var editor = new WebInspector.ListWidget.Editor();
|
| - this._editor = editor;
|
| - var content = editor.contentElement();
|
| - var fields = content.createChild("div", "port-forwarding-edit-row");
|
| - fields.createChild("div", "port-forwarding-value port-forwarding-port").appendChild(editor.createInput("port", "text", "Device port (3333)", portValidator.bind(this)));
|
| - fields.createChild("div", "port-forwarding-separator port-forwarding-separator-invisible");
|
| - fields.createChild("div", "port-forwarding-value").appendChild(editor.createInput("address", "text", "Local address (dev.example.corp:3333)", addressValidator));
|
| - return editor;
|
| -
|
| - /**
|
| - * @param {*} item
|
| - * @param {number} index
|
| - * @param {!HTMLInputElement|!HTMLSelectElement} input
|
| - * @this {WebInspector.DevicesView.DiscoveryView}
|
| - * @return {boolean}
|
| - */
|
| - function portValidator(item, index, input)
|
| - {
|
| - var value = input.value.trim();
|
| - var match = value.match(/^(\d+)$/);
|
| - if (!match)
|
| - return false;
|
| - var port = parseInt(match[1], 10);
|
| - if (port < 1024 || port > 65535)
|
| - return false;
|
| - for (var i = 0; i < this._portForwardingConfig.length; ++i) {
|
| - if (i !== index && this._portForwardingConfig[i].port === value)
|
| - return false;
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - /**
|
| - * @param {*} item
|
| - * @param {number} index
|
| - * @param {!HTMLInputElement|!HTMLSelectElement} input
|
| - * @return {boolean}
|
| - */
|
| - function addressValidator(item, index, input)
|
| - {
|
| - var match = input.value.trim().match(/^([a-zA-Z0-9\.\-_]+):(\d+)$/);
|
| - if (!match)
|
| - return false;
|
| - var port = parseInt(match[2], 10);
|
| - return port <= 65535;
|
| - }
|
| - },
|
| -
|
| - _updateDiscoveryConfig: function()
|
| - {
|
| - var configMap = /** @type {!Adb.PortForwardingConfig} */ ({});
|
| - for (var rule of this._portForwardingConfig)
|
| - configMap[rule.port] = rule.address;
|
| - InspectorFrontendHost.setDevicesDiscoveryConfig(this._discoverUsbDevicesCheckbox.checked, this._portForwardingEnabledCheckbox.checked, configMap);
|
| - },
|
| -
|
| - __proto__: WebInspector.VBox.prototype
|
| + function addressValidator(item, index, input) {
|
| + var match = input.value.trim().match(/^([a-zA-Z0-9\.\-_]+):(\d+)$/);
|
| + if (!match)
|
| + return false;
|
| + var port = parseInt(match[2], 10);
|
| + return port <= 65535;
|
| + }
|
| + }
|
| +
|
| + _updateDiscoveryConfig() {
|
| + var configMap = /** @type {!Adb.PortForwardingConfig} */ ({});
|
| + for (var rule of this._portForwardingConfig)
|
| + configMap[rule.port] = rule.address;
|
| + InspectorFrontendHost.setDevicesDiscoveryConfig(
|
| + this._discoverUsbDevicesCheckbox.checked, this._portForwardingEnabledCheckbox.checked, configMap);
|
| + }
|
| };
|
|
|
| -
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.VBox}
|
| + * @unrestricted
|
| */
|
| -WebInspector.DevicesView.DeviceView = function()
|
| -{
|
| - WebInspector.VBox.call(this);
|
| +WebInspector.DevicesView.DeviceView = class extends WebInspector.VBox {
|
| + constructor() {
|
| + super();
|
| this.setMinimumSize(100, 100);
|
| - this.contentElement.classList.add("device-view");
|
| + this.contentElement.classList.add('device-view');
|
|
|
| - var topRow = this.contentElement.createChild("div", "hbox device-text-row");
|
| - this._deviceTitle = topRow.createChild("div", "view-title");
|
| - this._deviceSerial = topRow.createChild("div", "device-serial");
|
| - this._portStatus = this.contentElement.createChild("div", "device-port-status hidden");
|
| + var topRow = this.contentElement.createChild('div', 'hbox device-text-row');
|
| + this._deviceTitle = topRow.createChild('div', 'view-title');
|
| + this._deviceSerial = topRow.createChild('div', 'device-serial');
|
| + this._portStatus = this.contentElement.createChild('div', 'device-port-status hidden');
|
|
|
| - this._deviceOffline = this.contentElement.createChild("div");
|
| - this._deviceOffline.textContent = WebInspector.UIString("Pending authentication: please accept debugging session on the device.");
|
| + this._deviceOffline = this.contentElement.createChild('div');
|
| + this._deviceOffline.textContent =
|
| + WebInspector.UIString('Pending authentication: please accept debugging session on the device.');
|
|
|
| - this._noBrowsers = this.contentElement.createChild("div");
|
| - this._noBrowsers.textContent = WebInspector.UIString("No browsers detected.");
|
| + this._noBrowsers = this.contentElement.createChild('div');
|
| + this._noBrowsers.textContent = WebInspector.UIString('No browsers detected.');
|
|
|
| - this._browsers = this.contentElement.createChild("div", "device-browser-list vbox");
|
| + this._browsers = this.contentElement.createChild('div', 'device-browser-list vbox');
|
|
|
| /** @type {!Map<string, !WebInspector.DevicesView.BrowserSection>} */
|
| this._browserById = new Map();
|
|
|
| this._device = null;
|
| -};
|
| -
|
| -/** @typedef {!{browser: ?Adb.Browser, element: !Element, title: !Element, pages: !Element, viewMore: !Element, newTab: !Element, pageSections: !Map<string, !WebInspector.DevicesView.PageSection>}} */
|
| -WebInspector.DevicesView.BrowserSection;
|
| -
|
| -/** @typedef {!{page: ?Adb.Page, element: !Element, title: !Element, url: !Element, inspect: !Element}} */
|
| -WebInspector.DevicesView.PageSection;
|
| -
|
| -WebInspector.DevicesView.DeviceView.prototype = {
|
| - /**
|
| - * @param {!Adb.Device} device
|
| - */
|
| - update: function(device)
|
| - {
|
| - if (!this._device || this._device.adbModel !== device.adbModel)
|
| - this._deviceTitle.textContent = device.adbModel;
|
| -
|
| - if (!this._device || this._device.adbSerial !== device.adbSerial)
|
| - this._deviceSerial.textContent = "#" + device.adbSerial;
|
| -
|
| - this._deviceOffline.classList.toggle("hidden", device.adbConnected);
|
| - this._noBrowsers.classList.toggle("hidden", !device.adbConnected || !!device.browsers.length);
|
| - this._browsers.classList.toggle("hidden", !device.adbConnected || !device.browsers.length);
|
| -
|
| - var browserIds = new Set();
|
| - for (var browser of device.browsers)
|
| - browserIds.add(browser.id);
|
| -
|
| - for (var browserId of this._browserById.keys()) {
|
| - if (!browserIds.has(browserId)) {
|
| - this._browserById.get(browserId).element.remove();
|
| - this._browserById.remove(browserId);
|
| - }
|
| - }
|
| -
|
| - for (var browser of device.browsers) {
|
| - var section = this._browserById.get(browser.id);
|
| - if (!section) {
|
| - section = this._createBrowserSection();
|
| - this._browserById.set(browser.id, section);
|
| - this._browsers.appendChild(section.element);
|
| - }
|
| - this._updateBrowserSection(section, browser);
|
| - }
|
| -
|
| - this._device = device;
|
| - },
|
| + }
|
| +
|
| + /**
|
| + * @param {!Adb.Device} device
|
| + */
|
| + update(device) {
|
| + if (!this._device || this._device.adbModel !== device.adbModel)
|
| + this._deviceTitle.textContent = device.adbModel;
|
| +
|
| + if (!this._device || this._device.adbSerial !== device.adbSerial)
|
| + this._deviceSerial.textContent = '#' + device.adbSerial;
|
| +
|
| + this._deviceOffline.classList.toggle('hidden', device.adbConnected);
|
| + this._noBrowsers.classList.toggle('hidden', !device.adbConnected || !!device.browsers.length);
|
| + this._browsers.classList.toggle('hidden', !device.adbConnected || !device.browsers.length);
|
| +
|
| + var browserIds = new Set();
|
| + for (var browser of device.browsers)
|
| + browserIds.add(browser.id);
|
| +
|
| + for (var browserId of this._browserById.keys()) {
|
| + if (!browserIds.has(browserId)) {
|
| + this._browserById.get(browserId).element.remove();
|
| + this._browserById.remove(browserId);
|
| + }
|
| + }
|
| +
|
| + for (var browser of device.browsers) {
|
| + var section = this._browserById.get(browser.id);
|
| + if (!section) {
|
| + section = this._createBrowserSection();
|
| + this._browserById.set(browser.id, section);
|
| + this._browsers.appendChild(section.element);
|
| + }
|
| + this._updateBrowserSection(section, browser);
|
| + }
|
| +
|
| + this._device = device;
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.DevicesView.BrowserSection}
|
| + */
|
| + _createBrowserSection() {
|
| + var element = createElementWithClass('div', 'vbox flex-none');
|
| + var topRow = element.createChild('div', '');
|
| + var title = topRow.createChild('div', 'device-browser-title');
|
| +
|
| + var newTabRow = element.createChild('div', 'device-browser-new-tab');
|
| + newTabRow.createChild('div', '').textContent = WebInspector.UIString('New tab:');
|
| + var newTabInput = newTabRow.createChild('input', '');
|
| + newTabInput.type = 'text';
|
| + newTabInput.placeholder = WebInspector.UIString('Enter URL');
|
| + newTabInput.addEventListener('keydown', newTabKeyDown, false);
|
| + var newTabButton = createTextButton(WebInspector.UIString('Open'), openNewTab);
|
| + newTabRow.appendChild(newTabButton);
|
| +
|
| + var pages = element.createChild('div', 'device-page-list vbox');
|
| +
|
| + var viewMore = element.createChild('div', 'device-view-more');
|
| + viewMore.addEventListener('click', viewMoreClick, false);
|
| + updateViewMoreTitle();
|
| +
|
| + var section = {
|
| + browser: null,
|
| + element: element,
|
| + title: title,
|
| + pages: pages,
|
| + viewMore: viewMore,
|
| + newTab: newTabRow,
|
| + pageSections: new Map()
|
| + };
|
| + return section;
|
| +
|
| + function viewMoreClick() {
|
| + pages.classList.toggle('device-view-more-toggled');
|
| + updateViewMoreTitle();
|
| + }
|
| +
|
| + function updateViewMoreTitle() {
|
| + viewMore.textContent = pages.classList.contains('device-view-more-toggled') ?
|
| + WebInspector.UIString('View less tabs\u2026') :
|
| + WebInspector.UIString('View more tabs\u2026');
|
| + }
|
|
|
| /**
|
| - * @return {!WebInspector.DevicesView.BrowserSection}
|
| + * @param {!Event} event
|
| */
|
| - _createBrowserSection: function()
|
| - {
|
| - var element = createElementWithClass("div", "vbox flex-none");
|
| - var topRow = element.createChild("div", "");
|
| - var title = topRow.createChild("div", "device-browser-title");
|
| -
|
| - var newTabRow = element.createChild("div", "device-browser-new-tab");
|
| - newTabRow.createChild("div", "").textContent = WebInspector.UIString("New tab:");
|
| - var newTabInput = newTabRow.createChild("input", "");
|
| - newTabInput.type = "text";
|
| - newTabInput.placeholder = WebInspector.UIString("Enter URL");
|
| - newTabInput.addEventListener("keydown", newTabKeyDown, false);
|
| - var newTabButton = createTextButton(WebInspector.UIString("Open"), openNewTab);
|
| - newTabRow.appendChild(newTabButton);
|
| -
|
| - var pages = element.createChild("div", "device-page-list vbox");
|
| -
|
| - var viewMore = element.createChild("div", "device-view-more");
|
| - viewMore.addEventListener("click", viewMoreClick, false);
|
| - updateViewMoreTitle();
|
| -
|
| - var section = {browser: null, element: element, title: title, pages: pages, viewMore: viewMore, newTab: newTabRow, pageSections: new Map()};
|
| - return section;
|
| -
|
| - function viewMoreClick()
|
| - {
|
| - pages.classList.toggle("device-view-more-toggled");
|
| - updateViewMoreTitle();
|
| - }
|
| -
|
| - function updateViewMoreTitle()
|
| - {
|
| - viewMore.textContent = pages.classList.contains("device-view-more-toggled") ? WebInspector.UIString("View less tabs\u2026") : WebInspector.UIString("View more tabs\u2026");
|
| - }
|
| -
|
| - /**
|
| - * @param {!Event} event
|
| - */
|
| - function newTabKeyDown(event)
|
| - {
|
| - if (event.key === "Enter") {
|
| - event.consume(true);
|
| - openNewTab();
|
| - }
|
| - }
|
| -
|
| - function openNewTab()
|
| - {
|
| - if (section.browser) {
|
| - InspectorFrontendHost.openRemotePage(section.browser.id, newTabInput.value.trim() || "about:blank");
|
| - newTabInput.value = "";
|
| - }
|
| - }
|
| - },
|
| + function newTabKeyDown(event) {
|
| + if (event.key === 'Enter') {
|
| + event.consume(true);
|
| + openNewTab();
|
| + }
|
| + }
|
| +
|
| + function openNewTab() {
|
| + if (section.browser) {
|
| + InspectorFrontendHost.openRemotePage(section.browser.id, newTabInput.value.trim() || 'about:blank');
|
| + newTabInput.value = '';
|
| + }
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DevicesView.BrowserSection} section
|
| + * @param {!Adb.Browser} browser
|
| + */
|
| + _updateBrowserSection(section, browser) {
|
| + if (!section.browser || section.browser.adbBrowserName !== browser.adbBrowserName ||
|
| + section.browser.adbBrowserVersion !== browser.adbBrowserVersion) {
|
| + if (browser.adbBrowserVersion)
|
| + section.title.textContent = String.sprintf('%s (%s)', browser.adbBrowserName, browser.adbBrowserVersion);
|
| + else
|
| + section.title.textContent = browser.adbBrowserName;
|
| + }
|
| +
|
| + var pageIds = new Set();
|
| + for (var page of browser.pages)
|
| + pageIds.add(page.id);
|
| +
|
| + for (var pageId of section.pageSections.keys()) {
|
| + if (!pageIds.has(pageId)) {
|
| + section.pageSections.get(pageId).element.remove();
|
| + section.pageSections.remove(pageId);
|
| + }
|
| + }
|
| +
|
| + for (var index = 0; index < browser.pages.length; ++index) {
|
| + var page = browser.pages[index];
|
| + var pageSection = section.pageSections.get(page.id);
|
| + if (!pageSection) {
|
| + pageSection = this._createPageSection();
|
| + section.pageSections.set(page.id, pageSection);
|
| + section.pages.appendChild(pageSection.element);
|
| + }
|
| + this._updatePageSection(pageSection, page);
|
| + if (!index && section.pages.firstChild !== pageSection.element)
|
| + section.pages.insertBefore(pageSection.element, section.pages.firstChild);
|
| + }
|
| +
|
| + var kViewMoreCount = 3;
|
| + for (var index = 0, element = section.pages.firstChild; element; element = element.nextSibling, ++index)
|
| + element.classList.toggle('device-view-more-page', index >= kViewMoreCount);
|
| + section.viewMore.classList.toggle('device-needs-view-more', browser.pages.length > kViewMoreCount);
|
| + section.newTab.classList.toggle('hidden', !browser.adbBrowserChromeVersion);
|
| + section.browser = browser;
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.DevicesView.PageSection}
|
| + */
|
| + _createPageSection() {
|
| + var element = createElementWithClass('div', 'vbox');
|
| +
|
| + var titleRow = element.createChild('div', 'device-page-title-row');
|
| + var title = titleRow.createChild('div', 'device-page-title');
|
| + var inspect =
|
| + createTextButton(WebInspector.UIString('Inspect'), doAction.bind(null, 'inspect'), 'device-inspect-button');
|
| + titleRow.appendChild(inspect);
|
| +
|
| + var toolbar = new WebInspector.Toolbar('');
|
| + toolbar.appendToolbarItem(new WebInspector.ToolbarMenuButton(appendActions));
|
| + titleRow.appendChild(toolbar.element);
|
| +
|
| + var url = element.createChild('div', 'device-page-url');
|
| + var section = {page: null, element: element, title: title, url: url, inspect: inspect};
|
| + return section;
|
|
|
| /**
|
| - * @param {!WebInspector.DevicesView.BrowserSection} section
|
| - * @param {!Adb.Browser} browser
|
| + * @param {!WebInspector.ContextMenu} contextMenu
|
| */
|
| - _updateBrowserSection: function(section, browser)
|
| - {
|
| - if (!section.browser || section.browser.adbBrowserName !== browser.adbBrowserName || section.browser.adbBrowserVersion !== browser.adbBrowserVersion) {
|
| - if (browser.adbBrowserVersion)
|
| - section.title.textContent = String.sprintf("%s (%s)", browser.adbBrowserName, browser.adbBrowserVersion);
|
| - else
|
| - section.title.textContent = browser.adbBrowserName;
|
| - }
|
| -
|
| - var pageIds = new Set();
|
| - for (var page of browser.pages)
|
| - pageIds.add(page.id);
|
| -
|
| - for (var pageId of section.pageSections.keys()) {
|
| - if (!pageIds.has(pageId)) {
|
| - section.pageSections.get(pageId).element.remove();
|
| - section.pageSections.remove(pageId);
|
| - }
|
| - }
|
| -
|
| - for (var index = 0; index < browser.pages.length; ++index) {
|
| - var page = browser.pages[index];
|
| - var pageSection = section.pageSections.get(page.id);
|
| - if (!pageSection) {
|
| - pageSection = this._createPageSection();
|
| - section.pageSections.set(page.id, pageSection);
|
| - section.pages.appendChild(pageSection.element);
|
| - }
|
| - this._updatePageSection(pageSection, page);
|
| - if (!index && section.pages.firstChild !== pageSection.element)
|
| - section.pages.insertBefore(pageSection.element, section.pages.firstChild);
|
| - }
|
| -
|
| - var kViewMoreCount = 3;
|
| - for (var index = 0, element = section.pages.firstChild; element; element = element.nextSibling, ++index)
|
| - element.classList.toggle("device-view-more-page", index >= kViewMoreCount);
|
| - section.viewMore.classList.toggle("device-needs-view-more", browser.pages.length > kViewMoreCount);
|
| - section.newTab.classList.toggle("hidden", !browser.adbBrowserChromeVersion);
|
| - section.browser = browser;
|
| - },
|
| + function appendActions(contextMenu) {
|
| + contextMenu.appendItem(WebInspector.UIString('Reload'), doAction.bind(null, 'reload'));
|
| + contextMenu.appendItem(WebInspector.UIString('Focus'), doAction.bind(null, 'activate'));
|
| + contextMenu.appendItem(WebInspector.UIString('Close'), doAction.bind(null, 'close'));
|
| + }
|
|
|
| /**
|
| - * @return {!WebInspector.DevicesView.PageSection}
|
| + * @param {string} action
|
| */
|
| - _createPageSection: function()
|
| - {
|
| - var element = createElementWithClass("div", "vbox");
|
| -
|
| - var titleRow = element.createChild("div", "device-page-title-row");
|
| - var title = titleRow.createChild("div", "device-page-title");
|
| - var inspect = createTextButton(WebInspector.UIString("Inspect"), doAction.bind(null, "inspect"), "device-inspect-button");
|
| - titleRow.appendChild(inspect);
|
| -
|
| - var toolbar = new WebInspector.Toolbar("");
|
| - toolbar.appendToolbarItem(new WebInspector.ToolbarMenuButton(appendActions));
|
| - titleRow.appendChild(toolbar.element);
|
| -
|
| - var url = element.createChild("div", "device-page-url");
|
| - var section = {page: null, element: element, title: title, url: url, inspect: inspect};
|
| - return section;
|
| -
|
| - /**
|
| - * @param {!WebInspector.ContextMenu} contextMenu
|
| - */
|
| - function appendActions(contextMenu)
|
| - {
|
| - contextMenu.appendItem(WebInspector.UIString("Reload"), doAction.bind(null, "reload"));
|
| - contextMenu.appendItem(WebInspector.UIString("Focus"), doAction.bind(null, "activate"));
|
| - contextMenu.appendItem(WebInspector.UIString("Close"), doAction.bind(null, "close"));
|
| - }
|
| -
|
| - /**
|
| - * @param {string} action
|
| - */
|
| - function doAction(action)
|
| - {
|
| - if (section.page)
|
| - InspectorFrontendHost.performActionOnRemotePage(section.page.id, action);
|
| - }
|
| - },
|
| + function doAction(action) {
|
| + if (section.page)
|
| + InspectorFrontendHost.performActionOnRemotePage(section.page.id, action);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DevicesView.PageSection} section
|
| + * @param {!Adb.Page} page
|
| + */
|
| + _updatePageSection(section, page) {
|
| + if (!section.page || section.page.name !== page.name) {
|
| + section.title.textContent = page.name;
|
| + section.title.title = page.name;
|
| + }
|
| + if (!section.page || section.page.url !== page.url) {
|
| + section.url.textContent = '';
|
| + section.url.appendChild(WebInspector.linkifyURLAsNode(page.url, undefined, undefined, true));
|
| + }
|
| + section.inspect.disabled = page.attached;
|
| +
|
| + section.page = page;
|
| + }
|
| +
|
| + /**
|
| + * @param {!Adb.DevicePortForwardingStatus} status
|
| + */
|
| + portForwardingStatusChanged(status) {
|
| + var json = JSON.stringify(status);
|
| + if (json === this._cachedPortStatus)
|
| + return;
|
| + this._cachedPortStatus = json;
|
| +
|
| + this._portStatus.removeChildren();
|
| + this._portStatus.createChild('div', 'device-port-status-text').textContent =
|
| + WebInspector.UIString('Port Forwarding:');
|
| + var connected = [];
|
| + var transient = [];
|
| + var error = [];
|
| + var empty = true;
|
| + for (var port in status.ports) {
|
| + if (!status.ports.hasOwnProperty(port))
|
| + continue;
|
| +
|
| + empty = false;
|
| + var portStatus = status.ports[port];
|
| + var portNumber = createElementWithClass('div', 'device-view-port-number monospace');
|
| + portNumber.textContent = ':' + port;
|
| + if (portStatus >= 0)
|
| + this._portStatus.appendChild(portNumber);
|
| + else
|
| + this._portStatus.insertBefore(portNumber, this._portStatus.firstChild);
|
| +
|
| + var portIcon = createElementWithClass('div', 'device-view-port-icon');
|
| + if (portStatus >= 0) {
|
| + connected.push(port);
|
| + } else if (portStatus === -1 || portStatus === -2) {
|
| + portIcon.classList.add('device-view-port-icon-transient');
|
| + transient.push(port);
|
| + } else if (portStatus < 0) {
|
| + portIcon.classList.add('device-view-port-icon-error');
|
| + error.push(port);
|
| + }
|
| + this._portStatus.insertBefore(portIcon, portNumber);
|
| + }
|
| +
|
| + var title = [];
|
| + if (connected.length)
|
| + title.push(WebInspector.UIString('Connected: %s', connected.join(', ')));
|
| + if (transient.length)
|
| + title.push(WebInspector.UIString('Transient: %s', transient.join(', ')));
|
| + if (error.length)
|
| + title.push(WebInspector.UIString('Error: %s', error.join(', ')));
|
| + this._portStatus.title = title.join('; ');
|
| + this._portStatus.classList.toggle('hidden', empty);
|
| + }
|
| +};
|
|
|
| - /**
|
| - * @param {!WebInspector.DevicesView.PageSection} section
|
| - * @param {!Adb.Page} page
|
| - */
|
| - _updatePageSection: function(section, page)
|
| - {
|
| - if (!section.page || section.page.name !== page.name) {
|
| - section.title.textContent = page.name;
|
| - section.title.title = page.name;
|
| - }
|
| - if (!section.page || section.page.url !== page.url) {
|
| - section.url.textContent = "";
|
| - section.url.appendChild(WebInspector.linkifyURLAsNode(page.url, undefined, undefined, true));
|
| - }
|
| - section.inspect.disabled = page.attached;
|
| -
|
| - section.page = page;
|
| - },
|
| +/** @typedef {!{browser: ?Adb.Browser, element: !Element, title: !Element, pages: !Element, viewMore: !Element, newTab: !Element, pageSections: !Map<string, !WebInspector.DevicesView.PageSection>}} */
|
| +WebInspector.DevicesView.BrowserSection;
|
|
|
| - /**
|
| - * @param {!Adb.DevicePortForwardingStatus} status
|
| - */
|
| - portForwardingStatusChanged: function(status)
|
| - {
|
| - var json = JSON.stringify(status);
|
| - if (json === this._cachedPortStatus)
|
| - return;
|
| - this._cachedPortStatus = json;
|
| -
|
| - this._portStatus.removeChildren();
|
| - this._portStatus.createChild("div", "device-port-status-text").textContent = WebInspector.UIString("Port Forwarding:");
|
| - var connected = [];
|
| - var transient = [];
|
| - var error = [];
|
| - var empty = true;
|
| - for (var port in status.ports) {
|
| - if (!status.ports.hasOwnProperty(port))
|
| - continue;
|
| -
|
| - empty = false;
|
| - var portStatus = status.ports[port];
|
| - var portNumber = createElementWithClass("div", "device-view-port-number monospace");
|
| - portNumber.textContent = ":" + port;
|
| - if (portStatus >= 0)
|
| - this._portStatus.appendChild(portNumber);
|
| - else
|
| - this._portStatus.insertBefore(portNumber, this._portStatus.firstChild);
|
| -
|
| - var portIcon = createElementWithClass("div", "device-view-port-icon");
|
| - if (portStatus >= 0) {
|
| - connected.push(port);
|
| - } else if (portStatus === -1 || portStatus === -2) {
|
| - portIcon.classList.add("device-view-port-icon-transient");
|
| - transient.push(port);
|
| - } else if (portStatus < 0) {
|
| - portIcon.classList.add("device-view-port-icon-error");
|
| - error.push(port);
|
| - }
|
| - this._portStatus.insertBefore(portIcon, portNumber);
|
| - }
|
| -
|
| - var title = [];
|
| - if (connected.length)
|
| - title.push(WebInspector.UIString("Connected: %s", connected.join(", ")));
|
| - if (transient.length)
|
| - title.push(WebInspector.UIString("Transient: %s", transient.join(", ")));
|
| - if (error.length)
|
| - title.push(WebInspector.UIString("Error: %s", error.join(", ")));
|
| - this._portStatus.title = title.join("; ");
|
| - this._portStatus.classList.toggle("hidden", empty);
|
| - },
|
| -
|
| - __proto__: WebInspector.VBox.prototype
|
| -};
|
| +/** @typedef {!{page: ?Adb.Page, element: !Element, title: !Element, url: !Element, inspect: !Element}} */
|
| +WebInspector.DevicesView.PageSection;
|
|
|