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 |