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

Side by Side Diff: chrome/browser/resources/options/chromeos/internet_options.js

Issue 7003007: Apply content-security-policy to the HTML options page. This is a (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698