OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 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', function() { | |
6 var OptionsPage = options.OptionsPage; | |
7 const ArrayDataModel = cr.ui.ArrayDataModel; | |
8 | |
9 ///////////////////////////////////////////////////////////////////////////// | |
10 // InternetOptions class: | |
11 | |
12 /** | |
13 * Encapsulated handling of ChromeOS internet options page. | |
14 * @constructor | |
15 */ | |
16 function InternetOptions() { | |
17 OptionsPage.call(this, 'internet', templateData.internetPageTabTitle, | |
18 'internetPage'); | |
19 } | |
20 | |
21 cr.addSingletonGetter(InternetOptions); | |
22 | |
23 // Inherit InternetOptions from OptionsPage. | |
24 InternetOptions.prototype = { | |
25 __proto__: OptionsPage.prototype, | |
26 | |
27 /** | |
28 * Initializes InternetOptions page. | |
29 * Calls base class implementation to starts preference initialization. | |
30 */ | |
31 initializePage: function() { | |
32 OptionsPage.prototype.initializePage.call(this); | |
33 | |
34 if (templateData.accessLocked) { | |
35 this.accesslocked = true; | |
36 } | |
37 | |
38 options.internet.NetworkElement.decorate($('wired-list')); | |
39 $('wired-list').load(templateData.wiredList); | |
40 options.internet.NetworkElement.decorate($('wireless-list')); | |
41 $('wireless-list').load(templateData.wirelessList); | |
42 options.internet.NetworkElement.decorate($('vpn-list')); | |
43 $('vpn-list').load(templateData.vpnList); | |
44 options.internet.NetworkElement.decorate($('remembered-list')); | |
45 $('remembered-list').load(templateData.rememberedList); | |
46 | |
47 this.updatePolicyIndicatorVisibility_(); | |
48 | |
49 options.internet.CellularPlanElement.decorate($('planList')); | |
50 | |
51 $('wired-section').hidden = (templateData.wiredList.length == 0); | |
52 $('wireless-section').hidden = (templateData.wirelessList.length == 0); | |
53 $('vpn-section').hidden = (templateData.vpnList.length == 0); | |
54 $('remembered-section').hidden = | |
55 (templateData.rememberedList.length == 0); | |
56 InternetOptions.setupAttributes(templateData); | |
57 $('detailsInternetDismiss').addEventListener('click', function(event) { | |
58 InternetOptions.setDetails(); | |
59 }); | |
60 $('detailsInternetLogin').addEventListener('click', function(event) { | |
61 InternetOptions.setDetails(); | |
62 InternetOptions.loginFromDetails(); | |
63 }); | |
64 $('detailsInternetDisconnect').addEventListener('click', function(event) { | |
65 InternetOptions.setDetails(); | |
66 InternetOptions.disconnectNetwork(); | |
67 }); | |
68 $('activateDetails').addEventListener('click', function(event) { | |
69 InternetOptions.activateFromDetails(); | |
70 }); | |
71 $('enable-wifi').addEventListener('click', function(event) { | |
72 event.target.disabled = true; | |
73 chrome.send('enableWifi', []); | |
74 }); | |
75 $('disable-wifi').addEventListener('click', function(event) { | |
76 event.target.disabled = true; | |
77 chrome.send('disableWifi', []); | |
78 }); | |
79 $('enable-cellular').addEventListener('click', function(event) { | |
80 event.target.disabled = true; | |
81 chrome.send('enableCellular', []); | |
82 }); | |
83 $('disable-cellular').addEventListener('click', function(event) { | |
84 event.target.disabled = true; | |
85 chrome.send('disableCellular', []); | |
86 }); | |
87 $('change-proxy-button').addEventListener('click', function(event) { | |
88 OptionsPage.closeOverlay(); | |
89 OptionsPage.showPageByName('proxy', false); | |
90 chrome.send('coreOptionsUserMetricsAction', | |
91 ['Options_ShowProxySettings']); | |
92 }); | |
93 $('buyplanDetails').addEventListener('click', function(event) { | |
94 chrome.send('buyDataPlan', []); | |
95 OptionsPage.closeOverlay(); | |
96 }); | |
97 $('cellularApnUseDefault').addEventListener('click', function(event) { | |
98 var data = $('connectionState').data; | |
99 var apnSelector = $('selectApn'); | |
100 | |
101 if (data.userApnIndex != -1) { | |
102 apnSelector.remove(data.userApnIndex); | |
103 data.userApnIndex = -1; | |
104 } | |
105 | |
106 if (data.providerApnList.value.length > 0) { | |
107 var iApn = 0; | |
108 data.apn.apn = data.providerApnList.value[iApn].apn; | |
109 data.apn.username = data.providerApnList.value[iApn].username; | |
110 data.apn.password = data.providerApnList.value[iApn].password; | |
111 chrome.send('setApn', [String(data.servicePath), | |
112 String(data.apn.apn), | |
113 String(data.apn.username), | |
114 String(data.apn.password)]); | |
115 apnSelector.selectedIndex = iApn; | |
116 data.selectedApn = iApn; | |
117 } else { | |
118 data.apn.apn = ''; | |
119 data.apn.username = ''; | |
120 data.apn.password = ''; | |
121 apnSelector.selectedIndex = -1; | |
122 data.selectedApn = -1; | |
123 } | |
124 | |
125 InternetOptions.prototype.updateHidden_( | |
126 cr.doc.querySelectorAll('.apn-list-view'), | |
127 false); | |
128 InternetOptions.prototype.updateHidden_( | |
129 cr.doc.querySelectorAll('.apn-details-view'), | |
130 true); | |
131 }); | |
132 $('cellularApnSet').addEventListener('click', function(event) { | |
133 if ($('cellularApn').value == '') | |
134 return; | |
135 | |
136 var data = $('connectionState').data; | |
137 var apnSelector = $('selectApn'); | |
138 | |
139 data.apn.apn = String($('cellularApn').value); | |
140 data.apn.username = String($('cellularApnUsername').value); | |
141 data.apn.password = String($('cellularApnPassword').value); | |
142 chrome.send('setApn', [String(data.servicePath), | |
143 String(data.apn.apn), | |
144 String(data.apn.username), | |
145 String(data.apn.password)]); | |
146 | |
147 if (data.userApnIndex != -1) { | |
148 apnSelector.remove(data.userApnIndex); | |
149 data.userApnIndex = -1; | |
150 } | |
151 | |
152 var option = document.createElement('option'); | |
153 option.textContent = data.apn.apn; | |
154 option.value = -1; | |
155 option.selected = true; | |
156 apnSelector.add(option, apnSelector[apnSelector.length - 1]); | |
157 data.userApnIndex = apnSelector.length - 2 | |
158 data.selectedApn = data.userApnIndex; | |
159 | |
160 InternetOptions.prototype.updateHidden_( | |
161 cr.doc.querySelectorAll('.apn-list-view'), | |
162 false); | |
163 InternetOptions.prototype.updateHidden_( | |
164 cr.doc.querySelectorAll('.apn-details-view'), | |
165 true); | |
166 }); | |
167 $('cellularApnCancel').addEventListener('click', function(event) { | |
168 $('selectApn').selectedIndex = $('connectionState').data.selectedApn; | |
169 | |
170 InternetOptions.prototype.updateHidden_( | |
171 cr.doc.querySelectorAll('.apn-list-view'), | |
172 false); | |
173 InternetOptions.prototype.updateHidden_( | |
174 cr.doc.querySelectorAll('.apn-details-view'), | |
175 true); | |
176 }); | |
177 $('selectApn').addEventListener('change', function(event) { | |
178 var data = $('connectionState').data; | |
179 var apnSelector = $('selectApn'); | |
180 if (apnSelector[apnSelector.selectedIndex].value != -1) { | |
181 var apnList = data.providerApnList.value; | |
182 chrome.send('setApn', [String(data.servicePath), | |
183 String(apnList[apnSelector.selectedIndex].apn), | |
184 String(apnList[apnSelector.selectedIndex].username), | |
185 String(apnList[apnSelector.selectedIndex].password) | |
186 ]); | |
187 data.selectedApn = apnSelector.selectedIndex; | |
188 } else if (apnSelector.selectedIndex == data.userApnIndex) { | |
189 chrome.send('setApn', [String(data.servicePath), | |
190 String(data.apn.apn), | |
191 String(data.apn.username), | |
192 String(data.apn.password)]); | |
193 data.selectedApn = apnSelector.selectedIndex; | |
194 } else { | |
195 $('cellularApn').value = data.apn.apn; | |
196 $('cellularApnUsername').value = data.apn.username; | |
197 $('cellularApnPassword').value = data.apn.password; | |
198 | |
199 InternetOptions.prototype.updateHidden_( | |
200 cr.doc.querySelectorAll('.apn-list-view'), | |
201 true); | |
202 InternetOptions.prototype.updateHidden_( | |
203 cr.doc.querySelectorAll('.apn-details-view'), | |
204 false); | |
205 } | |
206 }); | |
207 $('sim-card-lock-enabled').addEventListener('click', function(event) { | |
208 var newValue = $('sim-card-lock-enabled').checked; | |
209 // Leave value as is because user needs to enter PIN code first. | |
210 // When PIN will be entered and value changed, | |
211 // we'll update UI to reflect that change. | |
212 $('sim-card-lock-enabled').checked = !newValue; | |
213 chrome.send('setSimCardLock', [newValue]); | |
214 }); | |
215 $('change-pin').addEventListener('click', function(event) { | |
216 chrome.send('changePin'); | |
217 }); | |
218 this.showNetworkDetails_(); | |
219 }, | |
220 | |
221 showNetworkDetails_: function() { | |
222 var params = parseQueryParams(window.location); | |
223 var servicePath = params.servicePath; | |
224 var networkType = params.networkType; | |
225 if (!servicePath || !servicePath.length || | |
226 !networkType || !networkType.length) | |
227 return; | |
228 var networkName = params.networkName; | |
229 if (networkName) | |
230 options.ProxyOptions.getInstance().setNetworkName(networkName); | |
231 chrome.send('buttonClickCallback', | |
232 [networkType, servicePath, "options"]); | |
233 }, | |
234 | |
235 updateHidden_: function(elements, hidden) { | |
236 for (var i = 0, el; el = elements[i]; i++) { | |
237 el.hidden = hidden; | |
238 } | |
239 }, | |
240 | |
241 /** | |
242 * Update internet page controls. | |
243 * @private | |
244 */ | |
245 updateControls_: function() { | |
246 accesslocked = this.accesslocked; | |
247 | |
248 $('locked-network-banner').hidden = !accesslocked; | |
249 $('wireless-buttons').hidden = accesslocked; | |
250 $('wired-section').hidden = accesslocked; | |
251 $('wireless-section').hidden = accesslocked; | |
252 $('vpn-section').hidden = accesslocked; | |
253 $('remembered-section').hidden = accesslocked; | |
254 | |
255 // Don't change hidden attribute on OptionsPage divs directly because it | |
256 // is used in supporting infrastructure now. | |
257 if (accesslocked && DetailsInternetPage.getInstance().visible) | |
258 this.closeOverlay(); | |
259 }, | |
260 | |
261 /** | |
262 * Updates the policy indicator visibility. Space is only allocated for the | |
263 * policy indicators if there is at least one visible. | |
264 * @private | |
265 */ | |
266 updatePolicyIndicatorVisibility_: function() { | |
267 var page = $('internetPage'); | |
268 if (page.querySelectorAll( | |
269 '.network-item > .controlled-setting-indicator[controlled-by]') | |
270 .length) { | |
271 page.classList.remove('hide-indicators'); | |
272 } else { | |
273 page.classList.add('hide-indicators'); | |
274 } | |
275 } | |
276 }; | |
277 | |
278 /** | |
279 * Whether access to this page is locked. | |
280 * @type {boolean} | |
281 */ | |
282 cr.defineProperty(InternetOptions, 'accesslocked', cr.PropertyKind.JS, | |
283 InternetOptions.prototype.updateControls_); | |
284 | |
285 InternetOptions.loginFromDetails = function () { | |
286 var data = $('connectionState').data; | |
287 var servicePath = data.servicePath; | |
288 chrome.send('buttonClickCallback', [String(data.type), | |
289 servicePath, | |
290 'connect']); | |
291 OptionsPage.closeOverlay(); | |
292 }; | |
293 | |
294 InternetOptions.disconnectNetwork = function () { | |
295 var data = $('connectionState').data; | |
296 var servicePath = data.servicePath; | |
297 chrome.send('buttonClickCallback', [String(data.type), | |
298 servicePath, | |
299 'disconnect']); | |
300 OptionsPage.closeOverlay(); | |
301 }; | |
302 | |
303 InternetOptions.activateFromDetails = function () { | |
304 var data = $('connectionState').data; | |
305 var servicePath = data.servicePath; | |
306 if (data.type == options.internet.Constants.TYPE_CELLULAR) { | |
307 chrome.send('buttonClickCallback', [String(data.type), | |
308 String(servicePath), | |
309 'activate']); | |
310 } | |
311 OptionsPage.closeOverlay(); | |
312 }; | |
313 | |
314 InternetOptions.setDetails = function () { | |
315 var data = $('connectionState').data; | |
316 var servicePath = data.servicePath; | |
317 if (data.type == options.internet.Constants.TYPE_WIFI) { | |
318 chrome.send('setPreferNetwork', | |
319 [String(servicePath), | |
320 $('preferNetworkWifi').checked ? "true" : "false"]); | |
321 chrome.send('setAutoConnect', | |
322 [String(servicePath), | |
323 $('autoConnectNetworkWifi').checked ? "true" : "false"]); | |
324 } else if (data.type == options.internet.Constants.TYPE_CELLULAR) { | |
325 chrome.send('setAutoConnect', | |
326 [String(servicePath), | |
327 $('autoConnectNetworkCellular').checked ? "true" : "false"]); | |
328 } | |
329 | |
330 var ipConfigList = $('ipConfigList'); | |
331 chrome.send('setIPConfig',[String(servicePath), | |
332 $('ipTypeDHCP').checked ? "true" : "false", | |
333 ipConfigList.dataModel.item(0).value, | |
334 ipConfigList.dataModel.item(1).value, | |
335 ipConfigList.dataModel.item(2).value, | |
336 ipConfigList.dataModel.item(3).value]); | |
337 OptionsPage.closeOverlay(); | |
338 }; | |
339 | |
340 InternetOptions.setupAttributes = function(data) { | |
341 var buttons = $('wireless-buttons'); | |
342 if (data.wifiEnabled) { | |
343 $('disable-wifi').disabled = data.wifiBusy; | |
344 $('disable-wifi').hidden = false; | |
345 $('enable-wifi').hidden = true; | |
346 } else { | |
347 $('enable-wifi').disabled = data.wifiBusy; | |
348 $('enable-wifi').hidden = false; | |
349 $('disable-wifi').hidden = true; | |
350 } | |
351 if (data.cellularAvailable) { | |
352 if (data.cellularEnabled) { | |
353 $('disable-cellular').disabled = data.cellularBusy; | |
354 $('disable-cellular').hidden = false; | |
355 $('enable-cellular').hidden = true; | |
356 } else { | |
357 $('enable-cellular').disabled = data.cellularBusy; | |
358 $('enable-cellular').hidden = false; | |
359 $('disable-cellular').hidden = true; | |
360 } | |
361 if (!AccountsOptions.currentUserIsOwner()) | |
362 $('internet-owner-only-warning').hidden = false; | |
363 $('data-roaming').hidden = false; | |
364 } else { | |
365 $('enable-cellular').hidden = true; | |
366 $('disable-cellular').hidden = true; | |
367 $('data-roaming').hidden = true; | |
368 } | |
369 }; | |
370 | |
371 // | |
372 //Chrome callbacks | |
373 // | |
374 InternetOptions.refreshNetworkData = function (data) { | |
375 var self = InternetOptions.getInstance(); | |
376 if (data.accessLocked) { | |
377 self.accesslocked = true; | |
378 return; | |
379 } | |
380 self.accesslocked = false; | |
381 $('wired-list').load(data.wiredList); | |
382 $('wireless-list').load(data.wirelessList); | |
383 $('vpn-list').load(data.vpnList); | |
384 $('remembered-list').load(data.rememberedList); | |
385 | |
386 self.updatePolicyIndicatorVisibility_(); | |
387 | |
388 $('wired-section').hidden = (data.wiredList.length == 0); | |
389 $('wireless-section').hidden = (data.wirelessList.length == 0); | |
390 $('vpn-section').hidden = (data.vpnList.length == 0); | |
391 InternetOptions.setupAttributes(data); | |
392 $('remembered-section').hidden = (data.rememberedList.length == 0); | |
393 }; | |
394 | |
395 // TODO(xiyuan): This function seems belonging to DetailsInternetPage. | |
396 InternetOptions.updateCellularPlans = function (data) { | |
397 var detailsPage = DetailsInternetPage.getInstance(); | |
398 detailsPage.cellplanloading = false; | |
399 if (data.plans && data.plans.length) { | |
400 detailsPage.nocellplan = false | |
401 detailsPage.hascellplan = true; | |
402 $('planList').load(data.plans); | |
403 } else { | |
404 detailsPage.nocellplan = true; | |
405 detailsPage.hascellplan = false; | |
406 } | |
407 | |
408 detailsPage.hasactiveplan = !data.needsPlan; | |
409 detailsPage.activated = data.activated; | |
410 if (!data.activated) | |
411 $('detailsInternetLogin').hidden = true; | |
412 | |
413 $('buyplanDetails').hidden = !data.showBuyButton; | |
414 $('activateDetails').hidden = !data.showActivateButton; | |
415 }; | |
416 | |
417 InternetOptions.updateSecurityTab = function(requirePin) { | |
418 $('sim-card-lock-enabled').checked = requirePin; | |
419 $('change-pin').hidden = !requirePin; | |
420 }; | |
421 | |
422 InternetOptions.showDetailedInfo = function (data) { | |
423 var detailsPage = DetailsInternetPage.getInstance(); | |
424 // TODO(chocobo): Is this hack to cache the data here reasonable? | |
425 $('connectionState').data = data; | |
426 $('buyplanDetails').hidden = true; | |
427 $('activateDetails').hidden = true; | |
428 $('detailsInternetLogin').hidden = data.connected; | |
429 if (data.type == options.internet.Constants.TYPE_ETHERNET) | |
430 $('detailsInternetDisconnect').hidden = true; | |
431 else | |
432 $('detailsInternetDisconnect').hidden = !data.connected; | |
433 | |
434 detailsPage.deviceConnected = data.deviceConnected; | |
435 detailsPage.connecting = data.connecting; | |
436 detailsPage.connected = data.connected; | |
437 if (data.connected) { | |
438 $('inetTitle').textContent = localStrings.getString('inetStatus'); | |
439 } else { | |
440 $('inetTitle').textContent = localStrings.getString('inetConnect'); | |
441 } | |
442 $('connectionState').textContent = data.connectionState; | |
443 | |
444 var inetAddress = ''; | |
445 var inetSubnetAddress = ''; | |
446 var inetGateway = ''; | |
447 var inetDns = ''; | |
448 $('ipTypeDHCP').checked = true; | |
449 if (data.ipconfigStatic.value) { | |
450 inetAddress = data.ipconfigStatic.value.address; | |
451 inetSubnetAddress = data.ipconfigStatic.value.subnetAddress; | |
452 inetGateway = data.ipconfigStatic.value.gateway; | |
453 inetDns = data.ipconfigStatic.value.dns; | |
454 $('ipTypeStatic').checked = true; | |
455 } else if (data.ipconfigDHCP.value) { | |
456 inetAddress = data.ipconfigDHCP.value.address; | |
457 inetSubnetAddress = data.ipconfigDHCP.value.subnetAddress; | |
458 inetGateway = data.ipconfigDHCP.value.gateway; | |
459 inetDns = data.ipconfigDHCP.value.dns; | |
460 } | |
461 | |
462 // Hide the dhcp/static radio if needed. | |
463 $('ipTypeDHCPDiv').hidden = !data.showStaticIPConfig; | |
464 $('ipTypeStaticDiv').hidden = !data.showStaticIPConfig; | |
465 | |
466 // Hide change-proxy-button and change-proxy-section if not showing proxy. | |
467 $('change-proxy-button').hidden = !data.showProxy; | |
468 $('change-proxy-section').hidden = !data.showProxy; | |
469 | |
470 var ipConfigList = $('ipConfigList'); | |
471 ipConfigList.disabled = | |
472 $('ipTypeDHCP').checked || data.ipconfigStatic.controlledBy || | |
473 !data.showStaticIPConfig; | |
474 options.internet.IPConfigList.decorate(ipConfigList); | |
475 ipConfigList.autoExpands = true; | |
476 var model = new ArrayDataModel([]); | |
477 model.push({ | |
478 'property': 'inetAddress', | |
479 'name': localStrings.getString('inetAddress'), | |
480 'value': inetAddress, | |
481 }); | |
482 model.push({ | |
483 'property': 'inetSubnetAddress', | |
484 'name': localStrings.getString('inetSubnetAddress'), | |
485 'value': inetSubnetAddress, | |
486 }); | |
487 model.push({ | |
488 'property': 'inetGateway', | |
489 'name': localStrings.getString('inetGateway'), | |
490 'value': inetGateway, | |
491 }); | |
492 model.push({ | |
493 'property': 'inetDns', | |
494 'name': localStrings.getString('inetDns'), | |
495 'value': inetDns, | |
496 }); | |
497 ipConfigList.dataModel = model; | |
498 | |
499 $('ipTypeDHCP').addEventListener('click', function(event) { | |
500 // disable ipConfigList and switch back to dhcp values (if any) | |
501 if (data.ipconfigDHCP.value) { | |
502 var config = data.ipconfigDHCP.value; | |
503 ipConfigList.dataModel.item(0).value = config.address; | |
504 ipConfigList.dataModel.item(1).value = config.subnetAddress; | |
505 ipConfigList.dataModel.item(2).value = config.gateway; | |
506 ipConfigList.dataModel.item(3).value = config.dns; | |
507 } | |
508 ipConfigList.dataModel.updateIndex(0); | |
509 ipConfigList.dataModel.updateIndex(1); | |
510 ipConfigList.dataModel.updateIndex(2); | |
511 ipConfigList.dataModel.updateIndex(3); | |
512 // Unselect all so we don't keep the currently selected field editable. | |
513 ipConfigList.selectionModel.unselectAll(); | |
514 ipConfigList.disabled = true; | |
515 }); | |
516 | |
517 $('ipTypeStatic').addEventListener('click', function(event) { | |
518 // enable ipConfigList | |
519 ipConfigList.disabled = false; | |
520 ipConfigList.focus(); | |
521 ipConfigList.selectionModel.selectedIndex = 0; | |
522 }); | |
523 | |
524 if (data.hardwareAddress) { | |
525 $('hardwareAddress').textContent = data.hardwareAddress; | |
526 $('hardwareAddressRow').style.display = 'table-row'; | |
527 } else { | |
528 // This is most likely a device without a hardware address. | |
529 $('hardwareAddressRow').style.display = 'none'; | |
530 } | |
531 if (data.type == options.internet.Constants.TYPE_WIFI) { | |
532 OptionsPage.showTab($('wifiNetworkNavTab')); | |
533 detailsPage.wireless = true; | |
534 detailsPage.vpn = false; | |
535 detailsPage.ethernet = false; | |
536 detailsPage.cellular = false; | |
537 detailsPage.gsm = false; | |
538 detailsPage.shared = data.shared; | |
539 $('inetSsid').textContent = data.ssid; | |
540 detailsPage.showPreferred = data.showPreferred; | |
541 $('preferNetworkWifi').checked = data.preferred.value; | |
542 $('preferNetworkWifi').disabled = !data.remembered; | |
543 $('autoConnectNetworkWifi').checked = data.autoConnect.value; | |
544 $('autoConnectNetworkWifi').disabled = !data.remembered; | |
545 detailsPage.password = data.encrypted; | |
546 } else if(data.type == options.internet.Constants.TYPE_CELLULAR) { | |
547 if (!data.gsm) | |
548 OptionsPage.showTab($('cellularPlanNavTab')); | |
549 else | |
550 OptionsPage.showTab($('cellularConnNavTab')); | |
551 detailsPage.ethernet = false; | |
552 detailsPage.wireless = false; | |
553 detailsPage.vpn = false; | |
554 detailsPage.cellular = true; | |
555 if (data.carrierUrl) { | |
556 var a = $('carrierUrl'); | |
557 if (!a) { | |
558 a = document.createElement('a'); | |
559 $('serviceName').appendChild(a); | |
560 a.id = 'carrierUrl'; | |
561 a.target = "_blank"; | |
562 } | |
563 a.href = data.carrierUrl; | |
564 a.textContent = data.serviceName; | |
565 } else { | |
566 $('serviceName').textContent = data.serviceName; | |
567 } | |
568 $('networkTechnology').textContent = data.networkTechnology; | |
569 $('activationState').textContent = data.activationState; | |
570 $('roamingState').textContent = data.roamingState; | |
571 $('restrictedPool').textContent = data.restrictedPool; | |
572 $('errorState').textContent = data.errorState; | |
573 $('manufacturer').textContent = data.manufacturer; | |
574 $('modelId').textContent = data.modelId; | |
575 $('firmwareRevision').textContent = data.firmwareRevision; | |
576 $('hardwareRevision').textContent = data.hardwareRevision; | |
577 $('prlVersion').textContent = data.prlVersion; | |
578 $('meid').textContent = data.meid; | |
579 $('imei').textContent = data.imei; | |
580 $('mdn').textContent = data.mdn; | |
581 $('esn').textContent = data.esn; | |
582 $('min').textContent = data.min; | |
583 detailsPage.gsm = data.gsm; | |
584 if (data.gsm) { | |
585 $('operatorName').textContent = data.operatorName; | |
586 $('operatorCode').textContent = data.operatorCode; | |
587 $('imsi').textContent = data.imsi; | |
588 | |
589 var apnSelector = $('selectApn'); | |
590 // Clear APN lists, keep only last element that "other". | |
591 while (apnSelector.length != 1) | |
592 apnSelector.remove(0); | |
593 var otherOption = apnSelector[0]; | |
594 data.selectedApn = -1; | |
595 data.userApnIndex = -1; | |
596 var apnList = data.providerApnList.value; | |
597 for (var i = 0; i < apnList.length; i++) { | |
598 var option = document.createElement('option'); | |
599 var name = apnList[i].localizedName; | |
600 if (name == '' && apnList[i].name != '') | |
601 name = apnList[i].name; | |
602 if (name == '') | |
603 name = apnList[i].apn; | |
604 else | |
605 name = name + ' (' + apnList[i].apn + ')'; | |
606 option.textContent = name; | |
607 option.value = i; | |
608 if ((data.apn.apn == apnList[i].apn && | |
609 data.apn.username == apnList[i].username && | |
610 data.apn.password == apnList[i].password) || | |
611 (data.apn.apn == '' && | |
612 data.lastGoodApn.apn == apnList[i].apn && | |
613 data.lastGoodApn.username == apnList[i].username && | |
614 data.lastGoodApn.password == apnList[i].password)) { | |
615 data.selectedApn = i; | |
616 } | |
617 // Insert new option before "other" option. | |
618 apnSelector.add(option, otherOption); | |
619 } | |
620 if (data.selectedApn == -1 && data.apn.apn != '') { | |
621 var option = document.createElement('option'); | |
622 option.textContent = data.apn.apn; | |
623 option.value = -1; | |
624 apnSelector.add(option, otherOption); | |
625 data.selectedApn = apnSelector.length - 2; | |
626 data.userApnIndex = data.selectedApn; | |
627 } | |
628 apnSelector.selectedIndex = data.selectedApn; | |
629 InternetOptions.prototype.updateHidden_( | |
630 cr.doc.querySelectorAll('.apn-list-view'), | |
631 false); | |
632 InternetOptions.prototype.updateHidden_( | |
633 cr.doc.querySelectorAll('.apn-details-view'), | |
634 true); | |
635 | |
636 InternetOptions.updateSecurityTab(data.simCardLockEnabled.value); | |
637 } | |
638 $('autoConnectNetworkCellular').checked = data.autoConnect.value; | |
639 $('autoConnectNetworkCellular').disabled = false; | |
640 | |
641 $('buyplanDetails').hidden = !data.showBuyButton; | |
642 $('activateDetails').hidden = !data.showActivateButton; | |
643 if (data.showActivateButton) { | |
644 $('detailsInternetLogin').hidden = true; | |
645 } | |
646 | |
647 detailsPage.hascellplan = false; | |
648 if (data.connected) { | |
649 detailsPage.nocellplan = false; | |
650 detailsPage.cellplanloading = true; | |
651 chrome.send('refreshCellularPlan', [data.servicePath]) | |
652 } else { | |
653 detailsPage.nocellplan = true; | |
654 detailsPage.cellplanloading = false; | |
655 } | |
656 } else if (data.type == options.internet.Constants.TYPE_VPN) { | |
657 OptionsPage.showTab($('vpnNavTab')); | |
658 detailsPage.wireless = false; | |
659 detailsPage.vpn = true; | |
660 detailsPage.ethernet = false; | |
661 detailsPage.cellular = false; | |
662 detailsPage.gsm = false; | |
663 $('inetServiceName').textContent = data.service_name; | |
664 $('inetServerHostname').textContent = data.server_hostname; | |
665 $('inetProviderType').textContent = data.provider_type; | |
666 $('inetUsername').textContent = data.username; | |
667 } else { | |
668 OptionsPage.showTab($('internetNavTab')); | |
669 detailsPage.ethernet = true; | |
670 detailsPage.wireless = false; | |
671 detailsPage.vpn = false; | |
672 detailsPage.cellular = false; | |
673 detailsPage.gsm = false; | |
674 } | |
675 | |
676 // Update controlled option indicators. | |
677 indicators = cr.doc.querySelectorAll( | |
678 '#detailsInternetPage .controlled-setting-indicator'); | |
679 for (var i = 0; i < indicators.length; i++) { | |
680 var dataProperty = indicators[i].getAttribute('data'); | |
681 if (dataProperty && data[dataProperty]) { | |
682 var controlledBy = data[dataProperty].controlledBy; | |
683 if (controlledBy) { | |
684 indicators[i].controlledBy = controlledBy; | |
685 var forElement = $(indicators[i].getAttribute('for')); | |
686 if (forElement) | |
687 forElement.disabled = true; | |
688 if (forElement.type == 'radio' && !forElement.checked) | |
689 indicators[i].hidden = true; | |
690 } else { | |
691 indicators[i].controlledBy = null; | |
692 } | |
693 } | |
694 } | |
695 | |
696 // Don't show page name in address bar and in history to prevent people | |
697 // navigate here by hand and solve issue with page session restore. | |
698 OptionsPage.showPageByName('detailsInternetPage', false); | |
699 }; | |
700 | |
701 InternetOptions.invalidNetworkSettings = function () { | |
702 alert(localStrings.getString('invalidNetworkSettings')); | |
703 }; | |
704 | |
705 // Export | |
706 return { | |
707 InternetOptions: InternetOptions | |
708 }; | |
709 }); | |
OLD | NEW |