diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-11-20 15:06:40 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-11-22 11:48:58 +0000 |
commit | daa093eea7c773db06799a13bd7e4e2e2a9f8f14 (patch) | |
tree | 96cc5e7b9194c1b29eab927730bfa419e7111c25 /chromium/chrome/browser/resources/settings/internet_page | |
parent | be59a35641616a4cf23c4a13fa0632624b021c1b (diff) | |
download | qtwebengine-chromium-daa093eea7c773db06799a13bd7e4e2e2a9f8f14.tar.gz |
BASELINE: Update Chromium to 63.0.3239.58
Change-Id: Ia93b322a00ba4dd4004f3bcf1254063ba90e1605
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/chrome/browser/resources/settings/internet_page')
18 files changed, 149 insertions, 716 deletions
diff --git a/chromium/chrome/browser/resources/settings/internet_page/compiled_resources2.gyp b/chromium/chrome/browser/resources/settings/internet_page/compiled_resources2.gyp index 8cbb7f9805e..18f9191b2ff 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/compiled_resources2.gyp +++ b/chromium/chrome/browser/resources/settings/internet_page/compiled_resources2.gyp @@ -22,6 +22,7 @@ 'target_name': 'internet_config', 'dependencies': [ '../compiled_resources2.gyp:route', + '<(DEPTH)/ui/webui/resources/cr_components/chromeos/network/compiled_resources2.gyp:network_config', '<(DEPTH)/ui/webui/resources/cr_elements/chromeos/network/compiled_resources2.gyp:cr_onc_types', '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert', '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:i18n_behavior', @@ -71,19 +72,6 @@ 'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'], }, { - 'target_name': 'network_config_input', - 'dependencies': [], - 'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'], - }, - { - 'target_name': 'network_config_select', - 'dependencies': [ - '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert', - '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:i18n_behavior', - ], - 'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'], - }, - { 'target_name': 'network_proxy_section', 'dependencies': [ '../compiled_resources2.gyp:route', diff --git a/chromium/chrome/browser/resources/settings/internet_page/internet_config.html b/chromium/chrome/browser/resources/settings/internet_page/internet_config.html index 6c2a1f2fdd1..fd8d716df89 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/internet_config.html +++ b/chromium/chrome/browser/resources/settings/internet_page/internet_config.html @@ -1,14 +1,12 @@ <link rel="import" href="chrome://resources/html/polymer.html"> +<link rel="import" href="chrome://resources/cr_components/chromeos/network/network_config.html"> <link rel="import" href="chrome://resources/cr_elements/chromeos/network/cr_network_icon.html"> <link rel="import" href="chrome://resources/cr_elements/chromeos/network/cr_onc_types.html"> <link rel="import" href="chrome://resources/html/i18n_behavior.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/paper-toggle-button/paper-toggle-button.html"> <link rel="import" href="internet_shared_css.html"> -<link rel="import" href="network_config_input.html"> -<link rel="import" href="network_config_select.html"> <dom-module id="settings-internet-config"> <template> @@ -20,7 +18,7 @@ <div class="start layout horizontal center"> <cr-network-icon network-state="[[networkProperties_]]" is-list-item> </cr-network-icon> - <div class="title">[[title_]]</div> + <div class="title">[[getTitle_(networkProperties_.*)]]</div> </div> <div id="buttonDiv"> <paper-button class="secondary-button" on-tap="onCancelTap_"> @@ -28,79 +26,27 @@ </paper-button> <template is="dom-if" if="[[guid_]]"> <paper-button class="primary-button" on-tap="onSaveTap_" - disabled="[[!saveIsEnabled_(configProperties_.*)]]"> + disabled="[[!enableSave_]]"> $i18n{save} </paper-button> </template> <template is="dom-if" if="[[!guid_]]"> <paper-button class="primary-button" on-tap="onConnectTap_" - disabled="[[!connectIsEnabled_(configProperties_.*)]]"> + disabled="[[!enableConnect_]]"> $i18n{networkButtonConnect} </paper-button> </template> </div> </div> - <!-- WiFi --> - <template is="dom-if" - if="[[isType_(NetworkType_.WI_FI, networkProperties_.Type)]]"> - <div class="settings-box"> - <div id="shareLabel" class="start">$i18n{networkConfigShare}</div> - <paper-toggle-button id="share" checked="{{shareNetwork_}}" - disabled="[[!shareIsEnabled_(guid_, configProperties_.*)]]" - aria-labelledby="shareLabel"> - </paper-toggle-button> - </div> - <network-config-input id="ssid" label="$i18n{OncWiFi-SSID}" - value="{{configProperties_.WiFi.SSID}}" disabled="[[guid_]]"> - </network-config-input> - <network-config-select id="security" label="$i18n{OncWiFi-Security}" - value="{{configProperties_.WiFi.Security}}" disabled="[[guid_]]" - items="[[securityItems_]]" onc-prefix="WiFi.Security"> - </network-config-select> - <network-config-input label="$i18n{OncWiFi-Passphrase}" - value="{{configProperties_.WiFi.Passphrase}}" - hidden="[[!configRequiresPassphrase_(configProperties_.*)]]"> - </network-config-input> - </template> - - <!-- EAP (WiFi, WiMAX, Ethernet) --> - <template is="dom-if" if="[[showEap_]]"> - <network-config-select id="outer" label="$i18n{OncEAP-Outer}" - value="{{eapProperties_.Outer}}" items="[[eapOuterItems_]]" - onc-prefix="EAP.Outer" hidden="[[!showEap_.Outer]]"> - </network-config-select> - <network-config-select id="inner" label="$i18n{OncEAP-Inner}" - value="{{eapProperties_.Inner}}" - items="[[getEapInnerItems_(eapProperties_.Outer)]]" - onc-prefix="EAP.Inner" hidden="[[!showEap_.Inner]]"> - </network-config-select> - <network-config-input label="$i18n{OncEAP-SubjectMatch}" - value="{{eapProperties_.SubjectMatch}}" - hidden="[[!showEap_.SubjectMatch]]"> - </network-config-input> - <network-config-input label="$i18n{OncEAP-Identity}" - value="{{eapProperties_.Identity}}"> - </network-config-input> - <network-config-input label="$i18n{OncEAP-Password}" - value="{{eapProperties_.Password}}" hidden="[[!showEap_.Password]]"> - </network-config-input> - <network-config-input label="$i18n{OncEAP-AnonymousIdentity}" - value="{{eapProperties_.AnonymousIdentity}}" - hidden="[[!showEap_.AnonymousIdentity]]"> - </network-config-input> - <div class="settings-box"> - <div id="saveCredentialsLabel" class="start"> - $i18n{networkConfigSaveCredentials} - </div> - <paper-toggle-button checked="{{eapProperties_.SaveCredentials}}" - aria-labelledby="saveCredentialsLabel"> - </paper-toggle-button> - </div> - </template> - - <!-- TODO(stevenjb): Error message for config or cert failure --> - + <div class="settings-box"> + <network-config id="networkConfig" class="flex" + networking-private="[[networkingPrivate]]" + network-properties="{{networkProperties_}}" + enable-connect="{{enableConnect_}}" enable-save="{{enableSave_}}" + on-close="close_"> + </network-config> + </div> </template> <script src="internet_config.js"></script> </dom-module> diff --git a/chromium/chrome/browser/resources/settings/internet_page/internet_config.js b/chromium/chrome/browser/resources/settings/internet_page/internet_config.js index 4760b53a5e0..a74aa471f2e 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/internet_config.js +++ b/chromium/chrome/browser/resources/settings/internet_page/internet_config.js @@ -4,8 +4,7 @@ /** * @fileoverview - * 'settings-internet-config' provides configuration of authentication - * properties for new and existing networks. + * 'settings-internet-config' is a Settings wrapper for network-config. */ Polymer({ is: 'settings-internet-config', @@ -26,167 +25,21 @@ Polymer({ */ guid_: String, - /** - * The current properties if an existing network being configured. - * This will be undefined when configuring a new network. - * @private {!chrome.networkingPrivate.NetworkProperties|undefined} - */ - networkProperties_: Object, - - /** Set if |guid_| is not empty once networkProperties_ are received. */ - propertiesReceived_: Boolean, - - /** Set once properties have been sent; prevents multiple saves. */ - propertiesSent_: Boolean, - - /** - * The configuration properties for the network. |configProperties_.Type| - * will always be defined as the network type being configured. - * @private {!chrome.networkingPrivate.NetworkConfigProperties} - */ - configProperties_: Object, - - /** - * Reference to the EAP properties for the current type or null if all EAP - * properties should be hidden (e.g. WiFi networks with non EAP Security). - * Note: even though this references an entry in configProperties_, we - * need to send a separate notification when it changes for data binding - * (e.g. by using 'set'). - * @private {?chrome.networkingPrivate.EAPProperties} - */ - eapProperties_: { - type: Object, - value: null, - }, - - /** - * The title to display (network name or type). - * @private - */ - title_: { - type: String, - computed: 'computeTitle_(networkProperties_)', - }, - - /** - * Whether this network should be shared with other users of the device. - * @private - */ - shareNetwork_: { - type: Boolean, - value: true, - }, + /** @private */ + enableConnect_: String, - /** - * Saved security value, used to detect when Security changes. - * @private - */ - savedSecurity_: String, + /** @private */ + enableSave_: String, /** - * Dictionary of boolean values determining which EAP properties to show, - * or null to hide all EAP settings. - * @type {?{ - * Outer: boolean, - * Inner: boolean, - * ServerCA: boolean, - * SubjectMatch: boolean, - * UserCert: boolean, - * Password: boolean, - * AnonymousIdentity: boolean, - * }} - * @private + * The current properties if an existing network is being configured, or + * a minimal subset for a new network. Note: network-config may modify + * this (specifically .name). + * @private {!chrome.networkingPrivate.NetworkProperties} */ - showEap_: { - type: Object, - value: null, - }, - - /** - * Object providing network type values for data binding. Note: Currently - * we only support WiFi, but support for other types will be following - * shortly. - * @const - * @private - */ - NetworkType_: { - type: Object, - value: { - ETHERNET: CrOnc.Type.ETHERNET, - VPN: CrOnc.Type.VPN, - WI_FI: CrOnc.Type.WI_FI, - WI_MAX: CrOnc.Type.WI_MAX, - }, - readOnly: true - }, - - /** - * Array of values for the WiFi Security dropdown. - * @type {!Array<string>} - * @const - * @private - */ - securityItems_: { - type: Array, - readOnly: true, - value: [ - CrOnc.Security.NONE, CrOnc.Security.WEP_PSK, CrOnc.Security.WPA_PSK, - CrOnc.Security.WPA_EAP - ], - }, - - /** - * Array of values for the EAP Method (Outer) dropdown. - * @type {!Array<string>} - * @const - * @private - */ - eapOuterItems_: { - type: Array, - readOnly: true, - value: [ - CrOnc.EAPType.LEAP, CrOnc.EAPType.PEAP, CrOnc.EAPType.EAP_TLS, - CrOnc.EAPType.EAP_TTLS - ], - }, - - /** - * Array of values for the EAP EAP Phase 2 authentication (Inner) dropdown - * when the Outer type is PEAP. - * @type {!Array<string>} - * @const - * @private - */ - eapInnerItemsPeap_: { - type: Array, - readOnly: true, - value: ['Automatic', 'MD5', 'MSCHAPv2'], - }, - - /** - * Array of values for the EAP EAP Phase 2 authentication (Inner) dropdown - * when the Outer type is EAP-TTLS. - * @type {!Array<string>} - * @const - * @private - */ - eapInnerItemsTtls_: { - type: Array, - readOnly: true, - value: ['Automatic', 'MD5', 'MSCHAP', 'MSCHAPv2', 'PAP', 'CHAP', 'GTC'], - }, + networkProperties_: Object, }, - observers: [ - 'updateConfigProperties_(networkProperties_)', - 'updateWiFiSecurity_(configProperties_.WiFi.Security)', - 'updateEapOuter_(eapProperties_.Outer)', - 'updateShowEap_(eapProperties_.*)', - ], - - /** @const */ - MIN_PASSPHRASE_LENGTH: 5, - /** * settings.RouteObserverBehavior * @param {!settings.Route} route @@ -196,10 +49,6 @@ Polymer({ if (route != settings.routes.NETWORK_CONFIG) return; - this.propertiesSent_ = false; - this.savedSecurity_ = ''; - this.showEap_ = null; - var queryParams = settings.getQueryParameters(); this.guid_ = queryParams.get('guid') || ''; @@ -207,17 +56,24 @@ Polymer({ // configurations until the current properties are loaded. var name = queryParams.get('name') || ''; var typeParam = queryParams.get('type'); - var type = typeParam ? CrOnc.getValidType(typeParam) : CrOnc.Type.WI_FI; + var type = (typeParam && CrOnc.getValidType(typeParam)) || CrOnc.Type.WI_FI; assert(type && type != CrOnc.Type.ALL); this.networkProperties_ = { GUID: this.guid_, Name: name, Type: type, }; - if (this.guid_) { - this.networkingPrivate.getProperties( - this.guid_, this.getPropertiesCallback_.bind(this)); - } + + // First focus this page (which will focus a button), then init the config + // element which will focus an enabled element if any. + this.focus(); + this.$.networkConfig.init(); + }, + + focus() { + var e = this.$$('paper-button:not([disabled])'); + assert(e); // The 'cancel' button should never be disabled. + e.focus(); }, /** @private */ @@ -227,322 +83,26 @@ Polymer({ }, /** - * networkingPrivate.getProperties callback. - * @param {!chrome.networkingPrivate.NetworkProperties} properties - * @private - */ - getPropertiesCallback_: function(properties) { - if (!properties) { - // If |properties| is null, the network no longer exists; close the page. - console.error('Network no longer exists: ' + this.guid_); - this.close_(); - return; - } - this.propertiesReceived_ = true; - this.networkProperties_ = properties; - - // Set the current shareNetwork_ value when porperties are received. - var source = this.networkProperties_.Source; - this.shareNetwork_ = - source == CrOnc.Source.DEVICE || source == CrOnc.Source.DEVICE_POLICY; - }, - - /** * @return {string} * @private */ - computeTitle_: function() { + getTitle_: function() { return this.networkProperties_.Name || this.i18n('OncType' + this.networkProperties_.Type); }, - /** - * Updates the config properties when |this.networkProperties_| changes. - * This gets called once when navigating to the page when default properties - * are set, and again for existing networks when the properties are received. - * @private - */ - updateConfigProperties_: function() { - var properties = this.networkProperties_; - var configProperties = - /** @type {chrome.networkingPrivate.NetworkConfigProperties} */ ({ - Name: properties.Name || '', - Type: properties.Type, - }); - if (properties.Type == CrOnc.Type.WI_FI) { - if (properties.WiFi) { - configProperties.WiFi = { - AutoConnect: properties.WiFi.AutoConnect, - EAP: Object.assign({}, properties.WiFi.EAP), - Passphrase: properties.WiFi.Passphrase, - SSID: properties.WiFi.SSID, - Security: properties.WiFi.Security - }; - } else { - configProperties.WiFi = { - AutoConnect: false, - SSID: '', - Security: CrOnc.Security.NONE, - }; - } - // updateWiFiSecurity_ will ensure that EAP properties are set correctly. - } else if (properties.Type == CrOnc.Type.ETHERNET) { - if (properties.Ethernet) { - configProperties.Ethernet = { - AutoConnect: properties.Ethernet.AutoConnect, - EAP: Object.assign({}, properties.Ethernet.EAP), - }; - configProperties.Ethernet.EAP.Outer = - configProperties.Ethernet.EAP.Outer || CrOnc.EAPType.LEAP; - } else { - configProperties.Ethernet = { - AutoConnect: false, - }; - } - } else if (properties.Type == CrOnc.Type.WI_MAX) { - if (properties.WiMAX) { - configProperties.WiMAX = { - AutoConnect: properties.WiMAX.AutoConnect, - EAP: Object.assign({}, properties.WiMAX.EAP), - }; - // WiMAX has no EAP.Outer property, only Identity and Password. - } else { - configProperties.WiMAX = { - AutoConnect: false, - }; - } - } - this.configProperties_ = configProperties; - this.set('eapProperties_', this.getEap_(this.configProperties_)); - if (!this.eapProperties_) - this.showEap_ = null; - }, - - /** - * Ensures that the appropriate properties are set or deleted when the - * Security type changes. - * @private - */ - updateWiFiSecurity_: function() { - if (!this.configProperties_.WiFi) - return; // May get called when clearing the property. - var security = this.configProperties_.WiFi.Security || CrOnc.Security.NONE; - if (security == this.savedSecurity_) - return; - this.savedSecurity_ = security; - - if (!this.guid_) { - // Set the default share state for new configurations. - // TODO(stevenjb): also check login state. - this.shareNetwork_ = security == CrOnc.Security.NONE; - } - - if (security == CrOnc.Security.WPA_EAP) { - var eap = this.configProperties_.WiFi.EAP || {}; - eap.Outer = eap.Outer || CrOnc.EAPType.LEAP; - this.configProperties_.WiFi.EAP = eap; - this.set('eapProperties_', this.configProperties_.WiFi.EAP); - } else { - delete this.configProperties_.WiFi.EAP; - this.eapProperties_ = null; - } - }, - - /** - * Ensures that the appropriate EAP properties are created (or deleted when - * the EAP.Outer property changes. - * @private - */ - updateEapOuter_: function() { - var eap = this.eapProperties_; - if (!eap || !eap.Outer) - return; - var innerItems = this.getEapInnerItems_(eap.Outer); - if (innerItems.length > 0) { - if (!eap.Inner || innerItems.indexOf(eap.Inner) < 0) - this.set('eapProperties_.Inner', innerItems[0]); - } else { - this.set('eapProperties_.Inner', undefined); - } - }, - /** @private */ - updateShowEap_: function() { - if (!this.eapProperties_) { - this.showEap_ = null; - return; - } - var type = this.configProperties_.Type; - var outer = this.eapProperties_.Outer; - this.showEap_ = { - Outer: type != CrOnc.Type.WI_MAX, - Inner: outer == CrOnc.EAPType.PEAP || outer == CrOnc.EAPType.EAP_TTLS, - ServerCA: type != CrOnc.Type.WI_MAX && outer != CrOnc.EAPType.LEAP, - SubjectMatch: outer == CrOnc.EAPType.EAP_TLS, - UserCert: outer == CrOnc.EAPType.EAP_TLS, - Password: outer != CrOnc.EAPType.EAP_TLS, - AnonymousIdentity: - outer == CrOnc.EAPType.PEAP || outer == CrOnc.EAPType.EAP_TTLS, - }; - }, - - /** - * @param {!chrome.networkingPrivate.NetworkConfigProperties} properties - * @return {?chrome.networkingPrivate.EAPProperties} - * @private - */ - getEap_: function(properties) { - if (properties.WiFi) - return properties.WiFi.EAP || null; - if (properties.Ethernet) - return properties.Ethernet.EAP || null; - if (properties.WiMAX) - return properties.WiMAX.EAP || null; - return null; - }, - - /** - * @param {CrOnc.Type} type The type to compare against. - * @param {CrOnc.Type} networkType The current network type. - * @return {boolean} True if the network type matches 'type'. - * @private - */ - isType_: function(type, networkType) { - return type == networkType; - }, - - /** - * @return {boolean} - * @private - */ - saveIsEnabled_: function() { - return this.propertiesReceived_ && !this.propertiesSent_; - }, - - /** - * @return {boolean} - * @private - */ - connectIsEnabled_: function() { - if (this.propertiesSent_) - return false; - if (this.configProperties_.Type == CrOnc.Type.WI_FI) { - if (!this.get('WiFi.SSID', this.configProperties_)) - return false; - if (this.configRequiresPassphrase_()) { - var passphrase = this.get('WiFi.Passphrase', this.configProperties_); - if (!passphrase || passphrase.length < this.MIN_PASSPHRASE_LENGTH) - return false; - } - } - // TODO(stevenjb): Check certificates. - return true; - }, - - /** - * @return {boolean} - * @private - */ - shareIsEnabled_: function() { - if (this.networkProperties_.Source == CrOnc.Source.DEVICE || - this.networkProperties_.Source == CrOnc.Source.DEVICE_POLICY) { - return false; - } - // TODO(stevenjb): Check login state. - - if (this.configProperties_.Type == CrOnc.Type.WI_FI) { - var security = this.get('WiFi.Security', this.configProperties_); - if (!security || security == CrOnc.Security.NONE) { - return false; - } else if (security == CrOnc.Security.WPA_EAP) { - var outer = this.get('WiFi.EAP.Outer', this.configProperties_); - if (outer == CrOnc.EAPType.EAP_TLS) - return false; - } - // TODO(stevenjb): Check certificates. - } - return true; + onCancelTap_: function() { + this.close_(); }, /** @private */ onSaveTap_: function() { - assert(this.guid_); - if (this.propertiesSent_) - return; - this.propertiesSent_ = true; - var propertiesToSet = Object.assign({}, this.configProperties_); - propertiesToSet.GUID = this.guid_; - this.networkingPrivate.setProperties( - this.guid_, propertiesToSet, this.setPropertiesCallback_.bind(this)); - }, - - /** @private */ - setPropertiesCallback_: function() { - var error = chrome.runtime.lastError && chrome.runtime.lastError.message; - if (error) { - console.error( - 'Error setting network properties: ' + this.guid_ + ': ' + error); - } - this.close_(); + this.$.networkConfig.saveOrConnect(); }, /** @private */ onConnectTap_: function() { - assert(!this.guid_); - if (this.propertiesSent_) - return; - this.propertiesSent_ = true; - // Create the configuration, then connect to it in the callback. - this.networkingPrivate.createNetwork( - this.shareNetwork_, this.configProperties_, - this.createNetworkCallback_.bind(this)); - }, - - /** - * @param {string} guid - * @private - */ - createNetworkCallback_: function(guid) { - var error = chrome.runtime.lastError && chrome.runtime.lastError.message; - if (error) { - // TODO(stevenjb): Display error message. - console.error( - 'Error creating network type: ' + this.networkProperties_.Type + - ': ' + error); - return; - } - this.networkProperties_.GUID = guid; - this.fire('network-connect', {networkProperties: this.networkProperties_}); - this.close_(); - }, - - /** @private */ - onCancelTap_: function() { - this.close_(); - }, - - /** - * @return boolean - * @private - */ - configRequiresPassphrase_: function() { - if (this.configProperties_.Type != CrOnc.Type.WI_FI) - return false; - var security = this.get('WiFi.Security', this.configProperties_); - return security == CrOnc.Security.WEP_PSK || - security == CrOnc.Security.WPA_PSK; - }, - - /** - * @param {string} outer - * @return {!Array<string>} - * @private - */ - getEapInnerItems_: function(outer) { - if (outer == CrOnc.EAPType.PEAP) - return this.eapInnerItemsPeap_; - if (outer == CrOnc.EAPType.EAP_TTLS) - return this.eapInnerItemsTtls_; - return []; + this.$.networkConfig.saveOrConnect(); }, }); diff --git a/chromium/chrome/browser/resources/settings/internet_page/internet_detail_page.html b/chromium/chrome/browser/resources/settings/internet_page/internet_detail_page.html index 1caee855099..ac1652041e5 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/internet_detail_page.html +++ b/chromium/chrome/browser/resources/settings/internet_page/internet_detail_page.html @@ -1,6 +1,7 @@ <link rel="import" href="chrome://resources/html/polymer.html"> <link rel="import" href="chrome://resources/cr_components/chromeos/network/network_apnlist.html"> +<link rel="import" href="chrome://resources/cr_components/chromeos/network/network_choose_mobile.html"> <link rel="import" href="chrome://resources/cr_components/chromeos/network/network_ip_config.html"> <link rel="import" href="chrome://resources/cr_components/chromeos/network/network_nameservers.html"> <link rel="import" href="chrome://resources/cr_components/chromeos/network/network_property_list.html"> @@ -160,22 +161,22 @@ <!-- Choose Mobile Network (Cellular only). --> <template is="dom-if" if="[[showCellularChooseNetwork_(networkProperties)]]"> - <div class="settings-box"> - <div class="start">$i18n{networkChooseMobileDetail}</div> - <paper-button on-tap="onChooseMobileTap_"> - $i18n{networkChooseMobileButton} - </paper-button> + <div class="settings-box single-column stretch"> + <network-choose-mobile networking-private="[[networkingPrivate]]" + network-properties="[[networkProperties]]"> + </network-choose-mobile> </div> </template> <!-- Data roaming (Cellular only). --> <template is="dom-if" if="[[isCellular_(networkProperties)]]"> - <settings-toggle-button id="allowDataRoaming" - pref="{{prefs.cros.signed.data_roaming_enabled}}" - label="$i18n{networkAllowDataRoaming}"> - </settings-toggle-button> + <settings-toggle-button id="allowDataRoaming" + pref="{{prefs.cros.signed.data_roaming_enabled}}" + label="$i18n{networkAllowDataRoaming}"> + </settings-toggle-button> </template> <!-- SIM Info (Cellular only). --> - <template is="dom-if" if="[[showCellularSim_(networkProperties)]]"> + <template is="dom-if" if="[[showCellularSim_(networkProperties)]]" + restamp> <div class="settings-box single-column stretch"> <network-siminfo editable on-siminfo-change="onNetworkPropertyChange_" diff --git a/chromium/chrome/browser/resources/settings/internet_page/internet_detail_page.js b/chromium/chrome/browser/resources/settings/internet_page/internet_detail_page.js index 598a2369ff2..03ebf640485 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/internet_detail_page.js +++ b/chromium/chrome/browser/resources/settings/internet_page/internet_detail_page.js @@ -229,11 +229,10 @@ Polymer({ if (!this.didSetFocus_) { // Focus a button once the initial state is set. this.didSetFocus_ = true; - var button = this.$$('#titleDiv .primary-button:not([hidden])'); - if (!button) - button = this.$$('#titleDiv paper-button:not([hidden])'); - assert(button); // At least one button will always be visible. - button.focus(); + var button = this.$$('#titleDiv .primary-button:not([hidden])') || + this.$$('#titleDiv paper-button:not([hidden])'); + if (button) + button.focus(); } if (this.shouldShowConfigureWhenNetworkLoaded_ && @@ -371,6 +370,8 @@ Polymer({ * @private */ getStateText_: function(networkProperties) { + if (!networkProperties.ConnectionState) + return ''; return this.i18n('Onc' + networkProperties.ConnectionState); }, @@ -486,14 +487,14 @@ Polymer({ if (this.connectNotAllowed_(networkProperties, globalPolicy)) return false; var type = networkProperties.Type; - if (type == CrOnc.Type.CELLULAR) + if (type == CrOnc.Type.CELLULAR || type == CrOnc.Type.TETHER) return false; if ((type == CrOnc.Type.WI_FI || type == CrOnc.Type.WI_MAX) && networkProperties.ConnectionState != CrOnc.ConnectionState.NOT_CONNECTED) { return false; } - return this.isRemembered_(networkProperties); + return true; }, /** @@ -540,8 +541,9 @@ Polymer({ enableConnect_: function(networkProperties, defaultNetwork, globalPolicy) { if (!this.showConnect_(networkProperties, globalPolicy)) return false; - if (networkProperties.Type == CrOnc.Type.CELLULAR && - CrOnc.isSimLocked(networkProperties)) { + if ((networkProperties.Type == CrOnc.Type.CELLULAR) && + (CrOnc.isSimLocked(networkProperties) || + this.get('Cellular.Scanning', networkProperties))) { return false; } if (networkProperties.Type == CrOnc.Type.VPN && !defaultNetwork) @@ -607,12 +609,6 @@ Polymer({ this.networkingPrivate.startActivate(this.guid); }, - /** @private */ - onChooseMobileTap_: function() { - // TODO(stevenjb): Integrate ChooseMobileNetworkDialog with WebUI. - chrome.send('addNetwork', [this.networkProperties.Type]); - }, - /** @const {string} */ CR_EXPAND_BUTTON_TAG: 'CR-EXPAND-BUTTON', @@ -1018,8 +1014,8 @@ Polymer({ */ showCellularSim_: function(networkProperties) { return networkProperties.Type == CrOnc.Type.CELLULAR && - this.get('Cellular.Family', this.networkProperties) == - CrOnc.NetworkTechnology.GSM; + !!networkProperties.Cellular && + networkProperties.Cellular.Family != 'CDMA'; }, /** diff --git a/chromium/chrome/browser/resources/settings/internet_page/internet_page.html b/chromium/chrome/browser/resources/settings/internet_page/internet_page.html index a213bc61188..f77ea978261 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/internet_page.html +++ b/chromium/chrome/browser/resources/settings/internet_page/internet_page.html @@ -51,14 +51,16 @@ if="[[deviceIsEnabled_(deviceStates.WiFi)]]"> <div actionable class="list-item" on-tap="onAddWiFiTap_"> <div class="start">$i18n{internetAddWiFi}</div> - <button class="icon-external" is="paper-icon-button-light" + <button class$="[[getAddNetworkClass_('WiFi')]]" + is="paper-icon-button-light" aria-label="$i18n{internetAddWiFi}"> </button> </div> </template> <div actionable class="list-item" on-tap="onAddVPNTap_"> <div class="start">$i18n{internetAddVPN}</div> - <button class="icon-external" is="paper-icon-button-light" + <button class$="[[getAddNetworkClass_('VPN')]]" + is="paper-icon-button-light" aria-label="$i18n{internetAddVPN}"> </button> </div> diff --git a/chromium/chrome/browser/resources/settings/internet_page/internet_page.js b/chromium/chrome/browser/resources/settings/internet_page/internet_page.js index 50000efea86..85c7a78c1c8 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/internet_page.js +++ b/chromium/chrome/browser/resources/settings/internet_page/internet_page.js @@ -277,6 +277,20 @@ Polymer({ }, /** + * @param {string} type + * @return {string} + * @private + */ + getAddNetworkClass_: function(type) { + if (loadTimeData.getBoolean('networkSettingsConfig')) { + if (type == CrOnc.Type.WI_FI) + return 'icon-add-wifi'; + return 'icon-add-circle'; + } + return 'icon-external'; + }, + + /** * @param {string} subpageType * @param {!Object<!CrOnc.DeviceStateProperties>|undefined} deviceStates * @return {!CrOnc.DeviceStateProperties|undefined} @@ -325,7 +339,10 @@ Polymer({ /** @private */ onAddVPNTap_: function() { - chrome.send('addNetwork', [CrOnc.Type.VPN]); + if (loadTimeData.getBoolean('networkSettingsConfig')) + this.showConfig_(CrOnc.Type.VPN); + else + chrome.send('addNetwork', [CrOnc.Type.VPN]); }, /** diff --git a/chromium/chrome/browser/resources/settings/internet_page/internet_shared_css.html b/chromium/chrome/browser/resources/settings/internet_page/internet_shared_css.html index 8a9fbd27179..1d60703ee2c 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/internet_shared_css.html +++ b/chromium/chrome/browser/resources/settings/internet_page/internet_shared_css.html @@ -4,6 +4,10 @@ <dom-module id="internet-shared"> <template> <style include="settings-shared"> + :root { + --network-control-width: 250px; + } + cr-network-icon { -webkit-padding-end: var(--settings-box-row-padding); } @@ -20,6 +24,7 @@ }; margin-bottom: 0; margin-top: -9px; + width: var(--network-control-width); } .indented { diff --git a/chromium/chrome/browser/resources/settings/internet_page/internet_subpage.js b/chromium/chrome/browser/resources/settings/internet_page/internet_subpage.js index 92870ea7316..0434b0e14c0 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/internet_subpage.js +++ b/chromium/chrome/browser/resources/settings/internet_page/internet_subpage.js @@ -354,10 +354,12 @@ Polymer({ /** @private */ onAddButtonTap_: function() { assert(this.deviceState); + var type = this.deviceState.Type; + assert(type != CrOnc.Type.CELLULAR); if (loadTimeData.getBoolean('networkSettingsConfig')) - this.fire('show-config', {GUID: '', Type: this.deviceState.Type}); + this.fire('show-config', {GUID: '', Type: type}); else - chrome.send('addNetwork', [this.deviceState.Type]); + chrome.send('addNetwork', [type]); }, /** diff --git a/chromium/chrome/browser/resources/settings/internet_page/network_config_input.html b/chromium/chrome/browser/resources/settings/internet_page/network_config_input.html deleted file mode 100644 index 8ce5b88c82d..00000000000 --- a/chromium/chrome/browser/resources/settings/internet_page/network_config_input.html +++ /dev/null @@ -1,20 +0,0 @@ -<link rel="import" href="chrome://resources/html/polymer.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/iron-input/iron-input.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/paper-input/paper-input-container.html"> -<link rel="import" href="../settings_shared_css.html"> - -<dom-module id="network-config-input"> - <template> - <style include="settings-shared"> - </style> - - <div class="settings-box"> - <div id="label" class="start">[[label]]</div> - <paper-input-container no-label-float> - <input is="iron-input" value="{{value::change}}" - disabled="[[disabled]]" aria-labelledby="label"> - </paper-input-container> - </div> - </template> - <script src="network_config_input.js"></script> -</dom-module> diff --git a/chromium/chrome/browser/resources/settings/internet_page/network_config_input.js b/chromium/chrome/browser/resources/settings/internet_page/network_config_input.js deleted file mode 100644 index 0d9aa62a1ff..00000000000 --- a/chromium/chrome/browser/resources/settings/internet_page/network_config_input.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 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 Polymer element for network configuration input fields. - */ -Polymer({ - is: 'network-config-input', - - properties: { - label: String, - - disabled: Boolean, - - value: { - type: String, - notify: true, - } - }, -}); diff --git a/chromium/chrome/browser/resources/settings/internet_page/network_config_select.html b/chromium/chrome/browser/resources/settings/internet_page/network_config_select.html deleted file mode 100644 index f71400cff19..00000000000 --- a/chromium/chrome/browser/resources/settings/internet_page/network_config_select.html +++ /dev/null @@ -1,24 +0,0 @@ -<link rel="import" href="chrome://resources/html/polymer.html"> -<link rel="import" href="chrome://resources/html/md_select_css.html"> -<link rel="import" href="../settings_shared_css.html"> - -<dom-module id="network-config-select"> - <template> - <style include="settings-shared md-select"> - </style> - - <div class="settings-box"> - <div id="label" class="start">[[label]]</div> - <select class="md-select" disabled="[[disabled]]" - value="{{value::change}}" aria-labelledby="label"> - <template is="dom-repeat" items="[[items]]"> - <option value="[[item]]"> - [[getOncLabel_(item, oncPrefix)]] - </option> - </template> - </select> - </div> - - </template> - <script src="network_config_select.js"></script> -</dom-module> diff --git a/chromium/chrome/browser/resources/settings/internet_page/network_config_select.js b/chromium/chrome/browser/resources/settings/internet_page/network_config_select.js deleted file mode 100644 index 23794bb400f..00000000000 --- a/chromium/chrome/browser/resources/settings/internet_page/network_config_select.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2017 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 Polymer element for network configuration selection menus. - */ -Polymer({ - is: 'network-config-select', - - behaviors: [I18nBehavior], - - properties: { - label: String, - - disabled: Boolean, - - /** - * Array of item values to select from. - * @type {!Array<string>} - */ - items: Array, - - /** Prefix used to look up ONC property names. */ - oncPrefix: String, - - /** Select item value */ - value: { - type: String, - notify: true, - }, - }, - - observers: ['updateSelected_(items, value)'], - - /** - * Ensure that the <select> value is updated when |items| or |value| changes. - * @private - */ - updateSelected_: function() { - // Wait for the dom-repeat to populate the <option> entries. - this.async(function() { - var select = this.$$('select'); - if (select.value != this.value) - select.value = this.value; - }); - }, - - /** - * @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); - assertNotReached(); - return key; - }, -}); diff --git a/chromium/chrome/browser/resources/settings/internet_page/network_proxy_section.html b/chromium/chrome/browser/resources/settings/internet_page/network_proxy_section.html index f4cddf4cd3d..f5d88e89c41 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/network_proxy_section.html +++ b/chromium/chrome/browser/resources/settings/internet_page/network_proxy_section.html @@ -9,7 +9,6 @@ <link rel="import" href="chrome://resources/html/assert.html"> <link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html"> <link rel="import" href="chrome://resources/html/i18n_behavior.html"> -<link rel="import" href="chrome://resources/html/md_select_css.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-button/paper-button.html"> <link rel="import" href="../controls/extension_controlled_indicator.html"> @@ -21,7 +20,7 @@ <dom-module id="network-proxy-section"> <template> - <style include="internet-shared md-select cr-hidden-style iron-flex iron-flex-alignment"> + <style include="internet-shared cr-hidden-style iron-flex iron-flex-alignment"> cr-policy-network-indicator { -webkit-margin-end: 10px; } @@ -82,7 +81,9 @@ close-text="$i18n{close}" on-cancel="onAllowSharedDialogCancel_" on-close="onAllowSharedDialogClose_"> <div slot="title"> - $i18n{networkProxyAllowSharedWarningTitle} + [[getAllowSharedDialogTitle_(prefs.settings.use_shared_proxies.value, + '$i18n{networkProxyAllowSharedEnableWarningTitle}', + '$i18n{networkProxyAllowSharedDisableWarningTitle}')]] </div> <div slot="body"> $i18n{networkProxyAllowSharedWarningMessage} diff --git a/chromium/chrome/browser/resources/settings/internet_page/network_proxy_section.js b/chromium/chrome/browser/resources/settings/internet_page/network_proxy_section.js index 4a637c97d29..ce303c1a8b1 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/network_proxy_section.js +++ b/chromium/chrome/browser/resources/settings/internet_page/network_proxy_section.js @@ -67,6 +67,17 @@ Polymer({ }, /** + * @param {boolean} allowShared + * @param {string} enableStr + * @param {string} disableStr + * @return {string} + * @private + */ + getAllowSharedDialogTitle_: function(allowShared, enableStr, disableStr) { + return allowShared ? disableStr : enableStr; + }, + + /** * @return {boolean} * @private */ @@ -91,7 +102,8 @@ Polymer({ * @private */ shouldShowAllowShared_: function(property) { - return !this.isControlled(property) && this.isShared_(); + return this.isShared_() && !this.isNetworkPolicyEnforced(property) && + !this.isExtensionControlled(property); }, /** diff --git a/chromium/chrome/browser/resources/settings/internet_page/network_siminfo.js b/chromium/chrome/browser/resources/settings/internet_page/network_siminfo.js index cb0eb9cbd05..2ea134f2069 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/network_siminfo.js +++ b/chromium/chrome/browser/resources/settings/internet_page/network_siminfo.js @@ -71,6 +71,18 @@ Polymer({ sendSimLockEnabled_: false, + /** @override */ + detached: function() { + if (this.$.enterPinDialog.open) + this.$.enterPinDialog.close(); + if (this.$.changePinDialog.open) + this.$.changePinDialog.close(); + if (this.$.unlockPinDialog.open) + this.$.unlockPinDialog.close(); + if (this.$.unlockPukDialog.open) + this.$.unlockPukDialog.close(); + }, + /** @private */ networkPropertiesChanged_: function() { if (!this.networkProperties || !this.networkProperties.Cellular) @@ -135,6 +147,7 @@ Polymer({ * @private */ sendEnterPin_: function(event) { + event.stopPropagation(); var guid = (this.networkProperties && this.networkProperties.GUID) || ''; var pin = this.$.enterPin.value; if (!this.validatePin_(pin)) { @@ -162,9 +175,9 @@ Polymer({ * @private */ onChangePinTap_: function(event) { + event.stopPropagation(); if (!this.networkProperties || !this.networkProperties.Cellular) return; - event.stopPropagation(); this.error_ = ErrorType.NONE; this.$.changePinOld.value = ''; this.$.changePinNew1.value = ''; @@ -178,6 +191,7 @@ Polymer({ * @private */ sendChangePin_: function(event) { + event.stopPropagation(); var guid = (this.networkProperties && this.networkProperties.GUID) || ''; var newPin = this.$.changePinNew1.value; if (!this.validatePin_(newPin, this.$.changePinNew2.value)) @@ -219,6 +233,7 @@ Polymer({ * @private */ sendUnlockPin_: function(event) { + event.stopPropagation(); var guid = (this.networkProperties && this.networkProperties.GUID) || ''; var pin = this.$.unlockPin.value; if (!this.validatePin_(pin)) @@ -257,6 +272,7 @@ Polymer({ * @private */ sendUnlockPuk_: function(event) { + event.stopPropagation(); var guid = (this.networkProperties && this.networkProperties.GUID) || ''; var puk = this.$.unlockPuk.value; if (!this.validatePuk_(puk)) diff --git a/chromium/chrome/browser/resources/settings/internet_page/network_summary_item.html b/chromium/chrome/browser/resources/settings/internet_page/network_summary_item.html index 6a9295eea59..b1a730a7e82 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/network_summary_item.html +++ b/chromium/chrome/browser/resources/settings/internet_page/network_summary_item.html @@ -36,7 +36,8 @@ </style> <div actionable class="settings-box two-line" on-tap="onShowDetailsTap_"> <div id="details" no-flex$="[[showSimInfo_(deviceState)]]"> - <cr-network-icon network-state="[[activeNetworkState]]"> + <cr-network-icon network-state="[[activeNetworkState]]" + device-state="[[deviceState]]"> </cr-network-icon> <div class="flex"> <div id="networkName">[[getNetworkName_(activeNetworkState)]]</div> @@ -46,8 +47,8 @@ </div> </div> - <template is="dom-if" if="[[showSimInfo_(deviceState)]]"> - <network-siminfo editable + <template is="dom-if" if="[[showSimInfo_(deviceState)]]" restamp> + <network-siminfo editable on-tap="doNothing_" network-properties="[[getCellularState_(deviceState)]]" networking-private="[[networkingPrivate]]"> </network-siminfo> @@ -55,7 +56,8 @@ <template is="dom-if" if="[[showPolicyIndicator_(activeNetworkState)]]"> <cr-policy-indicator indicator-type="[[getIndicatorTypeForSource( - activeNetworkState.Source)]]"> + activeNetworkState.Source)]]" + on-tap="doNothing_"> </cr-policy-indicator> </template> diff --git a/chromium/chrome/browser/resources/settings/internet_page/network_summary_item.js b/chromium/chrome/browser/resources/settings/internet_page/network_summary_item.js index 656d66606cd..9555d961bd8 100644 --- a/chromium/chrome/browser/resources/settings/internet_page/network_summary_item.js +++ b/chromium/chrome/browser/resources/settings/internet_page/network_summary_item.js @@ -85,8 +85,11 @@ Polymer({ return this.i18n('tetherEnableBluetooth'); } // Enabled or enabling states. - if (deviceState.State == CrOnc.DeviceState.ENABLED) - return CrOncStrings.networkListItemNotConnected; + if (deviceState.State == CrOnc.DeviceState.ENABLED) { + if (this.networkStateList.length > 0) + return CrOncStrings.networkListItemNotConnected; + return CrOncStrings.networkListItemNoNetwork; + } if (deviceState.State == CrOnc.DeviceState.ENABLING) return this.i18n('internetDeviceEnabling'); } @@ -306,4 +309,13 @@ Polymer({ // Make sure this does not propagate to onDetailsTap_. event.stopPropagation(); }, + + /** + * Make sure events in embedded components do not propagate to onDetailsTap_. + * @param {!Event} event + * @private + */ + doNothing_: function(event) { + event.stopPropagation(); + }, }); |