| 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 | |
| 8 ///////////////////////////////////////////////////////////////////////////// | |
| 9 // InternetOptions class: | |
| 10 | |
| 11 /** | |
| 12 * Encapsulated handling of ChromeOS internet options page. | |
| 13 * @constructor | |
| 14 */ | |
| 15 function InternetOptions() { | |
| 16 OptionsPage.call(this, 'internet', templateData.internetPageTabTitle, | |
| 17 'internetPage'); | |
| 18 } | |
| 19 | |
| 20 cr.addSingletonGetter(InternetOptions); | |
| 21 | |
| 22 // Inherit InternetOptions from OptionsPage. | |
| 23 InternetOptions.prototype = { | |
| 24 __proto__: OptionsPage.prototype, | |
| 25 | |
| 26 /** | |
| 27 * Initializes InternetOptions page. | |
| 28 * Calls base class implementation to starts preference initialization. | |
| 29 */ | |
| 30 initializePage: function() { | |
| 31 OptionsPage.prototype.initializePage.call(this); | |
| 32 | |
| 33 if (templateData.accessLocked) { | |
| 34 var page = $('internetPage'); | |
| 35 page.setAttribute('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($('remembered-list')); | |
| 43 $('remembered-list').load(templateData.rememberedList); | |
| 44 | |
| 45 options.internet.CellularPlanElement.decorate($('planList')); | |
| 46 | |
| 47 $('wired-section').hidden = (templateData.wiredList.length == 0); | |
| 48 $('wireless-section').hidden = (templateData.wirelessList.length == 0); | |
| 49 $('remembered-section').hidden = | |
| 50 (templateData.rememberedList.length == 0); | |
| 51 InternetOptions.setupAttributes(templateData); | |
| 52 $('detailsInternetDismiss').addEventListener('click', function(event) { | |
| 53 InternetOptions.setDetails(); | |
| 54 }); | |
| 55 $('detailsInternetLogin').addEventListener('click', function(event) { | |
| 56 InternetOptions.loginFromDetails(); | |
| 57 }); | |
| 58 $('activateDetails').addEventListener('click', function(event) { | |
| 59 InternetOptions.activateFromDetails(); | |
| 60 }); | |
| 61 $('enable-wifi').addEventListener('click', function(event) { | |
| 62 event.target.disabled = true; | |
| 63 chrome.send('enableWifi', []); | |
| 64 }); | |
| 65 $('disable-wifi').addEventListener('click', function(event) { | |
| 66 event.target.disabled = true; | |
| 67 chrome.send('disableWifi', []); | |
| 68 }); | |
| 69 $('enable-cellular').addEventListener('click', function(event) { | |
| 70 event.target.disabled = true; | |
| 71 chrome.send('enableCellular', []); | |
| 72 }); | |
| 73 $('disable-cellular').addEventListener('click', function(event) { | |
| 74 event.target.disabled = true; | |
| 75 chrome.send('disableCellular', []); | |
| 76 }); | |
| 77 $('buyplanDetails').addEventListener('click', function(event) { | |
| 78 chrome.send('buyDataPlan', []); | |
| 79 OptionsPage.closeOverlay(); | |
| 80 }); | |
| 81 $('cellularApnClear').addEventListener('click', function(event) { | |
| 82 $('cellularApn').value = ""; | |
| 83 $('cellularApnUsername').value = ""; | |
| 84 $('cellularApnPassword').value = ""; | |
| 85 var data = $('inetAddress').data; | |
| 86 chrome.send('setApn', [String(data.servicePath), | |
| 87 String($('cellularApn').value), | |
| 88 String($('cellularApnUsername').value), | |
| 89 String($('cellularApnPassword').value)]); | |
| 90 }); | |
| 91 $('cellularApnSet').addEventListener('click', function(event) { | |
| 92 var data = $('inetAddress').data; | |
| 93 chrome.send('setApn', [String(data.servicePath), | |
| 94 String($('cellularApn').value), | |
| 95 String($('cellularApnUsername').value), | |
| 96 String($('cellularApnPassword').value)]); | |
| 97 }); | |
| 98 $('sim-card-lock-enabled').addEventListener('click', function(event) { | |
| 99 var newValue = $('sim-card-lock-enabled').checked; | |
| 100 // Leave value as is because user needs to enter PIN code first. | |
| 101 // When PIN will be entered and value changed, | |
| 102 // we'll update UI to reflect that change. | |
| 103 $('sim-card-lock-enabled').checked = !newValue; | |
| 104 InternetOptions.enableSecurityTab(false); | |
| 105 chrome.send('setSimCardLock', [newValue]); | |
| 106 }); | |
| 107 $('change-pin').addEventListener('click', function(event) { | |
| 108 chrome.send('changePin'); | |
| 109 }); | |
| 110 this.showNetworkDetails_(); | |
| 111 }, | |
| 112 | |
| 113 showNetworkDetails_: function() { | |
| 114 var params = parseQueryParams(window.location); | |
| 115 var servicePath = params.servicePath; | |
| 116 var networkType = params.networkType; | |
| 117 if (!servicePath || !servicePath.length || | |
| 118 !networkType || !networkType.length) | |
| 119 return; | |
| 120 chrome.send('buttonClickCallback', | |
| 121 [networkType, servicePath, "options"]); | |
| 122 } | |
| 123 }; | |
| 124 | |
| 125 // A boolean flag from InternerOptionsHandler to indicate whether to use | |
| 126 // inline WebUI for ethernet/wifi login/options. | |
| 127 InternetOptions.useSettingsUI = false; | |
| 128 | |
| 129 // Network status update will be blocked while typing in WEP password etc. | |
| 130 InternetOptions.updateLocked = false; | |
| 131 InternetOptions.updatePending = false; | |
| 132 InternetOptions.updataData = null; | |
| 133 | |
| 134 InternetOptions.loginFromDetails = function () { | |
| 135 var data = $('inetAddress').data; | |
| 136 var servicePath = data.servicePath; | |
| 137 if (data.type == options.internet.Constants.TYPE_WIFI) { | |
| 138 if (data.certInPkcs) { | |
| 139 chrome.send('loginToCertNetwork',[String(servicePath), | |
| 140 String(data.certPath), | |
| 141 String(data.ident)]); | |
| 142 } else { | |
| 143 chrome.send('loginToCertNetwork',[String(servicePath), | |
| 144 String($('inetCert').value), | |
| 145 String($('inetIdent').value), | |
| 146 String($('inetCertPass').value)]); | |
| 147 } | |
| 148 } else if (data.type == options.internet.Constants.TYPE_CELLULAR) { | |
| 149 chrome.send('buttonClickCallback', [String(data.type), | |
| 150 servicePath, | |
| 151 'connect']); | |
| 152 } | |
| 153 OptionsPage.closeOverlay(); | |
| 154 }; | |
| 155 | |
| 156 InternetOptions.activateFromDetails = function () { | |
| 157 var data = $('inetAddress').data; | |
| 158 var servicePath = data.servicePath; | |
| 159 if (data.type == options.internet.Constants.TYPE_CELLULAR) { | |
| 160 chrome.send('buttonClickCallback', [String(data.type), | |
| 161 String(servicePath), | |
| 162 'activate']); | |
| 163 } | |
| 164 OptionsPage.closeOverlay(); | |
| 165 }; | |
| 166 | |
| 167 InternetOptions.setDetails = function () { | |
| 168 var data = $('inetAddress').data; | |
| 169 var servicePath = data.servicePath; | |
| 170 if (data.type == options.internet.Constants.TYPE_WIFI) { | |
| 171 chrome.send('setDetails',[String(servicePath), | |
| 172 $('autoConnectNetwork').checked ? | |
| 173 "true" : "false"]); | |
| 174 } | |
| 175 OptionsPage.closeOverlay(); | |
| 176 }; | |
| 177 | |
| 178 InternetOptions.enableSecurityTab = function(enabled) { | |
| 179 $('sim-card-lock-enabled').disabled = !enabled; | |
| 180 $('change-pin').disabled = !enabled; | |
| 181 }; | |
| 182 | |
| 183 InternetOptions.setupAttributes = function(data) { | |
| 184 var buttons = $('wireless-buttons'); | |
| 185 if (data.wifiEnabled) { | |
| 186 $('disable-wifi').disabled = false; | |
| 187 $('disable-wifi').hidden = false; | |
| 188 $('enable-wifi').hidden = true; | |
| 189 } else { | |
| 190 $('enable-wifi').disabled = false; | |
| 191 $('enable-wifi').hidden = false; | |
| 192 $('disable-wifi').hidden = true; | |
| 193 } | |
| 194 if (data.cellularAvailable) { | |
| 195 if (data.cellularEnabled) { | |
| 196 $('disable-cellular').disabled = false; | |
| 197 $('disable-cellular').hidden = false; | |
| 198 $('enable-cellular').hidden = true; | |
| 199 } else { | |
| 200 $('enable-cellular').disabled = false; | |
| 201 $('enable-cellular').hidden = false; | |
| 202 $('disable-cellular').hidden = true; | |
| 203 } | |
| 204 if (!AccountsOptions.currentUserIsOwner()) | |
| 205 $('internet-owner-only-warning').hidden = false; | |
| 206 } else { | |
| 207 $('enable-cellular').hidden = true; | |
| 208 $('disable-cellular').hidden = true; | |
| 209 $('data-roaming').hidden = true; | |
| 210 } | |
| 211 | |
| 212 InternetOptions.useSettingsUI = data.networkUseSettingsUI; | |
| 213 }; | |
| 214 | |
| 215 // Prevent clobbering of password input field. | |
| 216 InternetOptions.lockUpdates = function () { | |
| 217 InternetOptions.updateLocked = true; | |
| 218 }; | |
| 219 | |
| 220 InternetOptions.unlockUpdates = function () { | |
| 221 InternetOptions.updateLocked = false; | |
| 222 if (InternetOptions.updatePending) { | |
| 223 InternetOptions.refreshNetworkData(InternetOptions.updateData); | |
| 224 } | |
| 225 }; | |
| 226 | |
| 227 // | |
| 228 //Chrome callbacks | |
| 229 // | |
| 230 InternetOptions.refreshNetworkData = function (data) { | |
| 231 var page = $('internetPage'); | |
| 232 if (data.accessLocked) { | |
| 233 page.setAttribute('accesslocked', true); | |
| 234 return; | |
| 235 } | |
| 236 page.removeAttribute('accesslocked'); | |
| 237 if (InternetOptions.updateLocked) { | |
| 238 InternetOptions.updateData = data; | |
| 239 InternetOptions.updatePending = true; | |
| 240 } else { | |
| 241 $('wired-list').load(data.wiredList); | |
| 242 $('wireless-list').load(data.wirelessList); | |
| 243 $('remembered-list').load(data.rememberedList); | |
| 244 | |
| 245 $('wired-section').hidden = (data.wiredList.length == 0); | |
| 246 $('wireless-section').hidden = (data.wirelessList.length == 0); | |
| 247 InternetOptions.setupAttributes(data); | |
| 248 $('remembered-section').hidden = (data.rememberedList.length == 0); | |
| 249 InternetOptions.updateData = null; | |
| 250 InternetOptions.updatePending = false; | |
| 251 } | |
| 252 }; | |
| 253 | |
| 254 InternetOptions.updateCellularPlans = function (data) { | |
| 255 var page = $('detailsInternetPage'); | |
| 256 page.removeAttribute('cellplanloading'); | |
| 257 if (data.plans && data.plans.length) { | |
| 258 page.removeAttribute('nocellplan'); | |
| 259 page.setAttribute('hascellplan', true); | |
| 260 $('planList').load(data.plans); | |
| 261 } else { | |
| 262 page.setAttribute('nocellplan', true); | |
| 263 page.removeAttribute('hascellplan'); | |
| 264 } | |
| 265 | |
| 266 if (!data.needsPlan) | |
| 267 page.setAttribute('hasactiveplan', true); | |
| 268 else | |
| 269 page.removeAttribute('hasactiveplan'); | |
| 270 | |
| 271 if (data.activated) { | |
| 272 page.setAttribute('activated', true); | |
| 273 } else { | |
| 274 page.removeAttribute('activated'); | |
| 275 $('detailsInternetLogin').classList.add('hidden'); | |
| 276 } | |
| 277 | |
| 278 // CSS selectors don't like me anymore, switching to classList | |
| 279 if (data.showBuyButton) | |
| 280 $('buyplanDetails').classList.remove('hidden'); | |
| 281 else | |
| 282 $('buyplanDetails').classList.add('hidden'); | |
| 283 | |
| 284 if (data.showActivateButton) | |
| 285 $('activateDetails').classList.remove('hidden'); | |
| 286 else | |
| 287 $('activateDetails').classList.add('hidden'); | |
| 288 | |
| 289 // Nudge webkit so that it redraws the details overlay page. | |
| 290 // See http://crosbug.com/9616 for details. | |
| 291 // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=50176 | |
| 292 var dummy = page.ownerDocument.createTextNode(' '); | |
| 293 page.appendChild(dummy); | |
| 294 page.removeChild(dummy); | |
| 295 }; | |
| 296 | |
| 297 InternetOptions.updateSecurityTab = function(data) { | |
| 298 InternetOptions.enableSecurityTab(true); | |
| 299 $('sim-card-lock-enabled').checked = data.requirePin; | |
| 300 }; | |
| 301 | |
| 302 InternetOptions.showPasswordEntry = function (data) { | |
| 303 var element = $(data.servicePath); | |
| 304 element.showPassword(); | |
| 305 }; | |
| 306 | |
| 307 InternetOptions.showDetailedInfo = function (data) { | |
| 308 var page = $('detailsInternetPage'); | |
| 309 $('buyplanDetails').classList.add('hidden'); | |
| 310 $('activateDetails').classList.add('hidden'); | |
| 311 $('detailsInternetLogin').classList.add('hidden'); | |
| 312 if (data.connecting) { | |
| 313 page.setAttribute('connecting', data.connecting); | |
| 314 } else { | |
| 315 page.removeAttribute('connecting'); | |
| 316 } | |
| 317 if (data.connected) { | |
| 318 page.setAttribute('connected', data.connected); | |
| 319 $('inetTitle').textContent = localStrings.getString('inetStatus'); | |
| 320 } else { | |
| 321 page.removeAttribute('connected'); | |
| 322 $('inetTitle').textContent = localStrings.getString('inetConnect'); | |
| 323 $('detailsInternetLogin').classList.remove('hidden'); | |
| 324 } | |
| 325 $('connectionState').textContent = data.connectionState; | |
| 326 var address = $('inetAddress'); | |
| 327 address.data = data; | |
| 328 if (data.ipconfigs && data.ipconfigs.length) { | |
| 329 // We will be displaying only the first ipconfig info for now until we | |
| 330 // start supporting multiple IP addresses per connection. | |
| 331 address.textContent = data.ipconfigs[0].address; | |
| 332 $('inetSubnetAddress').textContent = data.ipconfigs[0].subnetAddress; | |
| 333 $('inetGateway').textContent = data.ipconfigs[0].gateway; | |
| 334 $('inetDns').textContent = data.ipconfigs[0].dns; | |
| 335 } else { | |
| 336 // This is most likely a transient state due to device still connecting. | |
| 337 address.textContent = '?'; | |
| 338 $('inetSubnetAddress').textContent = '?'; | |
| 339 $('inetGateway').textContent = '?'; | |
| 340 $('inetDns').textContent = '?'; | |
| 341 } | |
| 342 if (data.hardwareAddress) { | |
| 343 $('hardwareAddress').textContent = data.hardwareAddress; | |
| 344 $('hardwareAddressRow').style.display = 'table-row'; | |
| 345 } else { | |
| 346 // This is most likely a device without a hardware address. | |
| 347 $('hardwareAddressRow').style.display = 'none'; | |
| 348 } | |
| 349 if (data.type == 2) { | |
| 350 OptionsPage.showTab($('wifiNetworkNavTab')); | |
| 351 page.setAttribute('wireless', true); | |
| 352 page.removeAttribute('ethernet'); | |
| 353 page.removeAttribute('cellular'); | |
| 354 page.removeAttribute('gsm'); | |
| 355 $('inetSsid').textContent = data.ssid; | |
| 356 $('autoConnectNetwork').checked = data.autoConnect; | |
| 357 if (!AccountsOptions.currentUserIsOwner()) { | |
| 358 // Disable this for guest non-Owners. | |
| 359 $('autoConnectNetwork').disabled = true; | |
| 360 } | |
| 361 page.removeAttribute('password'); | |
| 362 if (data.encrypted) { | |
| 363 page.setAttribute('password', true); | |
| 364 } | |
| 365 } else if(data.type == 5) { | |
| 366 if (!data.gsm) | |
| 367 OptionsPage.showTab($('cellularPlanNavTab')); | |
| 368 else | |
| 369 OptionsPage.showTab($('cellularConnNavTab')); | |
| 370 page.removeAttribute('ethernet'); | |
| 371 page.removeAttribute('wireless'); | |
| 372 page.setAttribute('cellular', true); | |
| 373 if (data.carrierUrl) { | |
| 374 var a = $('carrierUrl'); | |
| 375 if (!a) { | |
| 376 a = document.createElement('a'); | |
| 377 $('serviceName').appendChild(a); | |
| 378 a.id = 'carrierUrl'; | |
| 379 a.target = "_blank"; | |
| 380 } | |
| 381 a.href = data.carrierUrl; | |
| 382 a.textContent = data.serviceName; | |
| 383 } else { | |
| 384 $('serviceName').textContent = data.serviceName; | |
| 385 } | |
| 386 $('networkTechnology').textContent = data.networkTechnology; | |
| 387 $('activationState').textContent = data.activationState; | |
| 388 $('roamingState').textContent = data.roamingState; | |
| 389 $('restrictedPool').textContent = data.restrictedPool; | |
| 390 $('errorState').textContent = data.errorState; | |
| 391 $('manufacturer').textContent = data.manufacturer; | |
| 392 $('modelId').textContent = data.modelId; | |
| 393 $('firmwareRevision').textContent = data.firmwareRevision; | |
| 394 $('hardwareRevision').textContent = data.hardwareRevision; | |
| 395 $('lastUpdate').textContent = data.lastUpdate; | |
| 396 $('prlVersion').textContent = data.prlVersion; | |
| 397 $('meid').textContent = data.meid; | |
| 398 $('imei').textContent = data.imei; | |
| 399 $('mdn').textContent = data.mdn; | |
| 400 $('esn').textContent = data.esn; | |
| 401 $('min').textContent = data.min; | |
| 402 if (!data.gsm) { | |
| 403 page.removeAttribute('gsm'); | |
| 404 } else { | |
| 405 $('operatorName').textContent = data.operatorName; | |
| 406 $('operatorCode').textContent = data.operatorCode; | |
| 407 $('imsi').textContent = data.imsi; | |
| 408 $('cellularApn').value = data.apn; | |
| 409 $('cellularApnUsername').value = data.apn_username; | |
| 410 $('cellularApnPassword').value = data.apn_password; | |
| 411 $('sim-card-lock-enabled').checked = data.simCardLockEnabled; | |
| 412 InternetOptions.enableSecurityTab(true); | |
| 413 page.setAttribute('gsm', true); | |
| 414 } | |
| 415 | |
| 416 // CSS selectors don't like me anymore, switching to classList | |
| 417 if (data.showBuyButton) | |
| 418 $('buyplanDetails').classList.remove('hidden'); | |
| 419 else | |
| 420 $('buyplanDetails').classList.add('hidden'); | |
| 421 | |
| 422 if (data.showActivateButton) { | |
| 423 $('activateDetails').classList.remove('hidden') | |
| 424 $('detailsInternetLogin').classList.add('hidden'); | |
| 425 } else { | |
| 426 $('activateDetails').classList.add('hidden'); | |
| 427 } | |
| 428 | |
| 429 page.removeAttribute('hascellplan'); | |
| 430 if (data.connected) { | |
| 431 page.removeAttribute('nocellplan'); | |
| 432 page.setAttribute('cellplanloading', true); | |
| 433 chrome.send('refreshCellularPlan', [data.servicePath]) | |
| 434 } else { | |
| 435 page.setAttribute('nocellplan', true); | |
| 436 page.removeAttribute('cellplanloading'); | |
| 437 } | |
| 438 } else { | |
| 439 OptionsPage.showTab($('internetNavTab')); | |
| 440 page.setAttribute('ethernet', true); | |
| 441 page.removeAttribute('wireless'); | |
| 442 page.removeAttribute('cellular'); | |
| 443 page.removeAttribute('gsm'); | |
| 444 } | |
| 445 OptionsPage.navigateToPage('detailsInternetPage'); | |
| 446 }; | |
| 447 | |
| 448 // Export | |
| 449 return { | |
| 450 InternetOptions: InternetOptions | |
| 451 }; | |
| 452 }); | |
| OLD | NEW |