OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 #include "chrome/browser/instant/instant_controller.h" | 5 #include "chrome/browser/instant/instant_controller.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
863 void InstantController::InstantLoaderRenderViewGone() { | 863 void InstantController::InstantLoaderRenderViewGone() { |
864 ++blacklisted_urls_[loader_->instant_url()]; | 864 ++blacklisted_urls_[loader_->instant_url()]; |
865 HideInternal(); | 865 HideInternal(); |
866 delete loader_->ReleaseContents(); | 866 delete loader_->ReleaseContents(); |
867 // Delay deletion as we have gotten here from an InstantLoader method. | 867 // Delay deletion as we have gotten here from an InstantLoader method. |
868 MessageLoop::current()->DeleteSoon(FROM_HERE, loader_.release()); | 868 MessageLoop::current()->DeleteSoon(FROM_HERE, loader_.release()); |
869 CreateDefaultLoader(); | 869 CreateDefaultLoader(); |
870 } | 870 } |
871 | 871 |
872 void InstantController::InstantLoaderAboutToNavigateMainFrame(const GURL& url) { | 872 void InstantController::InstantLoaderAboutToNavigateMainFrame(const GURL& url) { |
| 873 // If the page does not yet support instant, we allow redirects and other |
| 874 // navigations to go through since the instant URL can redirect - e.g. to |
| 875 // country specific pages. |
| 876 if (!loader_->supports_instant()) |
| 877 return; |
| 878 |
873 GURL instant_url(loader_->instant_url()); | 879 GURL instant_url(loader_->instant_url()); |
874 | 880 |
875 // If we are navigating to the instant URL, do nothing. | 881 // If we are navigating to the instant URL, do nothing. |
876 if (url == instant_url) | 882 if (url == instant_url) |
877 return; | 883 return; |
878 | 884 |
879 // Commit the navigation if either: | 885 // Commit the navigation if either: |
880 // - The page is in NTP mode (so it could only navigate on a user click) or | 886 // - The page is in NTP mode (so it could only navigate on a user click) or |
881 // - The page is not in NTP mode and we are navigating to a URL with a | 887 // - The page is not in NTP mode and we are navigating to a URL with a |
882 // different host or path than the instant URL. This enables the instant | 888 // different host or path than the instant URL. This enables the instant |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1199 } | 1205 } |
1200 | 1206 |
1201 std::map<std::string, int>::const_iterator iter = | 1207 std::map<std::string, int>::const_iterator iter = |
1202 blacklisted_urls_.find(*instant_url); | 1208 blacklisted_urls_.find(*instant_url); |
1203 if (iter != blacklisted_urls_.end() && | 1209 if (iter != blacklisted_urls_.end() && |
1204 iter->second > kMaxInstantSupportFailures) | 1210 iter->second > kMaxInstantSupportFailures) |
1205 return false; | 1211 return false; |
1206 | 1212 |
1207 return true; | 1213 return true; |
1208 } | 1214 } |
OLD | NEW |