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

Side by Side Diff: chrome/browser/resources/settings/internet_page/internet_page.js

Issue 2841873004: MD Settings: Fix subpage navigation focus for bluetooth+internet (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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview 6 * @fileoverview
7 * 'settings-internet-page' is the settings page containing internet 7 * 'settings-internet-page' is the settings page containing internet
8 * settings. 8 * settings.
9 */ 9 */
10 Polymer({ 10 Polymer({
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 * List of third party VPN providers. 81 * List of third party VPN providers.
82 * @type {!Array<!chrome.networkingPrivate.ThirdPartyVPNProperties>} 82 * @type {!Array<!chrome.networkingPrivate.ThirdPartyVPNProperties>}
83 * @private 83 * @private
84 */ 84 */
85 thirdPartyVpnProviders_: { 85 thirdPartyVpnProviders_: {
86 type: Array, 86 type: Array,
87 value: function() { 87 value: function() {
88 return []; 88 return [];
89 } 89 }
90 }, 90 },
91
92 /**
93 * @type {!Map<string, string>}
dpapad 2017/04/25 21:25:19 Ni: Use shorthand syntax, @private {!Map<string, s
stevenjb 2017/04/25 23:32:53 Done.
94 * @private
95 */
96 focusConfig_: {
97 type: Object,
98 value: function() {
99 return new Map();
100 },
101 },
91 }, 102 },
92 103
104 /** @private {string} Type of last detail page visited. */
105 detailType_: '',
106
93 // Element event listeners 107 // Element event listeners
94 listeners: { 108 listeners: {
95 'device-enabled-toggled': 'onDeviceEnabledToggled_', 109 'device-enabled-toggled': 'onDeviceEnabledToggled_',
96 'show-detail': 'onShowDetail_', 110 'show-detail': 'onShowDetail_',
97 'show-known-networks': 'onShowKnownNetworks_', 111 'show-known-networks': 'onShowKnownNetworks_',
98 'show-networks': 'onShowNetworks_', 112 'show-networks': 'onShowNetworks_',
99 }, 113 },
100 114
101 // chrome.networkingPrivate listeners 115 // chrome.networkingPrivate listeners
102 /** @private {Function} */ 116 /** @private {Function} */
103 onExtensionAddedListener_: null, 117 onExtensionAddedListener_: null,
104 118
105 /** @private {Function} */ 119 /** @private {Function} */
106 onExtensionRemovedListener_: null, 120 onExtensionRemovedListener_: null,
107 121
108 /** @private {Function} */ 122 /** @private {Function} */
109 onExtensionDisabledListener_: null, 123 onExtensionDisabledListener_: null,
110 124
111 /** @override */ 125 /** @override */
112 attached: function() { 126 attached: function() {
113 this.onExtensionAddedListener_ = this.onExtensionAddedListener_ || 127 this.onExtensionAddedListener_ =
114 this.onExtensionAdded_.bind(this); 128 this.onExtensionAddedListener_ || this.onExtensionAdded_.bind(this);
115 chrome.management.onInstalled.addListener(this.onExtensionAddedListener_); 129 chrome.management.onInstalled.addListener(this.onExtensionAddedListener_);
116 chrome.management.onEnabled.addListener(this.onExtensionAddedListener_); 130 chrome.management.onEnabled.addListener(this.onExtensionAddedListener_);
117 131
118 this.onExtensionRemovedListener_ = this.onExtensionRemovedListener_ || 132 this.onExtensionRemovedListener_ =
119 this.onExtensionRemoved_.bind(this); 133 this.onExtensionRemovedListener_ || this.onExtensionRemoved_.bind(this);
120 chrome.management.onUninstalled.addListener( 134 chrome.management.onUninstalled.addListener(
121 this.onExtensionRemovedListener_); 135 this.onExtensionRemovedListener_);
122 136
123 this.onExtensionDisabledListener_ = this.onExtensionDisabledListener_ || 137 this.onExtensionDisabledListener_ = this.onExtensionDisabledListener_ ||
124 this.onExtensionDisabled_.bind(this); 138 this.onExtensionDisabled_.bind(this);
125 chrome.management.onDisabled.addListener(this.onExtensionDisabledListener_); 139 chrome.management.onDisabled.addListener(this.onExtensionDisabledListener_);
126 140
127 chrome.management.getAll(this.onGetAllExtensions_.bind(this)); 141 chrome.management.getAll(this.onGetAllExtensions_.bind(this));
128 142
129 this.networkingPrivate.getGlobalPolicy(function(policy) { 143 this.networkingPrivate.getGlobalPolicy(function(policy) {
130 this.globalPolicy_ = policy; 144 this.globalPolicy_ = policy;
131 }.bind(this)); 145 }.bind(this));
132 }, 146 },
133 147
134 /** @override */ 148 /** @override */
135 detached: function() { 149 detached: function() {
136 chrome.management.onInstalled.removeListener( 150 chrome.management.onInstalled.removeListener(
137 assert(this.onExtensionAddedListener_)); 151 assert(this.onExtensionAddedListener_));
138 chrome.management.onEnabled.removeListener( 152 chrome.management.onEnabled.removeListener(
139 assert(this.onExtensionAddedListener_)); 153 assert(this.onExtensionAddedListener_));
140 chrome.management.onUninstalled.removeListener( 154 chrome.management.onUninstalled.removeListener(
141 assert(this.onExtensionRemovedListener_)); 155 assert(this.onExtensionRemovedListener_));
142 chrome.management.onDisabled.removeListener( 156 chrome.management.onDisabled.removeListener(
143 assert(this.onExtensionDisabledListener_)); 157 assert(this.onExtensionDisabledListener_));
144 }, 158 },
145 159
146 /** 160 /**
147 * settings.RouteObserverBehavior 161 * settings.RouteObserverBehavior
148 * @param {!settings.Route} route 162 * @param {!settings.Route} route
163 * @param {!settings.Route} oldRoute
149 * @protected 164 * @protected
150 */ 165 */
151 currentRouteChanged: function(route) { 166 currentRouteChanged: function(route, oldRoute) {
152 if (route == settings.Route.INTERNET_NETWORKS) { 167 if (route == settings.Route.INTERNET_NETWORKS) {
153 // Handle direct navigation to the networks page, 168 // Handle direct navigation to the networks page,
154 // e.g. chrome://settings/internet/networks?type=WiFi 169 // e.g. chrome://settings/internet/networks?type=WiFi
155 var queryParams = settings.getQueryParameters(); 170 var queryParams = settings.getQueryParameters();
156 var type = queryParams.get('type'); 171 var type = queryParams.get('type');
157 if (type) 172 if (type)
158 this.subpageType_ = type; 173 this.subpageType_ = type;
159 } else if (route == settings.Route.KNOWN_NETWORKS) { 174 } else if (route == settings.Route.KNOWN_NETWORKS) {
160 // Handle direct navigation to the known networks page, 175 // Handle direct navigation to the known networks page,
161 // e.g. chrome://settings/internet/knownNetworks?type=WiFi 176 // e.g. chrome://settings/internet/knownNetworks?type=WiFi
162 var queryParams = settings.getQueryParameters(); 177 var queryParams = settings.getQueryParameters();
163 var type = queryParams.get('type'); 178 var type = queryParams.get('type');
164 if (type) 179 if (type)
165 this.knownNetworksType_ = type; 180 this.knownNetworksType_ = type;
181 } else if (route != settings.Route.INTERNET && route.path != '/') {
dpapad 2017/04/25 21:25:19 Is this equivalent to the following? } else if (r
stevenjb 2017/04/25 23:32:53 Looks like it. Done.
182 // If we are navigating to a non internet section, do not set focus.
183 return;
184 }
185
186 // Focus the subpage arrow where appropriate.
187 if (oldRoute == settings.Route.NETWORK_DETAIL ||
dpapad 2017/04/25 21:25:19 Is this equivalent to the following? if (!setting
stevenjb 2017/04/25 23:32:53 Handy. Yes. Done.
188 oldRoute == settings.Route.INTERNET_NETWORKS ||
189 oldRoute == settings.Route.KNOWN_NETWORKS) {
190 var selector;
191 if (route == settings.Route.INTERNET_NETWORKS) {
dpapad 2017/04/25 21:25:19 Nit (optional): This can be compacted as follows:
stevenjb 2017/04/25 23:32:53 Acknowledged.
192 // iron-list makes the correct timing to focus an item in the list
193 // very complicated, and the item may not exist, so just focus the
194 // entire list for now.
195 selector = '* /deep/ #networkList';
196 } else if (this.detailType_) {
197 selector = '* /deep/ #' + this.detailType_ + ' /deep/ .subpage-arrow';
198 }
199 if (selector && this.querySelector(selector))
dpapad 2017/04/25 21:25:19 When would querySelector(selector) return nothing
stevenjb 2017/04/25 23:32:53 If an Ethernet cable were unplugged while visiting
200 this.focusConfig_.set(oldRoute.path, selector);
dpapad 2017/04/25 21:25:19 I don't fully understand the updates to the focusC
stevenjb 2017/04/25 23:32:53 Done. (I took this approach because of the dynami
201 this.detailType_ = '';
166 } 202 }
167 }, 203 },
168 204
169 /** 205 /**
170 * Event triggered by a device state enabled toggle. 206 * Event triggered by a device state enabled toggle.
171 * @param {!{detail: {enabled: boolean, 207 * @param {!{detail: {enabled: boolean,
172 * type: chrome.networkingPrivate.NetworkType}}} event 208 * type: chrome.networkingPrivate.NetworkType}}} event
173 * @private 209 * @private
174 */ 210 */
175 onDeviceEnabledToggled_: function(event) { 211 onDeviceEnabledToggled_: function(event) {
176 if (event.detail.enabled) 212 if (event.detail.enabled)
177 this.networkingPrivate.enableNetworkType(event.detail.type); 213 this.networkingPrivate.enableNetworkType(event.detail.type);
178 else 214 else
179 this.networkingPrivate.disableNetworkType(event.detail.type); 215 this.networkingPrivate.disableNetworkType(event.detail.type);
180 }, 216 },
181 217
182 /** 218 /**
183 * @param {!{detail: !CrOnc.NetworkStateProperties}} event 219 * @param {!{detail: !CrOnc.NetworkStateProperties}} event
184 * @private 220 * @private
185 */ 221 */
186 onShowDetail_: function(event) { 222 onShowDetail_: function(event) {
223 this.detailType_ = event.detail.Type;
187 var params = new URLSearchParams; 224 var params = new URLSearchParams;
188 params.append('guid', event.detail.GUID); 225 params.append('guid', event.detail.GUID);
189 params.append('type', event.detail.Type); 226 params.append('type', event.detail.Type);
190 if (event.detail.Name) 227 if (event.detail.Name)
191 params.append('name', event.detail.Name); 228 params.append('name', event.detail.Name);
192 settings.navigateTo(settings.Route.NETWORK_DETAIL, params); 229 settings.navigateTo(settings.Route.NETWORK_DETAIL, params);
193 }, 230 },
194 231
195 /** 232 /**
196 * @param {!{detail: {type: string}}} event 233 * @param {!{detail: {type: string}}} event
197 * @private 234 * @private
198 */ 235 */
199 onShowNetworks_: function(event) { 236 onShowNetworks_: function(event) {
237 this.detailType_ = event.detail.Type;
200 var params = new URLSearchParams; 238 var params = new URLSearchParams;
201 params.append('type', event.detail.Type); 239 params.append('type', event.detail.Type);
202 this.subpageType_ = event.detail.Type; 240 this.subpageType_ = event.detail.Type;
203 settings.navigateTo(settings.Route.INTERNET_NETWORKS, params); 241 settings.navigateTo(settings.Route.INTERNET_NETWORKS, params);
204 }, 242 },
205 243
206 /** 244 /**
207 * @return {string} 245 * @return {string}
208 * @private 246 * @private
209 */ 247 */
210 getNetworksPageTitle_: function() { 248 getNetworksPageTitle_: function() {
211 return this.i18n('OncType' + this.subpageType_); 249 return this.i18n('OncType' + this.subpageType_);
212 }, 250 },
213 251
214 /** 252 /**
215 * @param {!{detail: {type: string}}} event 253 * @param {!{detail: {type: string}}} event
216 * @private 254 * @private
217 */ 255 */
218 onShowKnownNetworks_: function(event) { 256 onShowKnownNetworks_: function(event) {
257 this.detailType_ = event.detail.Type;
219 var params = new URLSearchParams; 258 var params = new URLSearchParams;
220 params.append('type', event.detail.Type); 259 params.append('type', event.detail.Type);
221 this.knownNetworksType_ = event.detail.type; 260 this.knownNetworksType_ = event.detail.type;
222 settings.navigateTo(settings.Route.KNOWN_NETWORKS, params); 261 settings.navigateTo(settings.Route.KNOWN_NETWORKS, params);
223 }, 262 },
224 263
225 /** 264 /**
226 * Event triggered when the 'Add connections' div is tapped. 265 * Event triggered when the 'Add connections' div is tapped.
227 * @param {Event} event 266 * @param {Event} event
228 * @private 267 * @private
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 onExtensionDisabled_: function(extension) { 361 onExtensionDisabled_: function(extension) {
323 this.onExtensionRemoved_(extension.id); 362 this.onExtensionRemoved_(extension.id);
324 }, 363 },
325 364
326 /** 365 /**
327 * @param {!chrome.networkingPrivate.DeviceStateProperties} deviceState 366 * @param {!chrome.networkingPrivate.DeviceStateProperties} deviceState
328 * @return {boolean} 367 * @return {boolean}
329 * @private 368 * @private
330 */ 369 */
331 deviceIsEnabled_: function(deviceState) { 370 deviceIsEnabled_: function(deviceState) {
332 return !!deviceState && deviceState.State == 371 return !!deviceState &&
333 chrome.networkingPrivate.DeviceStateType.ENABLED; 372 deviceState.State == chrome.networkingPrivate.DeviceStateType.ENABLED;
334 }, 373 },
335 374
336 /** 375 /**
337 * @param {!chrome.networkingPrivate.GlobalPolicy} globalPolicy 376 * @param {!chrome.networkingPrivate.GlobalPolicy} globalPolicy
338 * @return {boolean} 377 * @return {boolean}
339 */ 378 */
340 allowAddConnection_: function(globalPolicy) { 379 allowAddConnection_: function(globalPolicy) {
341 return !globalPolicy.AllowOnlyPolicyNetworksToConnect; 380 return !globalPolicy.AllowOnlyPolicyNetworksToConnect;
342 }, 381 },
343 382
344 /** 383 /**
345 * @param {!chrome.networkingPrivate.ThirdPartyVPNProperties} provider 384 * @param {!chrome.networkingPrivate.ThirdPartyVPNProperties} provider
346 * @return {string} 385 * @return {string}
347 */ 386 */
348 getAddThirdParrtyVpnLabel_: function(provider) { 387 getAddThirdParrtyVpnLabel_: function(provider) {
349 return this.i18n('internetAddThirdPartyVPN', provider.ProviderName); 388 return this.i18n('internetAddThirdPartyVPN', provider.ProviderName);
350 } 389 }
351 }); 390 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698