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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/devices/DevicesView.js

Issue 2864263002: [DevTools] Expose TCP targets config in frontend, use it for Node (Closed)
Patch Set: works Created 3 years, 7 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
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
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
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
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
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
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
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;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698