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

Unified Diff: chrome/browser/resources/settings/internet_page/internet_config.js

Issue 2848683003: MD Settings: Add settings-internet-config (WiFi only, no certs) (Closed)
Patch Set: . Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/settings/internet_page/internet_config.js
diff --git a/chrome/browser/resources/settings/internet_page/internet_config.js b/chrome/browser/resources/settings/internet_page/internet_config.js
new file mode 100644
index 0000000000000000000000000000000000000000..113d93fe657934d37e91bcb1a7cbef59def503fa
--- /dev/null
+++ b/chrome/browser/resources/settings/internet_page/internet_config.js
@@ -0,0 +1,270 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @fileoverview
+ * 'settings-internet-config' provides configuration of authentication
+ * properties for new and existing networks.
+ */
+Polymer({
+ is: 'settings-internet-config',
+
+ behaviors: [settings.RouteObserverBehavior, I18nBehavior],
+
+ properties: {
+ /**
+ * Interface for networkingPrivate calls, passed from internet_page.
+ * @type {NetworkingPrivate}
+ */
+ networkingPrivate: Object,
+
+ /**
+ * The properties for the network being configured.
stevenjb 2017/05/02 00:17:45 current properties (if any)
+ * @type {!chrome.networkingPrivate.NetworkProperties|undefined}
+ * @private
+ */
+ networkProperties_: Object,
+
+ /**
+ * The configuraiton properties for the network.
+ * @type {!chrome.networkingPrivate.NetworkConfigProperties|undefined}
+ * @private
+ */
+ configProperties_: Object,
+
+ /** @private */
stevenjb 2017/05/02 00:17:45 Document
+ guid_: String,
+
+ /** @private */
stevenjb 2017/05/02 00:17:45 Document
+ title_: String,
+
+ /** @private */
stevenjb 2017/05/02 00:17:45 Document
+ shareNetwork_: Boolean,
+
+ /**
+ * Object providing network type values for data binding.
+ * @const
+ * @private
+ */
+ NetworkType_: {
+ type: Object,
+ value: {
+ CELLULAR: CrOnc.Type.CELLULAR,
+ ETHERNET: CrOnc.Type.ETHERNET,
+ VPN: CrOnc.Type.VPN,
+ WI_FI: CrOnc.Type.WI_FI,
+ WI_MAX: CrOnc.Type.WI_MAX,
+ },
+ readOnly: true
+ },
+
+ /**
+ * @type {!Array<{value: string, label: string}>}
stevenjb 2017/05/02 00:17:45 Document all of these
+ * @private
+ */
+ securityItems_: {
+ type: Array,
+ readOnly: true,
+ value: function() {
+ return [
+ CrOnc.Security.NONE, CrOnc.Security.WEP_PSK, CrOnc.Security.WPA_PSK,
+ CrOnc.Security.WPA_EAP
+ ];
+ }
+ },
+
+ /**
+ * @type {!Array<string>}
+ * @private
+ */
+ eapOuterItems_: {
+ type: Array,
+ readOnly: true,
+ value: function() {
+ return ['LEAP', 'PEAP', 'EAP-TLS', 'EAP-TTLS'];
+ }
+ },
+
+ /**
+ * @type {!Array<string>}
+ * @private
+ */
+ eapInnerItems_: {
+ type: Array,
+ readOnly: true,
+ value: function() {
+ return ['Automatic', 'MD5', 'MSCHAP', 'MSCHAPv2', 'PAP', 'CHAP', 'GTC'];
+ }
+ },
+ },
+
+ observers: ['updateConfigProperties_(configProperties_.*)'],
stevenjb 2017/05/02 00:17:45 Elim
+
+ /**
+ * settings.RouteObserverBehavior
+ * @param {!settings.Route} route
+ * @protected
+ */
+ currentRouteChanged: function(route) {
+ var queryParams = settings.getQueryParameters();
+ this.guid_ = queryParams.get('guid') || '';
+
+ // Set placeholder networkProperties until they are loaded.
stevenjb 2017/05/02 00:17:45 Update comment (not a placeholder of guid is empty
+ var name = queryParams.get('name') || '';
+ var type = /** @type {!chrome.networkingPrivate.NetworkType} */ (
+ queryParams.get('type')) ||
+ CrOnc.Type.WI_FI;
+ this.networkProperties_ = {
+ GUID: this.guid_,
+ Name: name,
+ Type: type,
+ };
+ var configProperties = {Type: type};
+ if (type == CrOnc.Type.WI_FI) {
+ configProperties.WiFi = {
+ SSID: '',
+ Security: CrOnc.Security.NONE,
+ };
+ }
+ this.configProperties_ = configProperties;
+ if (this.guid_) {
+ this.networkingPrivate.getProperties(
+ this.guid_, this.getPropertiesCallback_.bind(this));
+ } else {
+ this.title_ = this.i18n('OncType' + type);
+ this.shareNetwork_ = false;
+ }
+ },
+
+ /** @private */
+ onCancelTap_: function() {
+ this.close_();
+ },
+
+ /** @private */
+ onSaveTap_: function() {
+ var newConfig = /** @type {boolean} */ (!!this.guid_);
+ var id = newConfig ? this.networkProperties_.Type : this.guid_;
+ var handleError = function() {
+ var error = chrome.runtime.lastError;
+ if (error && error.message) {
+ console.error('Error configuring: ' + id + ': ' + error.message);
+ this.close_();
+ }
+ }.bind(this);
+
+ var propertiesToSet = Object.assign({}, this.configProperties_);
+ if (newConfig) {
+ this.networkingPrivate.createNetwork(
+ this.shareNetwork_, propertiesToSet, handleError);
+ } else {
+ propertiesToSet.GUID = this.guid_;
+ this.networkingPrivate.setProperties(
+ this.guid_, propertiesToSet, handleError);
+ }
+ },
+
+ /** @private */
+ close_: function() {
+ // Delay navigating to allow other subpages to load first.
stevenjb 2017/05/02 00:17:45 when called from a getPropertiesCallback_ error.
+ requestAnimationFrame(function() {
+ settings.navigateToPreviousRoute();
+ });
+ },
+
+ /**
+ * networkingPrivate.getProperties callback.
+ * @param {!chrome.networkingPrivate.NetworkProperties} properties
+ * @private
+ */
+ getPropertiesCallback_: function(properties) {
+ if (!properties) {
stevenjb 2017/05/02 00:17:45 Test lastError
+ // If |properties| is null, the network no longer exists; close the page.
+ console.error('Network no longer exists: ' + this.guid_);
+ this.close_();
+ return;
+ }
+ this.networkProperties_ = properties;
+ this.title_ = properties.Name || this.i18n('OncType' + properties.Type);
+ this.shareNetwork_ = properties.Source == CrOnc.Source.DEVICE ||
+ properties.Source == CrOnc.Source.DEVICE_POLICY;
+
+ var configProperties =
+ /** @type {chrome.networkingPrivate.NetworkConfigProperties} */ ({
+ Name: properties.Name,
+ Type: properties.Type,
+ });
+ if (properties.WiFi) {
+ configProperties.WiFi = {
+ AutoConnect: properties.WiFi.AutoConnect,
+ EAP: properties.WiFi.EAP,
+ Passphrase: properties.WiFi.Passphrase,
+ SSID: properties.WiFi.SSID,
+ Security: properties.WiFi.Security
+ };
+ }
+ this.configProperties_ = configProperties;
+ this.updateConfigProperties_();
+ },
+
+ /** @private */
+ updateConfigProperties_: function() {
stevenjb 2017/05/02 00:17:45 Elim (merge with above)
+ if (this.configProperties_.WiFi) {
+ if (this.configProperties_.WiFi.Security == CrOnc.Security.WPA_EAP) {
+ this.configProperties_.WiFi.EAP = this.configProperties_.WiFi.EAP || {
+ Outer: 'LEAP',
+ };
+ } else {
+ delete this.configProperties_.WiFi.EAP;
+ }
+ }
+ },
+
+ /**
+ * @param {string} type The network type.
+ * @param {!CrOnc.NetworkProperties} networkProperties
+ * @return {boolean} True if the network type matches 'type'.
+ * @private
+ */
+ isType_: function(type, networkProperties) {
+ return networkProperties.Type == type;
+ },
+
+ /**
+ * @return boolean
+ * @private
+ */
+ showPassphrase_() {
+ if (this.configProperties_.Type != CrOnc.Type.WI_FI)
+ return false;
+ var security = this.get('Security', this.configProperties_.WiFi);
+ return !!security &&
+ (security == CrOnc.Security.WEP_PSK ||
+ security == CrOnc.Security.WPA_PSK);
+ },
+
+ /**
+ * @return boolean
+ * @private
+ */
+ showEap_() {
+ if (this.configProperties_.Type != CrOnc.Type.WI_FI)
+ return false;
+ var security = this.get('Security', this.configProperties_.WiFi);
+ return !!security && security == CrOnc.Security.WPA_EAP;
+ },
+
+ /**
+ * @param {string} key
+ * @param {string} prefix
+ * @return {string} The text to display for the onc value.
+ * @private
+ */
+ getOncLabel_: function(key, prefix) {
+ var oncKey = 'Onc' + prefix.replace(/\./g, '-') + '_' + key;
+ if (this.i18nExists(oncKey))
+ return this.i18n(oncKey);
+ return key;
+ }
+});

Powered by Google App Engine
This is Rietveld 408576698