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 |