| Index: chrome/browser/resources/settings/internet_page/internet_page.js
 | 
| diff --git a/chrome/browser/resources/settings/internet_page/internet_page.js b/chrome/browser/resources/settings/internet_page/internet_page.js
 | 
| index c25245484617256fb38619566fc80f6d8eba2962..49b419f8004509fa45db82a4ec15614e554a73b5 100644
 | 
| --- a/chrome/browser/resources/settings/internet_page/internet_page.js
 | 
| +++ b/chrome/browser/resources/settings/internet_page/internet_page.js
 | 
| @@ -88,8 +88,19 @@ Polymer({
 | 
|          return [];
 | 
|        }
 | 
|      },
 | 
| +
 | 
| +    /** @private {!Map<string, string>} */
 | 
| +    focusConfig_: {
 | 
| +      type: Object,
 | 
| +      value: function() {
 | 
| +        return new Map();
 | 
| +      },
 | 
| +    },
 | 
|    },
 | 
|  
 | 
| +  /** @private {string} Type of last detail page visited. */
 | 
| +  detailType_: '',
 | 
| +
 | 
|    // Element event listeners
 | 
|    listeners: {
 | 
|      'device-enabled-toggled': 'onDeviceEnabledToggled_',
 | 
| @@ -110,13 +121,13 @@ Polymer({
 | 
|  
 | 
|    /** @override */
 | 
|    attached: function() {
 | 
| -    this.onExtensionAddedListener_ = this.onExtensionAddedListener_ ||
 | 
| -        this.onExtensionAdded_.bind(this);
 | 
| +    this.onExtensionAddedListener_ =
 | 
| +        this.onExtensionAddedListener_ || this.onExtensionAdded_.bind(this);
 | 
|      chrome.management.onInstalled.addListener(this.onExtensionAddedListener_);
 | 
|      chrome.management.onEnabled.addListener(this.onExtensionAddedListener_);
 | 
|  
 | 
| -    this.onExtensionRemovedListener_ = this.onExtensionRemovedListener_ ||
 | 
| -        this.onExtensionRemoved_.bind(this);
 | 
| +    this.onExtensionRemovedListener_ =
 | 
| +        this.onExtensionRemovedListener_ || this.onExtensionRemoved_.bind(this);
 | 
|      chrome.management.onUninstalled.addListener(
 | 
|          this.onExtensionRemovedListener_);
 | 
|  
 | 
| @@ -146,9 +157,10 @@ Polymer({
 | 
|    /**
 | 
|     * settings.RouteObserverBehavior
 | 
|     * @param {!settings.Route} route
 | 
| +   * @param {!settings.Route} oldRoute
 | 
|     * @protected
 | 
|     */
 | 
| -  currentRouteChanged: function(route) {
 | 
| +  currentRouteChanged: function(route, oldRoute) {
 | 
|      if (route == settings.Route.INTERNET_NETWORKS) {
 | 
|        // Handle direct navigation to the networks page,
 | 
|        // e.g. chrome://settings/internet/networks?type=WiFi
 | 
| @@ -163,7 +175,29 @@ Polymer({
 | 
|        var type = queryParams.get('type');
 | 
|        if (type)
 | 
|          this.knownNetworksType_ = type;
 | 
| +    } else if (
 | 
| +        route != settings.Route.INTERNET && route != settings.Route.BASIC) {
 | 
| +      // If we are navigating to a non internet section, do not set focus.
 | 
| +      return;
 | 
|      }
 | 
| +
 | 
| +    if (!settings.Route.INTERNET.contains(oldRoute))
 | 
| +      return;
 | 
| +
 | 
| +    // Focus the subpage arrow where appropriate.
 | 
| +    var selector;
 | 
| +    if (route == settings.Route.INTERNET_NETWORKS) {
 | 
| +      // iron-list makes the correct timing to focus an item in the list
 | 
| +      // very complicated, and the item may not exist, so just focus the
 | 
| +      // entire list for now.
 | 
| +      selector = '* /deep/ #networkList';
 | 
| +    } else if (this.detailType_) {
 | 
| +      selector = '* /deep/ #' + this.detailType_ + ' /deep/ .subpage-arrow';
 | 
| +    }
 | 
| +    if (selector && this.querySelector(selector))
 | 
| +      this.focusConfig_.set(oldRoute.path, selector);
 | 
| +    else
 | 
| +      this.focusConfig_.delete(oldRoute.path);
 | 
|    },
 | 
|  
 | 
|    /**
 | 
| @@ -184,6 +218,7 @@ Polymer({
 | 
|     * @private
 | 
|     */
 | 
|    onShowDetail_: function(event) {
 | 
| +    this.detailType_ = event.detail.Type;
 | 
|      var params = new URLSearchParams;
 | 
|      params.append('guid', event.detail.GUID);
 | 
|      params.append('type', event.detail.Type);
 | 
| @@ -197,6 +232,7 @@ Polymer({
 | 
|     * @private
 | 
|     */
 | 
|    onShowNetworks_: function(event) {
 | 
| +    this.detailType_ = event.detail.Type;
 | 
|      var params = new URLSearchParams;
 | 
|      params.append('type', event.detail.Type);
 | 
|      this.subpageType_ = event.detail.Type;
 | 
| @@ -216,6 +252,7 @@ Polymer({
 | 
|     * @private
 | 
|     */
 | 
|    onShowKnownNetworks_: function(event) {
 | 
| +    this.detailType_ = event.detail.Type;
 | 
|      var params = new URLSearchParams;
 | 
|      params.append('type', event.detail.Type);
 | 
|      this.knownNetworksType_ = event.detail.type;
 | 
| @@ -329,8 +366,8 @@ Polymer({
 | 
|     * @private
 | 
|     */
 | 
|    deviceIsEnabled_: function(deviceState) {
 | 
| -    return !!deviceState && deviceState.State ==
 | 
| -        chrome.networkingPrivate.DeviceStateType.ENABLED;
 | 
| +    return !!deviceState &&
 | 
| +        deviceState.State == chrome.networkingPrivate.DeviceStateType.ENABLED;
 | 
|    },
 | 
|  
 | 
|    /**
 | 
| 
 |