| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 /** | 4 /** |
| 5 * @unrestricted | 5 * @unrestricted |
| 6 */ | 6 */ |
| 7 Devices.DevicesView = class extends UI.VBox { | 7 Devices.DevicesView = class extends UI.VBox { |
| 8 constructor() { | 8 constructor() { |
| 9 super(true); | 9 super(true); |
| 10 this.registerRequiredCSS('devices/devicesView.css'); | 10 this.registerRequiredCSS('devices/devicesView.css'); |
| 11 this.contentElement.classList.add('devices-view'); | 11 this.contentElement.classList.add('devices-view'); |
| 12 if (Runtime.queryParam('nodeFrontend')) |
| 13 this.contentElement.classList.add('node-frontend'); |
| 12 | 14 |
| 13 var hbox = this.contentElement.createChild('div', 'hbox devices-container'); | 15 var hbox = this.contentElement.createChild('div', 'hbox devices-container'); |
| 14 var sidebar = hbox.createChild('div', 'devices-sidebar'); | 16 var sidebar = hbox.createChild('div', 'devices-sidebar'); |
| 15 sidebar.createChild('div', 'devices-view-title').createTextChild(Common.UISt
ring('Devices')); | 17 sidebar.createChild('div', 'devices-view-title').createTextChild(Common.UISt
ring('Devices')); |
| 16 this._sidebarList = sidebar.createChild('div', 'devices-sidebar-list'); | 18 this._sidebarList = sidebar.createChild('div', 'devices-sidebar-list'); |
| 17 | 19 |
| 18 this._discoveryView = new Devices.DevicesView.DiscoveryView(); | 20 this._discoveryView = new Devices.DevicesView.DiscoveryView(); |
| 19 this._sidebarListSpacer = this._sidebarList.createChild('div', 'devices-side
bar-spacer'); | 21 this._sidebarListSpacer = this._sidebarList.createChild('div', 'devices-side
bar-spacer'); |
| 20 this._discoveryListItem = this._sidebarList.createChild('div', 'devices-side
bar-item'); | 22 this._discoveryListItem = this._sidebarList.createChild('div', 'devices-side
bar-item'); |
| 21 this._discoveryListItem.textContent = Common.UIString('Settings'); | 23 this._discoveryListItem.textContent = Common.UIString('Settings'); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 return listItem; | 149 return listItem; |
| 148 } | 150 } |
| 149 | 151 |
| 150 /** | 152 /** |
| 151 * @param {!Common.Event} event | 153 * @param {!Common.Event} event |
| 152 */ | 154 */ |
| 153 _devicesDiscoveryConfigChanged(event) { | 155 _devicesDiscoveryConfigChanged(event) { |
| 154 var discoverUsbDevices = /** @type {boolean} */ (event.data['discoverUsbDevi
ces']); | 156 var discoverUsbDevices = /** @type {boolean} */ (event.data['discoverUsbDevi
ces']); |
| 155 var portForwardingEnabled = /** @type {boolean} */ (event.data['portForwardi
ngEnabled']); | 157 var portForwardingEnabled = /** @type {boolean} */ (event.data['portForwardi
ngEnabled']); |
| 156 var portForwardingConfig = /** @type {!Adb.PortForwardingConfig} */ (event.d
ata['portForwardingConfig']); | 158 var portForwardingConfig = /** @type {!Adb.PortForwardingConfig} */ (event.d
ata['portForwardingConfig']); |
| 157 this._discoveryView.discoveryConfigChanged(discoverUsbDevices, portForwardin
gEnabled, portForwardingConfig); | 159 var networkDiscoveryEnabled = /** @type {boolean} */ (event.data['networkDis
coveryEnabled']); |
| 160 var networkDiscoveryConfig = /** @type {!Adb.NetworkDiscoveryConfig} */ (eve
nt.data['networkDiscoveryConfig']); |
| 161 this._discoveryView.discoveryConfigChanged( |
| 162 discoverUsbDevices, portForwardingEnabled, portForwardingConfig, network
DiscoveryEnabled, |
| 163 networkDiscoveryConfig); |
| 158 } | 164 } |
| 159 | 165 |
| 160 /** | 166 /** |
| 161 * @param {!Common.Event} event | 167 * @param {!Common.Event} event |
| 162 */ | 168 */ |
| 163 _devicesPortForwardingStatusChanged(event) { | 169 _devicesPortForwardingStatusChanged(event) { |
| 164 var status = /** @type {!Adb.PortForwardingStatus} */ (event.data); | 170 var status = /** @type {!Adb.PortForwardingStatus} */ (event.data); |
| 165 for (var deviceId in status) { | 171 for (var deviceId in status) { |
| 166 var view = this._viewById.get(deviceId); | 172 var view = this._viewById.get(deviceId); |
| 167 if (view) | 173 if (view) |
| (...skipping 11 matching lines...) Expand all Loading... |
| 179 Common.UIString('No devices detected.') : | 185 Common.UIString('No devices detected.') : |
| 180 this._devices.length === 1 ? Common.UIString('1 device detected.') : | 186 this._devices.length === 1 ? Common.UIString('1 device detected.') : |
| 181 Common.UIString('%d devices detected.', thi
s._devices.length); | 187 Common.UIString('%d devices detected.', thi
s._devices.length); |
| 182 } | 188 } |
| 183 | 189 |
| 184 /** | 190 /** |
| 185 * @override | 191 * @override |
| 186 */ | 192 */ |
| 187 wasShown() { | 193 wasShown() { |
| 188 super.wasShown(); | 194 super.wasShown(); |
| 195 // Retrigger notification first time. |
| 196 if (Runtime.queryParam('nodeFrontend')) |
| 197 InspectorFrontendHost.setDevicesUpdatesEnabled(false); |
| 189 InspectorFrontendHost.setDevicesUpdatesEnabled(true); | 198 InspectorFrontendHost.setDevicesUpdatesEnabled(true); |
| 190 } | 199 } |
| 191 | 200 |
| 192 /** | 201 /** |
| 193 * @override | 202 * @override |
| 194 */ | 203 */ |
| 195 willHide() { | 204 willHide() { |
| 196 super.wasShown(); | 205 super.wasShown(); |
| 197 InspectorFrontendHost.setDevicesUpdatesEnabled(false); | 206 if (!Runtime.queryParam('nodeFrontend')) |
| 207 InspectorFrontendHost.setDevicesUpdatesEnabled(false); |
| 198 } | 208 } |
| 199 }; | 209 }; |
| 200 | 210 |
| 201 | 211 |
| 202 /** | 212 /** |
| 203 * @implements {UI.ListWidget.Delegate} | |
| 204 * @unrestricted | 213 * @unrestricted |
| 205 */ | 214 */ |
| 206 Devices.DevicesView.DiscoveryView = class extends UI.VBox { | 215 Devices.DevicesView.DiscoveryView = class extends UI.VBox { |
| 207 constructor() { | 216 constructor() { |
| 208 super(); | 217 super(); |
| 209 this.setMinimumSize(100, 100); | 218 this.setMinimumSize(100, 100); |
| 210 this.element.classList.add('discovery-view'); | 219 this.element.classList.add('discovery-view'); |
| 211 | 220 |
| 212 this.contentElement.createChild('div', 'hbox device-text-row').createChild('
div', 'view-title').textContent = | 221 this.contentElement.createChild('div', 'hbox device-text-row').createChild('
div', 'view-title').textContent = |
| 213 Common.UIString('Settings'); | 222 Common.UIString('Settings'); |
| 214 | 223 |
| 215 var discoverUsbDevicesCheckbox = UI.CheckboxLabel.create(Common.UIString('Di
scover USB devices')); | 224 var discoverUsbDevicesCheckbox = UI.CheckboxLabel.create(Common.UIString('Di
scover USB devices')); |
| 216 discoverUsbDevicesCheckbox.classList.add('usb-checkbox'); | 225 discoverUsbDevicesCheckbox.classList.add('usb-checkbox'); |
| 217 this.element.appendChild(discoverUsbDevicesCheckbox); | 226 this.element.appendChild(discoverUsbDevicesCheckbox); |
| 218 this._discoverUsbDevicesCheckbox = discoverUsbDevicesCheckbox.checkboxElemen
t; | 227 this._discoverUsbDevicesCheckbox = discoverUsbDevicesCheckbox.checkboxElemen
t; |
| 219 this._discoverUsbDevicesCheckbox.addEventListener('click', this._updateDisco
veryConfig.bind(this), false); | 228 this._discoverUsbDevicesCheckbox.addEventListener('click', this._updateDisco
veryConfig.bind(this), false); |
| 220 | 229 |
| 221 var help = this.element.createChild('div', 'discovery-help'); | 230 var help = this.element.createChild('div', 'discovery-help'); |
| 222 help.createChild('span').textContent = Common.UIString('Need help? Read Chro
me '); | 231 help.createChild('span').textContent = Common.UIString('Need help? Read Chro
me '); |
| 223 help.appendChild(UI.createExternalLink( | 232 help.appendChild(UI.createExternalLink( |
| 224 'https://developers.google.com/chrome-developer-tools/docs/remote-debugg
ing', | 233 'https://developers.google.com/chrome-developer-tools/docs/remote-debugg
ing', |
| 225 Common.UIString('remote debugging documentation.'))); | 234 Common.UIString('remote debugging documentation.'))); |
| 226 | 235 |
| 236 this._portForwardingView = new Devices.DevicesView.PortForwardingView(this); |
| 237 this._portForwardingView.show(this.element); |
| 238 |
| 239 this._networkDiscoveryView = new Devices.DevicesView.NetworkDiscoveryView(th
is); |
| 240 this._networkDiscoveryView.show(this.element); |
| 241 } |
| 242 |
| 243 /** |
| 244 * @param {boolean} discoverUsbDevices |
| 245 * @param {boolean} portForwardingEnabled |
| 246 * @param {!Adb.PortForwardingConfig} portForwardingConfig |
| 247 * @param {boolean} networkDiscoveryEnabled |
| 248 * @param {!Adb.NetworkDiscoveryConfig} networkDiscoveryConfig |
| 249 */ |
| 250 discoveryConfigChanged( |
| 251 discoverUsbDevices, portForwardingEnabled, portForwardingConfig, networkDi
scoveryEnabled, |
| 252 networkDiscoveryConfig) { |
| 253 this._discoverUsbDevicesCheckbox.checked = discoverUsbDevices; |
| 254 this._portForwardingView.discoveryConfigChanged(portForwardingEnabled, portF
orwardingConfig); |
| 255 this._networkDiscoveryView.discoveryConfigChanged(networkDiscoveryEnabled, n
etworkDiscoveryConfig); |
| 256 } |
| 257 |
| 258 _updateDiscoveryConfig() { |
| 259 var configMap = /** @type {!Adb.PortForwardingConfig} */ ({}); |
| 260 for (var rule of this._portForwardingView._portForwardingConfig) |
| 261 configMap[rule.port] = rule.address; |
| 262 var networkTargets = this._networkDiscoveryView._networkDiscoveryConfig.map(
item => item.address); |
| 263 InspectorFrontendHost.setDevicesDiscoveryConfig( |
| 264 this._discoverUsbDevicesCheckbox.checked, this._portForwardingView._port
ForwardingEnabledCheckbox.checked, |
| 265 configMap, this._networkDiscoveryView._networkDiscoveryEnabled, networkT
argets); |
| 266 } |
| 267 }; |
| 268 |
| 269 /** |
| 270 * @implements {UI.ListWidget.Delegate} |
| 271 * @unrestricted |
| 272 */ |
| 273 Devices.DevicesView.PortForwardingView = class extends UI.VBox { |
| 274 /** |
| 275 * @param {!Devices.DevicesView.DiscoveryView} discoveryView |
| 276 */ |
| 277 constructor(discoveryView) { |
| 278 super(); |
| 279 this._discoveryView = discoveryView; |
| 280 this.element.classList.add('port-forwarding-view'); |
| 281 |
| 227 var portForwardingHeader = this.element.createChild('div', 'port-forwarding-
header'); | 282 var portForwardingHeader = this.element.createChild('div', 'port-forwarding-
header'); |
| 228 var portForwardingEnabledCheckbox = UI.CheckboxLabel.create(Common.UIString(
'Port forwarding')); | 283 var portForwardingEnabledCheckbox = UI.CheckboxLabel.create(Common.UIString(
'Port forwarding')); |
| 229 portForwardingEnabledCheckbox.classList.add('port-forwarding-checkbox'); | 284 portForwardingEnabledCheckbox.classList.add('port-forwarding-checkbox'); |
| 230 portForwardingHeader.appendChild(portForwardingEnabledCheckbox); | 285 portForwardingHeader.appendChild(portForwardingEnabledCheckbox); |
| 231 this._portForwardingEnabledCheckbox = portForwardingEnabledCheckbox.checkbox
Element; | 286 this._portForwardingEnabledCheckbox = portForwardingEnabledCheckbox.checkbox
Element; |
| 232 this._portForwardingEnabledCheckbox.addEventListener('click', this._updateDi
scoveryConfig.bind(this), false); | 287 this._portForwardingEnabledCheckbox.addEventListener( |
| 288 'click', this._discoveryView._updateDiscoveryConfig.bind(this._discovery
View), false); |
| 233 | 289 |
| 234 var portForwardingFooter = this.element.createChild('div', 'port-forwarding-
footer'); | 290 var portForwardingFooter = this.element.createChild('div', 'port-forwarding-
footer'); |
| 235 portForwardingFooter.createChild('span').textContent = Common.UIString( | 291 portForwardingFooter.createChild('span').textContent = Common.UIString( |
| 236 'Define the listening port on your device that maps to a port accessible
from your development machine. '); | 292 'Define the listening port on your device that maps to a port accessible
from your development machine. '); |
| 237 portForwardingFooter.appendChild(UI.createExternalLink( | 293 portForwardingFooter.appendChild(UI.createExternalLink( |
| 238 'https://developer.chrome.com/devtools/docs/remote-debugging#port-forwar
ding', Common.UIString('Learn more'))); | 294 'https://developer.chrome.com/devtools/docs/remote-debugging#port-forwar
ding', Common.UIString('Learn more'))); |
| 239 | 295 |
| 240 this._list = new UI.ListWidget(this); | 296 this._list = new UI.ListWidget(this); |
| 241 this._list.registerRequiredCSS('devices/devicesView.css'); | 297 this._list.registerRequiredCSS('devices/devicesView.css'); |
| 242 this._list.element.classList.add('port-forwarding-list'); | 298 this._list.element.classList.add('port-forwarding-list'); |
| 243 var placeholder = createElementWithClass('div', 'port-forwarding-list-empty'
); | 299 var placeholder = createElementWithClass('div', 'port-forwarding-list-empty'
); |
| 244 placeholder.textContent = Common.UIString('No rules'); | 300 placeholder.textContent = Common.UIString('No rules'); |
| 245 this._list.setEmptyPlaceholder(placeholder); | 301 this._list.setEmptyPlaceholder(placeholder); |
| 246 this._list.show(this.element); | 302 this._list.show(this.element); |
| 247 | 303 |
| 248 this.element.appendChild( | 304 this.element.appendChild( |
| 249 UI.createTextButton(Common.UIString('Add rule'), this._addRuleButtonClic
ked.bind(this), 'add-rule-button')); | 305 UI.createTextButton(Common.UIString('Add rule'), this._addRuleButtonClic
ked.bind(this), 'add-rule-button')); |
| 250 | 306 |
| 251 /** @type {!Array<!Adb.PortForwardingRule>} */ | 307 /** @type {!Array<!Adb.PortForwardingRule>} */ |
| 252 this._portForwardingConfig = []; | 308 this._portForwardingConfig = []; |
| 253 } | 309 } |
| 254 | 310 |
| 255 _addRuleButtonClicked() { | 311 _addRuleButtonClicked() { |
| 256 this._list.addNewItem(this._portForwardingConfig.length, {port: '', address:
''}); | 312 this._list.addNewItem(this._portForwardingConfig.length, {port: '', address:
''}); |
| 257 } | 313 } |
| 258 | 314 |
| 259 /** | 315 /** |
| 260 * @param {boolean} discoverUsbDevices | |
| 261 * @param {boolean} portForwardingEnabled | 316 * @param {boolean} portForwardingEnabled |
| 262 * @param {!Adb.PortForwardingConfig} portForwardingConfig | 317 * @param {!Adb.PortForwardingConfig} portForwardingConfig |
| 263 */ | 318 */ |
| 264 discoveryConfigChanged(discoverUsbDevices, portForwardingEnabled, portForwardi
ngConfig) { | 319 discoveryConfigChanged(portForwardingEnabled, portForwardingConfig) { |
| 265 this._discoverUsbDevicesCheckbox.checked = discoverUsbDevices; | |
| 266 this._portForwardingEnabledCheckbox.checked = portForwardingEnabled; | 320 this._portForwardingEnabledCheckbox.checked = portForwardingEnabled; |
| 267 | |
| 268 this._portForwardingConfig = []; | 321 this._portForwardingConfig = []; |
| 269 this._list.clear(); | 322 this._list.clear(); |
| 270 for (var key of Object.keys(portForwardingConfig)) { | 323 for (var key of Object.keys(portForwardingConfig)) { |
| 271 var rule = /** @type {!Adb.PortForwardingRule} */ ({port: key, address: po
rtForwardingConfig[key]}); | 324 var rule = /** @type {!Adb.PortForwardingRule} */ ({port: key, address: po
rtForwardingConfig[key]}); |
| 272 this._portForwardingConfig.push(rule); | 325 this._portForwardingConfig.push(rule); |
| 273 this._list.appendItem(rule, true); | 326 this._list.appendItem(rule, true); |
| 274 } | 327 } |
| 275 } | 328 } |
| 276 | 329 |
| 277 /** | 330 /** |
| (...skipping 14 matching lines...) Expand all Loading... |
| 292 } | 345 } |
| 293 | 346 |
| 294 /** | 347 /** |
| 295 * @override | 348 * @override |
| 296 * @param {*} item | 349 * @param {*} item |
| 297 * @param {number} index | 350 * @param {number} index |
| 298 */ | 351 */ |
| 299 removeItemRequested(item, index) { | 352 removeItemRequested(item, index) { |
| 300 this._portForwardingConfig.splice(index, 1); | 353 this._portForwardingConfig.splice(index, 1); |
| 301 this._list.removeItem(index); | 354 this._list.removeItem(index); |
| 302 this._updateDiscoveryConfig(); | 355 this._discoveryView._updateDiscoveryConfig(); |
| 303 } | 356 } |
| 304 | 357 |
| 305 /** | 358 /** |
| 306 * @override | 359 * @override |
| 307 * @param {*} item | 360 * @param {*} item |
| 308 * @param {!UI.ListWidget.Editor} editor | 361 * @param {!UI.ListWidget.Editor} editor |
| 309 * @param {boolean} isNew | 362 * @param {boolean} isNew |
| 310 */ | 363 */ |
| 311 commitEdit(item, editor, isNew) { | 364 commitEdit(item, editor, isNew) { |
| 312 var rule = /** @type {!Adb.PortForwardingRule} */ (item); | 365 var rule = /** @type {!Adb.PortForwardingRule} */ (item); |
| 313 rule.port = editor.control('port').value.trim(); | 366 rule.port = editor.control('port').value.trim(); |
| 314 rule.address = editor.control('address').value.trim(); | 367 rule.address = editor.control('address').value.trim(); |
| 315 if (isNew) | 368 if (isNew) |
| 316 this._portForwardingConfig.push(rule); | 369 this._portForwardingConfig.push(rule); |
| 317 this._updateDiscoveryConfig(); | 370 this._discoveryView._updateDiscoveryConfig(); |
| 318 } | 371 } |
| 319 | 372 |
| 320 /** | 373 /** |
| 321 * @override | 374 * @override |
| 322 * @param {*} item | 375 * @param {*} item |
| 323 * @return {!UI.ListWidget.Editor} | 376 * @return {!UI.ListWidget.Editor} |
| 324 */ | 377 */ |
| 325 beginEdit(item) { | 378 beginEdit(item) { |
| 326 var rule = /** @type {!Adb.PortForwardingRule} */ (item); | 379 var rule = /** @type {!Adb.PortForwardingRule} */ (item); |
| 327 var editor = this._createEditor(); | 380 var editor = this._createEditor(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 345 .appendChild(editor.createInput('port', 'text', 'Device port (3333)', po
rtValidator.bind(this))); | 398 .appendChild(editor.createInput('port', 'text', 'Device port (3333)', po
rtValidator.bind(this))); |
| 346 fields.createChild('div', 'port-forwarding-separator port-forwarding-separat
or-invisible'); | 399 fields.createChild('div', 'port-forwarding-separator port-forwarding-separat
or-invisible'); |
| 347 fields.createChild('div', 'port-forwarding-value') | 400 fields.createChild('div', 'port-forwarding-value') |
| 348 .appendChild(editor.createInput('address', 'text', 'Local address (dev.e
xample.corp:3333)', addressValidator)); | 401 .appendChild(editor.createInput('address', 'text', 'Local address (dev.e
xample.corp:3333)', addressValidator)); |
| 349 return editor; | 402 return editor; |
| 350 | 403 |
| 351 /** | 404 /** |
| 352 * @param {*} item | 405 * @param {*} item |
| 353 * @param {number} index | 406 * @param {number} index |
| 354 * @param {!HTMLInputElement|!HTMLSelectElement} input | 407 * @param {!HTMLInputElement|!HTMLSelectElement} input |
| 355 * @this {Devices.DevicesView.DiscoveryView} | 408 * @this {Devices.DevicesView.PortForwardingView} |
| 356 * @return {boolean} | 409 * @return {boolean} |
| 357 */ | 410 */ |
| 358 function portValidator(item, index, input) { | 411 function portValidator(item, index, input) { |
| 359 var value = input.value.trim(); | 412 var value = input.value.trim(); |
| 360 var match = value.match(/^(\d+)$/); | 413 var match = value.match(/^(\d+)$/); |
| 361 if (!match) | 414 if (!match) |
| 362 return false; | 415 return false; |
| 363 var port = parseInt(match[1], 10); | 416 var port = parseInt(match[1], 10); |
| 364 if (port < 1024 || port > 65535) | 417 if (port < 1024 || port > 65535) |
| 365 return false; | 418 return false; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 377 * @return {boolean} | 430 * @return {boolean} |
| 378 */ | 431 */ |
| 379 function addressValidator(item, index, input) { | 432 function addressValidator(item, index, input) { |
| 380 var match = input.value.trim().match(/^([a-zA-Z0-9\.\-_]+):(\d+)$/); | 433 var match = input.value.trim().match(/^([a-zA-Z0-9\.\-_]+):(\d+)$/); |
| 381 if (!match) | 434 if (!match) |
| 382 return false; | 435 return false; |
| 383 var port = parseInt(match[2], 10); | 436 var port = parseInt(match[2], 10); |
| 384 return port <= 65535; | 437 return port <= 65535; |
| 385 } | 438 } |
| 386 } | 439 } |
| 440 }; |
| 387 | 441 |
| 388 _updateDiscoveryConfig() { | 442 /** |
| 389 var configMap = /** @type {!Adb.PortForwardingConfig} */ ({}); | 443 * @implements {UI.ListWidget.Delegate} |
| 390 for (var rule of this._portForwardingConfig) | 444 * @unrestricted |
| 391 configMap[rule.port] = rule.address; | 445 */ |
| 392 InspectorFrontendHost.setDevicesDiscoveryConfig( | 446 Devices.DevicesView.NetworkDiscoveryView = class extends UI.VBox { |
| 393 this._discoverUsbDevicesCheckbox.checked, this._portForwardingEnabledChe
ckbox.checked, configMap); | 447 /** |
| 448 * @param {!Devices.DevicesView.DiscoveryView} discoveryView |
| 449 */ |
| 450 constructor(discoveryView) { |
| 451 super(); |
| 452 this._discoveryView = discoveryView; |
| 453 this.element.classList.add('network-discovery-view'); |
| 454 |
| 455 var networkDiscoveryHeader = this.element.createChild('div', 'network-discov
ery-header'); |
| 456 var networkDiscoveryEnabledCheckbox = UI.CheckboxLabel.create(Common.UIStrin
g('Network targets')); |
| 457 networkDiscoveryEnabledCheckbox.classList.add('network-discovery-checkbox'); |
| 458 networkDiscoveryHeader.appendChild(networkDiscoveryEnabledCheckbox); |
| 459 this._networkDiscoveryEnabledCheckbox = networkDiscoveryEnabledCheckbox.chec
kboxElement; |
| 460 this._networkDiscoveryEnabledCheckbox.disabled = !!Runtime.queryParam('nodeF
rontend'); |
| 461 this._networkDiscoveryEnabledCheckbox.checked = !!Runtime.queryParam('nodeFr
ontend'); |
| 462 this._networkDiscoveryEnabledCheckbox.addEventListener('click', this._enable
dCheckboxClicked.bind(this), false); |
| 463 |
| 464 var networkDiscoveryFooter = this.element.createChild('div', 'network-discov
ery-footer'); |
| 465 networkDiscoveryFooter.createChild('span').textContent = Common.UIString('De
fine the target connection address'); |
| 466 |
| 467 this._list = new UI.ListWidget(this); |
| 468 this._list.registerRequiredCSS('devices/devicesView.css'); |
| 469 this._list.element.classList.add('network-discovery-list'); |
| 470 var placeholder = createElementWithClass('div', 'network-discovery-list-empt
y'); |
| 471 placeholder.textContent = Common.UIString('No addresses defined'); |
| 472 this._list.setEmptyPlaceholder(placeholder); |
| 473 this._list.show(this.element); |
| 474 |
| 475 this.element.appendChild(UI.createTextButton( |
| 476 Common.UIString('Add address'), this._addNetworkTargetButtonClicked.bind
(this), 'add-network-target-button')); |
| 477 |
| 478 /** @type {!Array<{address: string}>} */ |
| 479 this._networkDiscoveryConfig = []; |
| 480 this._networkDiscoveryEnabled = false; |
| 481 } |
| 482 |
| 483 _addNetworkTargetButtonClicked() { |
| 484 this._list.addNewItem(this._networkDiscoveryConfig.length, {address: ''}); |
| 485 } |
| 486 |
| 487 /** |
| 488 * @param {boolean} networkDiscoveryEnabled |
| 489 * @param {!Adb.NetworkDiscoveryConfig} networkDiscoveryConfig |
| 490 */ |
| 491 discoveryConfigChanged(networkDiscoveryEnabled, networkDiscoveryConfig) { |
| 492 this._networkDiscoveryEnabled = networkDiscoveryEnabled; |
| 493 if (!Runtime.queryParam('nodeFrontend')) |
| 494 this._networkDiscoveryEnabledCheckbox.checked = networkDiscoveryEnabled; |
| 495 this._networkDiscoveryConfig = []; |
| 496 this._list.clear(); |
| 497 for (var address of networkDiscoveryConfig) { |
| 498 var item = {address: address}; |
| 499 this._networkDiscoveryConfig.push(item); |
| 500 this._list.appendItem(item, true); |
| 501 } |
| 502 } |
| 503 |
| 504 _enabledCheckboxClicked() { |
| 505 if (!Runtime.queryParam('nodeFrontend')) { |
| 506 this._networkDiscoveryEnabled = this._networkDiscoveryEnabledCheckbox.chec
ked; |
| 507 this._discoveryView._updateDiscoveryConfig(); |
| 508 } |
| 509 } |
| 510 |
| 511 /** |
| 512 * @override |
| 513 * @param {*} item |
| 514 * @param {boolean} editable |
| 515 * @return {!Element} |
| 516 */ |
| 517 renderItem(item, editable) { |
| 518 var element = createElementWithClass('div', 'network-discovery-list-item'); |
| 519 element.createChild('div', 'network-discovery-value network-discovery-addres
s').textContent = |
| 520 /** @type {string} */ (item.address); |
| 521 return element; |
| 522 } |
| 523 |
| 524 /** |
| 525 * @override |
| 526 * @param {*} item |
| 527 * @param {number} index |
| 528 */ |
| 529 removeItemRequested(item, index) { |
| 530 this._networkDiscoveryConfig.splice(index, 1); |
| 531 this._list.removeItem(index); |
| 532 this._discoveryView._updateDiscoveryConfig(); |
| 533 } |
| 534 |
| 535 /** |
| 536 * @override |
| 537 * @param {*} item |
| 538 * @param {!UI.ListWidget.Editor} editor |
| 539 * @param {boolean} isNew |
| 540 */ |
| 541 commitEdit(item, editor, isNew) { |
| 542 item.address = editor.control('address').value.trim(); |
| 543 if (isNew) |
| 544 this._networkDiscoveryConfig.push(/** @type {{address: string}} */ (item))
; |
| 545 this._discoveryView._updateDiscoveryConfig(); |
| 546 } |
| 547 |
| 548 /** |
| 549 * @override |
| 550 * @param {*} item |
| 551 * @return {!UI.ListWidget.Editor} |
| 552 */ |
| 553 beginEdit(item) { |
| 554 var editor = this._createEditor(); |
| 555 editor.control('address').value = item.address; |
| 556 return editor; |
| 557 } |
| 558 |
| 559 /** |
| 560 * @return {!UI.ListWidget.Editor} |
| 561 */ |
| 562 _createEditor() { |
| 563 if (this._editor) |
| 564 return this._editor; |
| 565 |
| 566 var editor = new UI.ListWidget.Editor(); |
| 567 this._editor = editor; |
| 568 var content = editor.contentElement(); |
| 569 var fields = content.createChild('div', 'network-discovery-edit-row'); |
| 570 fields.createChild('div', 'network-discovery-value network-discovery-address
') |
| 571 .appendChild(editor.createInput('address', 'text', 'Local address (local
host:9229)', addressValidator)); |
| 572 return editor; |
| 573 |
| 574 /** |
| 575 * @param {*} item |
| 576 * @param {number} index |
| 577 * @param {!HTMLInputElement|!HTMLSelectElement} input |
| 578 * @return {boolean} |
| 579 */ |
| 580 function addressValidator(item, index, input) { |
| 581 var match = input.value.trim().match(/^([a-zA-Z0-9\.\-_]+):(\d+)$/); |
| 582 if (!match) |
| 583 return false; |
| 584 var port = parseInt(match[2], 10); |
| 585 return port <= 65535; |
| 586 } |
| 394 } | 587 } |
| 395 }; | 588 }; |
| 396 | 589 |
| 397 /** | 590 /** |
| 398 * @unrestricted | 591 * @unrestricted |
| 399 */ | 592 */ |
| 400 Devices.DevicesView.DeviceView = class extends UI.VBox { | 593 Devices.DevicesView.DeviceView = class extends UI.VBox { |
| 401 constructor() { | 594 constructor() { |
| 402 super(); | 595 super(); |
| 403 this.setMinimumSize(100, 100); | 596 this.setMinimumSize(100, 100); |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 this._portStatus.title = title.join('; '); | 869 this._portStatus.title = title.join('; '); |
| 677 this._portStatus.classList.toggle('hidden', empty); | 870 this._portStatus.classList.toggle('hidden', empty); |
| 678 } | 871 } |
| 679 }; | 872 }; |
| 680 | 873 |
| 681 /** @typedef {!{browser: ?Adb.Browser, element: !Element, title: !Element, pages
: !Element, viewMore: !Element, newTab: !Element, pageSections: !Map<string, !De
vices.DevicesView.PageSection>}} */ | 874 /** @typedef {!{browser: ?Adb.Browser, element: !Element, title: !Element, pages
: !Element, viewMore: !Element, newTab: !Element, pageSections: !Map<string, !De
vices.DevicesView.PageSection>}} */ |
| 682 Devices.DevicesView.BrowserSection; | 875 Devices.DevicesView.BrowserSection; |
| 683 | 876 |
| 684 /** @typedef {!{page: ?Adb.Page, element: !Element, title: !Element, url: !Eleme
nt, inspect: !Element}} */ | 877 /** @typedef {!{page: ?Adb.Page, element: !Element, title: !Element, url: !Eleme
nt, inspect: !Element}} */ |
| 685 Devices.DevicesView.PageSection; | 878 Devices.DevicesView.PageSection; |
| OLD | NEW |