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

Side by Side Diff: chrome/browser/resources/options2/chromeos/internet_detail.js

Issue 10809005: Options: Rename chrome/browser/resources/options2 -> chrome/browser/resources/options. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 cr.define('options.internet', function() {
6 var OptionsPage = options.OptionsPage;
7 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel;
8 /** @const */ var IPAddressField = options.internet.IPAddressField;
9
10 /**
11 * Network settings constants. These enums must match their C++
12 * counterparts.
13 */
14 function Constants() {}
15
16 // Network types:
17 Constants.TYPE_UNKNOWN = 0;
18 Constants.TYPE_ETHERNET = 1;
19 Constants.TYPE_WIFI = 2;
20 Constants.TYPE_WIMAX = 3;
21 Constants.TYPE_BLUETOOTH = 4;
22 Constants.TYPE_CELLULAR = 5;
23 Constants.TYPE_VPN = 6;
24
25 /*
26 * Helper function to set hidden attribute for elements matching a selector.
27 * @param {string} selector CSS selector for extracting a list of elements.
28 * @param {bool} hidden New hidden value.
29 */
30 function updateHidden(selector, hidden) {
31 var elements = cr.doc.querySelectorAll(selector);
32 for (var i = 0, el; el = elements[i]; i++) {
33 el.hidden = hidden;
34 }
35 }
36
37 /**
38 * Monitor pref change of given element.
39 * @param {Element} el Target element.
40 */
41 function observePrefsUI(el) {
42 Preferences.getInstance().addEventListener(el.pref, handlePrefUpdate);
43 }
44
45 /**
46 * UI pref change handler.
47 * @param {Event} e The update event.
48 */
49 function handlePrefUpdate(e) {
50 DetailsInternetPage.getInstance().updateControls();
51 }
52
53 /////////////////////////////////////////////////////////////////////////////
54 // DetailsInternetPage class:
55
56 /**
57 * Encapsulated handling of ChromeOS internet details overlay page.
58 * @constructor
59 */
60 function DetailsInternetPage() {
61 OptionsPage.call(this,
62 'detailsInternetPage',
63 null,
64 'details-internet-page');
65 }
66
67 cr.addSingletonGetter(DetailsInternetPage);
68
69 DetailsInternetPage.prototype = {
70 __proto__: OptionsPage.prototype,
71
72 /**
73 * Indicates if the list of proxy exceptions has been initialized.
74 * @type {boolean}
75 */
76 proxyListInitialized_: false,
77
78 /**
79 * Initializes DetailsInternetPage page.
80 * Calls base class implementation to starts preference initialization.
81 */
82 initializePage: function() {
83 OptionsPage.prototype.initializePage.call(this);
84 options.internet.CellularPlanElement.decorate($('plan-list'));
85 var params = parseQueryParams(window.location);
86 this.initializePageContents_(params);
87 this.showNetworkDetails_(params);
88 },
89
90 /**
91 * Auto-activates the network details dialog if network information
92 * is included in the URL.
93 */
94 showNetworkDetails_: function(params) {
95 var servicePath = params.servicePath;
96 var networkType = params.networkType;
97 if (!servicePath || !servicePath.length ||
98 !networkType || !networkType.length)
99 return;
100 chrome.send('networkCommand',
101 [networkType, servicePath, 'options']);
102 },
103
104 /**
105 * Initializes the contents of the page.
106 */
107 initializePageContents_: function(params) {
108 $('details-internet-dismiss').addEventListener('click', function(event) {
109 DetailsInternetPage.setDetails();
110 });
111
112 $('details-internet-login').addEventListener('click', function(event) {
113 DetailsInternetPage.setDetails();
114 DetailsInternetPage.loginFromDetails();
115 });
116
117 $('details-internet-disconnect').addEventListener('click',
118 function(event) {
119 DetailsInternetPage.setDetails();
120 DetailsInternetPage.disconnectNetwork();
121 });
122
123 $('activate-details').addEventListener('click', function(event) {
124 DetailsInternetPage.activateFromDetails();
125 });
126
127 $('buyplan-details').addEventListener('click', function(event) {
128 var data = $('connection-state').data;
129 chrome.send('buyDataPlan', [String(data.servicePath)]);
130 OptionsPage.closeOverlay();
131 });
132
133 $('view-account-details').addEventListener('click', function(event) {
134 chrome.send('showMorePlanInfo');
135 OptionsPage.closeOverlay();
136 });
137
138 $('cellular-apn-use-default').addEventListener('click', function(event) {
139 var data = $('connection-state').data;
140 var apnSelector = $('select-apn');
141
142 if (data.userApnIndex != -1) {
143 apnSelector.remove(data.userApnIndex);
144 data.userApnIndex = -1;
145 }
146
147 if (data.providerApnList.value.length > 0) {
148 var iApn = 0;
149 data.apn.apn = data.providerApnList.value[iApn].apn;
150 data.apn.username = data.providerApnList.value[iApn].username;
151 data.apn.password = data.providerApnList.value[iApn].password;
152 chrome.send('setApn', [String(data.servicePath),
153 String(data.apn.apn),
154 String(data.apn.username),
155 String(data.apn.password)]);
156 apnSelector.selectedIndex = iApn;
157 data.selectedApn = iApn;
158 } else {
159 data.apn.apn = '';
160 data.apn.username = '';
161 data.apn.password = '';
162 apnSelector.selectedIndex = -1;
163 data.selectedApn = -1;
164 }
165 updateHidden('.apn-list-view', false);
166 updateHidden('.apn-details-view', true);
167 });
168
169 $('cellular-apn-set').addEventListener('click', function(event) {
170 if ($('cellular-apn').value == '')
171 return;
172
173 var data = $('connection-state').data;
174 var apnSelector = $('select-apn');
175
176 data.apn.apn = String($('cellular-apn').value);
177 data.apn.username = String($('cellular-apn-username').value);
178 data.apn.password = String($('cellular-apn-password').value);
179 chrome.send('setApn', [String(data.servicePath),
180 String(data.apn.apn),
181 String(data.apn.username),
182 String(data.apn.password)]);
183
184 if (data.userApnIndex != -1) {
185 apnSelector.remove(data.userApnIndex);
186 data.userApnIndex = -1;
187 }
188
189 var option = document.createElement('option');
190 option.textContent = data.apn.apn;
191 option.value = -1;
192 option.selected = true;
193 apnSelector.add(option, apnSelector[apnSelector.length - 1]);
194 data.userApnIndex = apnSelector.length - 2;
195 data.selectedApn = data.userApnIndex;
196
197 updateHidden('.apn-list-view', false);
198 updateHidden('.apn-details-view', true);
199 });
200
201 $('cellular-apn-cancel').addEventListener('click', function(event) {
202 $('select-apn').selectedIndex = $('connection-state').data.selectedApn;
203 updateHidden('.apn-list-view', false);
204 updateHidden('.apn-details-view', true);
205 });
206
207 $('select-apn').addEventListener('change', function(event) {
208 var data = $('connection-state').data;
209 var apnSelector = $('select-apn');
210 if (apnSelector[apnSelector.selectedIndex].value != -1) {
211 var apnList = data.providerApnList.value;
212 chrome.send('setApn', [String(data.servicePath),
213 String(apnList[apnSelector.selectedIndex].apn),
214 String(apnList[apnSelector.selectedIndex].username),
215 String(apnList[apnSelector.selectedIndex].password)
216 ]);
217 data.selectedApn = apnSelector.selectedIndex;
218 } else if (apnSelector.selectedIndex == data.userApnIndex) {
219 chrome.send('setApn', [String(data.servicePath),
220 String(data.apn.apn),
221 String(data.apn.username),
222 String(data.apn.password)]);
223 data.selectedApn = apnSelector.selectedIndex;
224 } else {
225 $('cellular-apn').value = data.apn.apn;
226 $('cellular-apn-username').value = data.apn.username;
227 $('cellular-apn-password').value = data.apn.password;
228
229 updateHidden('.apn-list-view', true);
230 updateHidden('.apn-details-view', false);
231 }
232 });
233
234 $('sim-card-lock-enabled').addEventListener('click', function(event) {
235 var newValue = $('sim-card-lock-enabled').checked;
236 // Leave value as is because user needs to enter PIN code first.
237 // When PIN will be entered and value changed,
238 // we'll update UI to reflect that change.
239 $('sim-card-lock-enabled').checked = !newValue;
240 chrome.send('setSimCardLock', [newValue]);
241 });
242 $('change-pin').addEventListener('click', function(event) {
243 chrome.send('changePin');
244 });
245
246 // Proxy
247 options.proxyexceptions.ProxyExceptions.decorate($('ignored-host-list'));
248 $('remove-host').addEventListener('click',
249 this.handleRemoveProxyExceptions_);
250 $('add-host').addEventListener('click', this.handleAddProxyException_);
251 $('direct-proxy').addEventListener('click', this.disableManualProxy_);
252 $('manual-proxy').addEventListener('click', this.enableManualProxy_);
253 $('auto-proxy').addEventListener('click', this.disableManualProxy_);
254 $('proxy-all-protocols').addEventListener('click',
255 this.toggleSingleProxy_);
256
257 observePrefsUI($('direct-proxy'));
258 observePrefsUI($('manual-proxy'));
259 observePrefsUI($('auto-proxy'));
260 observePrefsUI($('proxy-all-protocols'));
261
262 $('ip-automatic-configuration-checkbox').addEventListener('click',
263 this.handleIpAutoConfig_);
264 $('automatic-dns-radio').addEventListener('click',
265 this.handleNameServerTypeChange_);
266 $('google-dns-radio').addEventListener('click',
267 this.handleNameServerTypeChange_);
268 $('user-dns-radio').addEventListener('click',
269 this.handleNameServerTypeChange_);
270 },
271
272 /**
273 * Handler for "add" event fired from userNameEdit.
274 * @param {Event} e Add event fired from userNameEdit.
275 * @private
276 */
277 handleAddProxyException_: function(e) {
278 var exception = $('new-host').value;
279 $('new-host').value = '';
280
281 exception = exception.trim();
282 if (exception)
283 $('ignored-host-list').addException(exception);
284 },
285
286 /**
287 * Handler for when the remove button is clicked
288 * @param {Event} e The click event.
289 * @private
290 */
291 handleRemoveProxyExceptions_: function(e) {
292 var selectedItems = $('ignored-host-list').selectedItems;
293 for (var x = 0; x < selectedItems.length; x++) {
294 $('ignored-host-list').removeException(selectedItems[x]);
295 }
296 },
297
298 /**
299 * Handler for when the IP automatic configuration checkbox is clicked.
300 * @param {Event} e The click event.
301 * @private
302 */
303 handleIpAutoConfig_: function(e) {
304 var checked = $('ip-automatic-configuration-checkbox').checked;
305 var fields = [$('ip-address'), $('ip-netmask'), $('ip-gateway')];
306 for (var i = 0; i < fields.length; ++i) {
307 fields[i].editable = !checked;
308 if (checked) {
309 var model = fields[i].model;
310 model.value = model.automatic;
311 fields[i].model = model;
312 }
313 }
314 if (!checked)
315 $('ip-address').focus();
316 },
317
318 /**
319 * Handler for when the name server selection changes.
320 * @param {Event} e The click event.
321 * @private
322 */
323 handleNameServerTypeChange_: function(event) {
324 var type = event.target.value;
325 DetailsInternetPage.updateNameServerDisplay(type);
326 },
327
328 /**
329 * Update details page controls.
330 * @private
331 */
332 updateControls: function() {
333 // Only show ipconfig section if network is connected OR if nothing on
334 // this device is connected. This is so that you can fix the ip configs
335 // if you can't connect to any network.
336 // TODO(chocobo): Once ipconfig is moved to flimflam service objects,
337 // we need to redo this logic to allow configuration of all networks.
338 $('ipconfig-section').hidden = !this.connected && this.deviceConnected;
339 $('ipconfig-dns-section').hidden =
340 !this.connected && this.deviceConnected;
341
342 // Network type related.
343 updateHidden('#details-internet-page .cellular-details', !this.cellular);
344 updateHidden('#details-internet-page .wifi-details', !this.wireless);
345 updateHidden('#details-internet-page .wimax-details', !this.wimax);
346 updateHidden('#details-internet-page .vpn-details', !this.vpn);
347 updateHidden('#details-internet-page .proxy-details', !this.showProxy);
348 /* Network information merged into the Wifi tab for wireless networks
349 unless the option is set for enabling a static IP configuration. */
350 updateHidden('#details-internet-page .network-details',
351 (this.wireless && !this.showStaticIPConfig) || this.vpn);
352 updateHidden('#details-internet-page .wifi-network-setting',
353 this.showStaticIPConfig);
354
355 // Cell plan related.
356 $('plan-list').hidden = this.cellplanloading;
357 updateHidden('#details-internet-page .no-plan-info',
358 !this.cellular || this.cellplanloading || this.hascellplan);
359 updateHidden('#details-internet-page .plan-loading-info',
360 !this.cellular || this.nocellplan || this.hascellplan);
361 updateHidden('#details-internet-page .plan-details-info',
362 !this.cellular || this.nocellplan || this.cellplanloading);
363 updateHidden('#details-internet-page .gsm-only',
364 !this.cellular || !this.gsm);
365 updateHidden('#details-internet-page .cdma-only',
366 !this.cellular || this.gsm);
367 updateHidden('#details-internet-page .apn-list-view',
368 !this.cellular || !this.gsm);
369 updateHidden('#details-internet-page .apn-details-view', true);
370
371 // Wifi - Password and shared.
372 updateHidden('#details-internet-page #password-details',
373 !this.wireless || !this.password);
374 updateHidden('#details-internet-page #wifi-shared-network',
375 !this.shared);
376 updateHidden('#details-internet-page #prefer-network',
377 !this.showPreferred);
378
379 // WiMAX.
380 updateHidden('#details-internet-page #wimax-shared-network',
381 !this.shared);
382
383 // Proxy
384 this.updateProxyBannerVisibility_();
385 this.toggleSingleProxy_();
386 if ($('manual-proxy').checked)
387 this.enableManualProxy_();
388 else
389 this.disableManualProxy_();
390 if (!this.proxyListInitialized_ && this.visible) {
391 this.proxyListInitialized_ = true;
392 $('ignored-host-list').redraw();
393 }
394 },
395
396 /**
397 * Updates info banner visibility state. This function shows the banner
398 * if proxy is managed or shared-proxies is off for shared network.
399 * @private
400 */
401 updateProxyBannerVisibility_: function() {
402 var bannerDiv = $('info-banner');
403 // Show banner and determine its message if necessary.
404 var controlledBy = $('direct-proxy').controlledBy;
405 if (!controlledBy || controlledBy == '') {
406 bannerDiv.hidden = true;
407 } else {
408 bannerDiv.hidden = false;
409 // controlledBy must match strings loaded in proxy_handler.cc and
410 // set in proxy_cros_settings_provider.cc.
411 $('banner-text').textContent = loadTimeData.getString(controlledBy);
412 }
413 },
414
415 /**
416 * Handler for when the user clicks on the checkbox to allow a
417 * single proxy usage.
418 * @private
419 * @param {Event} e Click Event.
420 */
421 toggleSingleProxy_: function(e) {
422 if ($('proxy-all-protocols').checked) {
423 $('multi-proxy').hidden = true;
424 $('single-proxy').hidden = false;
425 } else {
426 $('multi-proxy').hidden = false;
427 $('single-proxy').hidden = true;
428 }
429 },
430
431 /**
432 * Handler for selecting a radio button that will disable the manual
433 * controls.
434 * @private
435 * @param {Event} e Click event.
436 */
437 disableManualProxy_: function(e) {
438 $('advanced-config').hidden = true;
439 $('proxy-all-protocols').disabled = true;
440 $('proxy-host-name').disabled = true;
441 $('proxy-host-port').disabled = true;
442 $('proxy-host-single-name').disabled = true;
443 $('proxy-host-single-port').disabled = true;
444 $('secure-proxy-host-name').disabled = true;
445 $('secure-proxy-port').disabled = true;
446 $('ftp-proxy').disabled = true;
447 $('ftp-proxy-port').disabled = true;
448 $('socks-host').disabled = true;
449 $('socks-port').disabled = true;
450 $('proxy-config').disabled = $('auto-proxy').disabled ||
451 !$('auto-proxy').checked;
452 },
453
454 /**
455 * Handler for selecting a radio button that will enable the manual
456 * controls.
457 * @private
458 * @param {Event} e Click event.
459 */
460 enableManualProxy_: function(e) {
461 $('advanced-config').hidden = false;
462 $('ignored-host-list').redraw();
463 var all_disabled = $('manual-proxy').disabled;
464 $('new-host').disabled = all_disabled;
465 $('remove-host').disabled = all_disabled;
466 $('add-host').disabled = all_disabled;
467 $('proxy-all-protocols').disabled = all_disabled;
468 $('proxy-host-name').disabled = all_disabled;
469 $('proxy-host-port').disabled = all_disabled;
470 $('proxy-host-single-name').disabled = all_disabled;
471 $('proxy-host-single-port').disabled = all_disabled;
472 $('secure-proxy-host-name').disabled = all_disabled;
473 $('secure-proxy-port').disabled = all_disabled;
474 $('ftp-proxy').disabled = all_disabled;
475 $('ftp-proxy-port').disabled = all_disabled;
476 $('socks-host').disabled = all_disabled;
477 $('socks-port').disabled = all_disabled;
478 $('proxy-config').disabled = true;
479 },
480 };
481
482 /**
483 * Performs minimal initialization of the InternetDetails dialog in
484 * preparation for showing proxy-setttings.
485 */
486 DetailsInternetPage.initializeProxySettings = function() {
487 var detailsPage = DetailsInternetPage.getInstance();
488 detailsPage.initializePageContents_();
489 };
490
491 /**
492 * Displays the InternetDetails dialog with only the proxy settings visible.
493 */
494 DetailsInternetPage.showProxySettings = function() {
495 var detailsPage = DetailsInternetPage.getInstance();
496 $('network-details-header').hidden = true;
497 $('buyplan-details').hidden = true;
498 $('activate-details').hidden = true;
499 $('view-account-details').hidden = true;
500 detailsPage.cellular = false;
501 detailsPage.wireless = false;
502 detailsPage.vpn = false;
503 detailsPage.showProxy = true;
504 updateHidden('#internet-tab', true);
505 updateHidden('#details-tab-strip', true);
506 updateHidden('#details-internet-page .action-area', true);
507 detailsPage.updateControls();
508 detailsPage.visible = true;
509 };
510
511 DetailsInternetPage.updateCellularPlans = function(data) {
512 var detailsPage = DetailsInternetPage.getInstance();
513 detailsPage.cellplanloading = false;
514 if (data.plans && data.plans.length) {
515 detailsPage.nocellplan = false;
516 detailsPage.hascellplan = true;
517 $('plan-list').load(data.plans);
518 } else {
519 detailsPage.nocellplan = true;
520 detailsPage.hascellplan = false;
521 }
522
523 detailsPage.hasactiveplan = !data.needsPlan;
524 detailsPage.activated = data.activated;
525 if (!data.activated)
526 $('details-internet-login').hidden = true;
527
528 $('buyplan-details').hidden = !data.showBuyButton;
529 $('activate-details').hidden = !data.showActivateButton;
530 $('view-account-details').hidden = !data.showViewAccountButton;
531 };
532
533 DetailsInternetPage.updateSecurityTab = function(requirePin) {
534 $('sim-card-lock-enabled').checked = requirePin;
535 $('change-pin').hidden = !requirePin;
536 };
537
538
539 DetailsInternetPage.loginFromDetails = function() {
540 var data = $('connection-state').data;
541 var servicePath = data.servicePath;
542 chrome.send('networkCommand', [String(data.type),
543 servicePath,
544 'connect']);
545 OptionsPage.closeOverlay();
546 };
547
548 DetailsInternetPage.disconnectNetwork = function() {
549 var data = $('connection-state').data;
550 var servicePath = data.servicePath;
551 chrome.send('networkCommand', [String(data.type),
552 servicePath,
553 'disconnect']);
554 OptionsPage.closeOverlay();
555 };
556
557 DetailsInternetPage.activateFromDetails = function() {
558 var data = $('connection-state').data;
559 var servicePath = data.servicePath;
560 if (data.type == Constants.TYPE_CELLULAR) {
561 chrome.send('networkCommand', [String(data.type),
562 String(servicePath),
563 'activate']);
564 }
565 OptionsPage.closeOverlay();
566 };
567
568 DetailsInternetPage.setDetails = function() {
569 var data = $('connection-state').data;
570 var servicePath = data.servicePath;
571 if (data.type == Constants.TYPE_WIFI) {
572 chrome.send('setPreferNetwork',
573 [String(servicePath),
574 $('prefer-network-wifi').checked ? 'true' : 'false']);
575 chrome.send('setAutoConnect',
576 [String(servicePath),
577 $('auto-connect-network-wifi').checked ? 'true' : 'false']);
578 } else if (data.type == Constants.TYPE_WIMAX) {
579 chrome.send('setAutoConnect',
580 [String(servicePath),
581 $('auto-connect-network-wimax').checked ? 'true' : 'false']);
582 } else if (data.type == Constants.TYPE_CELLULAR) {
583 chrome.send('setAutoConnect',
584 [String(servicePath),
585 $('auto-connect-network-cellular').checked ? 'true' :
586 'false']);
587 }
588
589 var nameServerTypes = ['automatic', 'google', 'user'];
590 var nameServerType = 'automatic';
591 for (var i = 0; i < nameServerTypes.length; ++i) {
592 if ($(nameServerTypes[i] + '-dns-radio').checked) {
593 nameServerType = nameServerTypes[i];
594 break;
595 }
596 }
597
598 // Skip any empty values.
599 var userNameServers = [];
600 for (var i = 1; i <= 4; ++i) {
601 var nameServerField = $('ipconfig-dns' + i);
602 if (nameServerField && nameServerField.model &&
603 nameServerField.model.value) {
604 userNameServers.push(nameServerField.model.value);
605 }
606 }
607
608 userNameServers = userNameServers.join(',');
609
610 chrome.send('setIPConfig',
611 [servicePath,
612 Boolean($('ip-automatic-configuration-checkbox').checked),
613 $('ip-address').model.value || '',
614 $('ip-netmask').model.value || '',
615 $('ip-gateway').model.value || '',
616 nameServerType,
617 userNameServers]);
618 OptionsPage.closeOverlay();
619 };
620
621 DetailsInternetPage.updateNameServerDisplay = function(type) {
622 var editable = type == 'user';
623 var fields = [$('ipconfig-dns1'), $('ipconfig-dns2'),
624 $('ipconfig-dns3'), $('ipconfig-dns4')];
625 for (var i = 0; i < fields.length; ++i) {
626 fields[i].editable = editable;
627 }
628 if (editable)
629 $('ipconfig-dns1').focus();
630
631 var automaticDns = $('automatic-dns-display');
632 var googleDns = $('google-dns-display');
633 var userDns = $('user-dns-settings');
634 switch (type) {
635 case 'automatic':
636 automaticDns.setAttribute('selected', '');
637 googleDns.removeAttribute('selected');
638 userDns.removeAttribute('selected');
639 break;
640 case 'google':
641 automaticDns.removeAttribute('selected');
642 googleDns.setAttribute('selected', '');
643 userDns.removeAttribute('selected');
644 break;
645 case 'user':
646 automaticDns.removeAttribute('selected');
647 googleDns.removeAttribute('selected');
648 userDns.setAttribute('selected', '');
649 break;
650 }
651 };
652
653 DetailsInternetPage.showDetailedInfo = function(data) {
654 var detailsPage = DetailsInternetPage.getInstance();
655
656 // Populate header
657 $('network-details-title').textContent = data.networkName;
658 var statusKey = data.connected ? 'networkConnected' :
659 'networkNotConnected';
660 $('network-details-subtitle-status').textContent =
661 loadTimeData.getString(statusKey);
662 var typeKey = null;
663 switch (data.type) {
664 case Constants.TYPE_ETHERNET:
665 typeKey = 'ethernetTitle';
666 break;
667 case Constants.TYPE_WIFI:
668 typeKey = 'wifiTitle';
669 break;
670 case Constants.TYPE_WIMAX:
671 typeKey = 'wimaxTitle';
672 break;
673 case Constants.TYPE_CELLULAR:
674 typeKey = 'cellularTitle';
675 break;
676 case Constants.TYPE_VPN:
677 typeKey = 'vpnTitle';
678 break;
679 }
680 var typeLabel = $('network-details-subtitle-type');
681 var typeSeparator = $('network-details-subtitle-separator');
682 if (typeKey) {
683 typeLabel.textContent = loadTimeData.getString(typeKey);
684 typeLabel.hidden = false;
685 typeSeparator.hidden = false;
686 } else {
687 typeLabel.hidden = true;
688 typeSeparator.hidden = true;
689 }
690
691 // TODO(chocobo): Is this hack to cache the data here reasonable?
692 // TODO(kevers): Find more appropriate place to cache data.
693 $('connection-state').data = data;
694
695 $('buyplan-details').hidden = true;
696 $('activate-details').hidden = true;
697 $('view-account-details').hidden = true;
698 $('details-internet-login').hidden = data.connected;
699 if (data.type == Constants.TYPE_ETHERNET)
700 $('details-internet-disconnect').hidden = true;
701 else
702 $('details-internet-disconnect').hidden = !data.connected;
703
704 detailsPage.deviceConnected = data.deviceConnected;
705 detailsPage.connecting = data.connecting;
706 detailsPage.connected = data.connected;
707 detailsPage.showProxy = data.showProxy;
708 detailsPage.showStaticIPConfig = data.showStaticIPConfig;
709 $('connection-state').textContent = data.connectionState;
710
711 var ipAutoConfig = data.ipAutoConfig ? 'automatic' : 'user';
712 $('ip-automatic-configuration-checkbox').checked = data.ipAutoConfig;
713 var inetAddress = {autoConfig: ipAutoConfig};
714 var inetNetmask = {autoConfig: ipAutoConfig};
715 var inetGateway = {autoConfig: ipAutoConfig};
716
717 if (data.ipconfig.value) {
718 inetAddress.automatic = data.ipconfig.value.address;
719 inetAddress.value = data.ipconfig.value.address;
720 inetNetmask.automatic = data.ipconfig.value.netmask;
721 inetNetmask.value = data.ipconfig.value.netmask;
722 inetGateway.automatic = data.ipconfig.value.gateway;
723 inetGateway.value = data.ipconfig.value.gateway;
724 }
725
726 // Override the "automatic" values with the real saved DHCP values,
727 // if they are set.
728 if (data.savedIP.address) {
729 inetAddress.automatic = data.savedIP.address;
730 inetAddress.value = data.savedIP.address;
731 }
732 if (data.savedIP.netmask) {
733 inetNetmask.automatic = data.savedIP.netmask;
734 inetNetmask.value = data.savedIP.netmask;
735 }
736 if (data.savedIP.gateway) {
737 inetGateway.automatic = data.savedIP.gateway;
738 inetGateway.value = data.savedIP.gateway;
739 }
740
741 if (ipAutoConfig == 'user') {
742 if (data.staticIP.value.address) {
743 inetAddress.value = data.staticIP.value.address;
744 inetAddress.user = data.staticIP.value.address;
745 }
746 if (data.staticIP.value.netmask) {
747 inetNetmask.value = data.staticIP.value.netmask;
748 inetNetmask.user = data.staticIP.value.netmask;
749 }
750 if (data.staticIP.value.gateway) {
751 inetGateway.value = data.staticIP.value.gateway;
752 inetGateway.user = data.staticIP.value.gateway;
753 }
754 }
755
756 var configureAddressField = function(field, model) {
757 IPAddressField.decorate(field);
758 field.model = model;
759 field.editable = model.autoConfig == 'user';
760 };
761
762 configureAddressField($('ip-address'), inetAddress);
763 configureAddressField($('ip-netmask'), inetNetmask);
764 configureAddressField($('ip-gateway'), inetGateway);
765
766 var inetNameServers = '';
767 if (data.ipconfig.value && data.ipconfig.value.nameServers) {
768 inetNameServers = data.ipconfig.value.nameServers;
769 $('automatic-dns-display').textContent = inetNameServers;
770 }
771
772 if (data.savedIP && data.savedIP.nameServers)
773 $('automatic-dns-display').textContent = data.savedIP.nameServers;
774
775 if (data.nameServersGoogle)
776 $('google-dns-display').textContent = data.nameServersGoogle;
777
778 var nameServersUser = [];
779 if (data.staticIP.value.nameServers)
780 nameServersUser = data.staticIP.value.nameServers.split(',');
781
782 var nameServerModels = [];
783 for (var i = 0; i < 4; ++i)
784 nameServerModels.push({value: nameServersUser[i] || ''});
785
786 $(data.nameServerType + '-dns-radio').checked = true;
787 configureAddressField($('ipconfig-dns1'), nameServerModels[0]);
788 configureAddressField($('ipconfig-dns2'), nameServerModels[1]);
789 configureAddressField($('ipconfig-dns3'), nameServerModels[2]);
790 configureAddressField($('ipconfig-dns4'), nameServerModels[3]);
791
792 DetailsInternetPage.updateNameServerDisplay(data.nameServerType);
793
794 if (data.hardwareAddress) {
795 $('hardware-address').textContent = data.hardwareAddress;
796 $('hardware-address-row').style.display = 'table-row';
797 } else {
798 // This is most likely a device without a hardware address.
799 $('hardware-address-row').style.display = 'none';
800 }
801 if (data.type == Constants.TYPE_WIFI) {
802 OptionsPage.showTab($('wifi-network-nav-tab'));
803 detailsPage.wireless = true;
804 detailsPage.vpn = false;
805 detailsPage.ethernet = false;
806 detailsPage.cellular = false;
807 detailsPage.gsm = false;
808 detailsPage.wimax = false;
809 detailsPage.shared = data.shared;
810 $('wifi-connection-state').textContent = data.connectionState;
811 $('wifi-ssid').textContent = data.ssid;
812 if (data.bssid && data.bssid.length > 0) {
813 $('wifi-bssid').textContent = data.bssid;
814 $('wifi-bssid-entry').hidden = false;
815 } else {
816 $('wifi-bssid-entry').hidden = true;
817 }
818 $('wifi-ip-address').textContent = inetAddress.value;
819 $('wifi-netmask').textContent = inetNetmask.value;
820 $('wifi-gateway').textContent = inetGateway.value;
821 $('wifi-name-servers').textContent = inetNameServers;
822 if (data.encryption && data.encryption.length > 0) {
823 $('wifi-security').textContent = data.encryption;
824 $('wifi-security-entry').hidden = false;
825 } else {
826 $('wifi-security-entry').hidden = true;
827 }
828 // Frequency is in MHz.
829 var frequency = loadTimeData.getString('inetFrequencyFormat');
830 frequency = frequency.replace('$1', data.frequency);
831 $('wifi-frequency').textContent = frequency;
832 // Signal strength as percentage.
833 var signalStrength = loadTimeData.getString('inetSignalStrengthFormat');
834 signalStrength = signalStrength.replace('$1', data.strength);
835 $('wifi-signal-strength').textContent = signalStrength;
836 if (data.hardwareAddress) {
837 $('wifi-hardware-address').textContent = data.hardwareAddress;
838 $('wifi-hardware-address-entry').hidden = false;
839 } else {
840 $('wifi-hardware-address-entry').hidden = true;
841 }
842 detailsPage.showPreferred = data.showPreferred;
843 $('prefer-network-wifi').checked = data.preferred.value;
844 $('prefer-network-wifi').disabled = !data.remembered;
845 $('auto-connect-network-wifi').checked = data.autoConnect.value;
846 $('auto-connect-network-wifi').disabled = !data.remembered;
847 detailsPage.password = data.encrypted;
848 } else if (data.type == Constants.TYPE_WIMAX) {
849 OptionsPage.showTab($('wimax-network-nav-tab'));
850 detailsPage.wimax = true;
851 detailsPage.wireless = false;
852 detailsPage.vpn = false;
853 detailsPage.ethernet = false;
854 detailsPage.cellular = false;
855 detailsPage.gsm = false;
856 detailsPage.shared = data.shared;
857 detailsPage.showPreferred = data.showPreferred;
858 $('wimax-connection-state').textContent = data.connectionState;
859 $('auto-connect-network-wimax').checked = data.autoConnect.value;
860 $('auto-connect-network-wimax').disabled = !data.remembered;
861 if (data.identity) {
862 $('wimax-eap-identity').textContent = data.identity;
863 $('wimax-eap-identity-entry').hidden = false;
864 } else {
865 $('wimax-eap-identity-entry').hidden = true;
866 }
867 // Signal strength as percentage.
868 var signalStrength = loadTimeData.getString('inetSignalStrengthFormat');
869 signalStrength = signalStrength.replace('$1', data.strength);
870 $('wimax-signal-strength').textContent = signalStrength;
871 } else if (data.type == Constants.TYPE_CELLULAR) {
872 if (!data.gsm)
873 OptionsPage.showTab($('cellular-plan-nav-tab'));
874 else
875 OptionsPage.showTab($('cellular-conn-nav-tab'));
876 detailsPage.ethernet = false;
877 detailsPage.wireless = false;
878 detailsPage.wimax = false;
879 detailsPage.vpn = false;
880 detailsPage.cellular = true;
881 $('service-name').textContent = data.serviceName;
882 $('network-technology').textContent = data.networkTechnology;
883 $('activation-state').textContent = data.activationState;
884 $('roaming-state').textContent = data.roamingState;
885 $('restricted-pool').textContent = data.restrictedPool;
886 $('error-state').textContent = data.errorState;
887 $('manufacturer').textContent = data.manufacturer;
888 $('model-id').textContent = data.modelId;
889 $('firmware-revision').textContent = data.firmwareRevision;
890 $('hardware-revision').textContent = data.hardwareRevision;
891 $('prl-version').textContent = data.prlVersion;
892 $('meid').textContent = data.meid;
893 $('imei').textContent = data.imei;
894 $('mdn').textContent = data.mdn;
895 $('esn').textContent = data.esn;
896 $('min').textContent = data.min;
897 detailsPage.gsm = data.gsm;
898 if (data.gsm) {
899 $('operator-name').textContent = data.operatorName;
900 $('operator-code').textContent = data.operatorCode;
901 $('imsi').textContent = data.imsi;
902
903 var apnSelector = $('select-apn');
904 // Clear APN lists, keep only last element that "other".
905 while (apnSelector.length != 1)
906 apnSelector.remove(0);
907 var otherOption = apnSelector[0];
908 data.selectedApn = -1;
909 data.userApnIndex = -1;
910 var apnList = data.providerApnList.value;
911 for (var i = 0; i < apnList.length; i++) {
912 var option = document.createElement('option');
913 var name = apnList[i].localizedName;
914 if (name == '' && apnList[i].name != '')
915 name = apnList[i].name;
916 if (name == '')
917 name = apnList[i].apn;
918 else
919 name = name + ' (' + apnList[i].apn + ')';
920 option.textContent = name;
921 option.value = i;
922 if ((data.apn.apn == apnList[i].apn &&
923 data.apn.username == apnList[i].username &&
924 data.apn.password == apnList[i].password) ||
925 (data.apn.apn == '' &&
926 data.lastGoodApn.apn == apnList[i].apn &&
927 data.lastGoodApn.username == apnList[i].username &&
928 data.lastGoodApn.password == apnList[i].password)) {
929 data.selectedApn = i;
930 }
931 // Insert new option before "other" option.
932 apnSelector.add(option, otherOption);
933 }
934 if (data.selectedApn == -1 && data.apn.apn != '') {
935 var option = document.createElement('option');
936 option.textContent = data.apn.apn;
937 option.value = -1;
938 apnSelector.add(option, otherOption);
939 data.selectedApn = apnSelector.length - 2;
940 data.userApnIndex = data.selectedApn;
941 }
942 apnSelector.selectedIndex = data.selectedApn;
943 updateHidden('.apn-list-view', false);
944 updateHidden('.apn-details-view', true);
945 DetailsInternetPage.updateSecurityTab(data.simCardLockEnabled.value);
946 }
947 $('auto-connect-network-cellular').checked = data.autoConnect.value;
948 $('auto-connect-network-cellular').disabled = false;
949
950 $('buyplan-details').hidden = !data.showBuyButton;
951 $('view-account-details').hidden = !data.showViewAccountButton;
952 $('activate-details').hidden = !data.showActivateButton;
953 if (data.showActivateButton) {
954 $('details-internet-login').hidden = true;
955 }
956
957 detailsPage.hascellplan = false;
958 if (data.connected) {
959 detailsPage.nocellplan = false;
960 detailsPage.cellplanloading = true;
961 chrome.send('refreshCellularPlan', [data.servicePath]);
962 } else {
963 detailsPage.nocellplan = true;
964 detailsPage.cellplanloading = false;
965 }
966 } else if (data.type == Constants.TYPE_VPN) {
967 OptionsPage.showTab($('vpn-nav-tab'));
968 detailsPage.wireless = false;
969 detailsPage.wimax = false;
970 detailsPage.vpn = true;
971 detailsPage.ethernet = false;
972 detailsPage.cellular = false;
973 detailsPage.gsm = false;
974 $('inet-service-name').textContent = data.service_name;
975 $('inet-server-hostname').textContent = data.server_hostname;
976 $('inet-provider-type').textContent = data.provider_type;
977 $('inet-username').textContent = data.username;
978 } else {
979 OptionsPage.showTab($('internet-nav-tab'));
980 detailsPage.ethernet = true;
981 detailsPage.wireless = false;
982 detailsPage.wimax = false;
983 detailsPage.vpn = false;
984 detailsPage.cellular = false;
985 detailsPage.gsm = false;
986 }
987
988 // Update controlled option indicators.
989 indicators = cr.doc.querySelectorAll(
990 '#details-internet-page .controlled-setting-indicator');
991 for (var i = 0; i < indicators.length; i++) {
992 var dataProperty = indicators[i].getAttribute('data');
993 if (dataProperty && data[dataProperty]) {
994 var controlledBy = data[dataProperty].controlledBy;
995 if (controlledBy) {
996 indicators[i].controlledBy = controlledBy;
997 var forElement = $(indicators[i].getAttribute('for'));
998 if (forElement)
999 forElement.disabled = controlledBy != 'recommended';
1000 if (forElement.type == 'radio' && !forElement.checked)
1001 indicators[i].hidden = true;
1002 } else {
1003 indicators[i].controlledBy = null;
1004 }
1005 }
1006 }
1007
1008 detailsPage.updateControls();
1009
1010 // Don't show page name in address bar and in history to prevent people
1011 // navigate here by hand and solve issue with page session restore.
1012 OptionsPage.showPageByName('detailsInternetPage', false);
1013 };
1014
1015 return {
1016 DetailsInternetPage: DetailsInternetPage
1017 };
1018 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698