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

Side by Side Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 257083002: Check BrowsingInstance before swapping prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 <deque> 5 #include <deque>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 case FINAL_STATUS_APP_TERMINATING: 159 case FINAL_STATUS_APP_TERMINATING:
160 case FINAL_STATUS_PROFILE_DESTROYED: 160 case FINAL_STATUS_PROFILE_DESTROYED:
161 case FINAL_STATUS_CACHE_OR_HISTORY_CLEARED: 161 case FINAL_STATUS_CACHE_OR_HISTORY_CLEARED:
162 // We'll crash the renderer after it's loaded. 162 // We'll crash the renderer after it's loaded.
163 case FINAL_STATUS_RENDERER_CRASHED: 163 case FINAL_STATUS_RENDERER_CRASHED:
164 case FINAL_STATUS_CANCELLED: 164 case FINAL_STATUS_CANCELLED:
165 case FINAL_STATUS_DEVTOOLS_ATTACHED: 165 case FINAL_STATUS_DEVTOOLS_ATTACHED:
166 case FINAL_STATUS_PAGE_BEING_CAPTURED: 166 case FINAL_STATUS_PAGE_BEING_CAPTURED:
167 case FINAL_STATUS_NAVIGATION_UNCOMMITTED: 167 case FINAL_STATUS_NAVIGATION_UNCOMMITTED:
168 case FINAL_STATUS_WOULD_HAVE_BEEN_USED: 168 case FINAL_STATUS_WOULD_HAVE_BEEN_USED:
169 case FINAL_STATUS_NON_EMPTY_BROWSING_INSTANCE:
169 return false; 170 return false;
170 default: 171 default:
171 return true; 172 return true;
172 } 173 }
173 } 174 }
174 175
175 // Convenience function to wait for a title. Handles the case when the 176 // Convenience function to wait for a title. Handles the case when the
176 // WebContents already has the expected title. 177 // WebContents already has the expected title.
177 void WaitForASCIITitle(WebContents* web_contents, 178 void WaitForASCIITitle(WebContents* web_contents,
178 const char* expected_title_ascii) { 179 const char* expected_title_ascii) {
(...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 1194
1194 void OpenDestURLViaClickNewBackgroundTab() const { 1195 void OpenDestURLViaClickNewBackgroundTab() const {
1195 #if defined(OS_MACOSX) 1196 #if defined(OS_MACOSX)
1196 OpenURLWithJSImpl("MetaClick", dest_url_, GURL(), true); 1197 OpenURLWithJSImpl("MetaClick", dest_url_, GURL(), true);
1197 #else 1198 #else
1198 OpenURLWithJSImpl("CtrlClick", dest_url_, GURL(), true); 1199 OpenURLWithJSImpl("CtrlClick", dest_url_, GURL(), true);
1199 #endif 1200 #endif
1200 } 1201 }
1201 1202
1202 void OpenDestURLViaWindowOpen() const { 1203 void OpenDestURLViaWindowOpen() const {
1203 OpenURLWithJSImpl("WindowOpen", dest_url_, GURL(), true); 1204 OpenURLViaWindowOpen(dest_url_);
1205 }
1206
1207 void OpenURLViaWindowOpen(const GURL& url) const {
1208 OpenURLWithJSImpl("WindowOpen", url, GURL(), true);
1204 } 1209 }
1205 1210
1206 void RemoveLinkElement(int i) const { 1211 void RemoveLinkElement(int i) const {
1207 GetActiveWebContents()->GetMainFrame()->ExecuteJavaScript( 1212 GetActiveWebContents()->GetMainFrame()->ExecuteJavaScript(
1208 base::ASCIIToUTF16(base::StringPrintf("RemoveLinkElement(%d)", i))); 1213 base::ASCIIToUTF16(base::StringPrintf("RemoveLinkElement(%d)", i)));
1209 } 1214 }
1210 1215
1211 void ClickToNextPageAfterPrerender() { 1216 void ClickToNextPageAfterPrerender() {
1212 TestNavigationObserver nav_observer(GetActiveWebContents()); 1217 TestNavigationObserver nav_observer(GetActiveWebContents());
1213 RenderFrameHost* render_frame_host = GetActiveWebContents()->GetMainFrame(); 1218 RenderFrameHost* render_frame_host = GetActiveWebContents()->GetMainFrame();
(...skipping 1634 matching lines...) Expand 10 before | Expand all | Expand 10 after
2848 // Checks that we cancel correctly when window.print() is called. 2853 // Checks that we cancel correctly when window.print() is called.
2849 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) { 2854 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) {
2850 DisableLoadEventCheck(); 2855 DisableLoadEventCheck();
2851 PrerenderTestURL("files/prerender/prerender_print.html", 2856 PrerenderTestURL("files/prerender/prerender_print.html",
2852 FINAL_STATUS_WINDOW_PRINT, 2857 FINAL_STATUS_WINDOW_PRINT,
2853 0); 2858 0);
2854 } 2859 }
2855 2860
2856 // Checks that if a page is opened in a new window by javascript and both the 2861 // Checks that if a page is opened in a new window by javascript and both the
2857 // pages are in the same domain, the prerendered page is not used, due to 2862 // pages are in the same domain, the prerendered page is not used, due to
2858 // window.opener. 2863 // there being other tabs in the same browsing instance.
2859 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 2864 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
2860 PrerenderSameDomainWindowOpenerWindowOpen) { 2865 PrerenderSameDomainWindowOpenerWindowOpen) {
2861 PrerenderTestURL("files/prerender/prerender_page.html", 2866 PrerenderTestURL("files/prerender/prerender_page.html",
2862 FINAL_STATUS_WINDOW_OPENER, 2867 FINAL_STATUS_NON_EMPTY_BROWSING_INSTANCE,
2863 1); 2868 1);
2864 OpenDestURLViaWindowOpen(); 2869 OpenDestURLViaWindowOpen();
2865 } 2870 }
2866 2871
2867 // Checks that if a page is opened due to click on a href with target="_blank" 2872 // Checks that if a page is opened due to click on a href with target="_blank"
2868 // and both pages are in the same domain the prerendered page is not used, due 2873 // and both pages are in the same domain the prerendered page is not used, due
2869 // to window.opener. 2874 // there being other tabs in the same browsing instance.
2870 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 2875 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
2871 PrerenderSameDomainWindowOpenerClickTarget) { 2876 PrerenderSameDomainWindowOpenerClickTarget) {
2872 PrerenderTestURL("files/prerender/prerender_page.html", 2877 PrerenderTestURL("files/prerender/prerender_page.html",
2873 FINAL_STATUS_WINDOW_OPENER, 2878 FINAL_STATUS_NON_EMPTY_BROWSING_INSTANCE,
2874 1); 2879 1);
2875 OpenDestURLViaClickTarget(); 2880 OpenDestURLViaClickTarget();
2876 } 2881 }
2877 2882
2883 // Checks that prerenders do not get swapped into target pages that have opened
2884 // a popup, even if the target page itself does not have an opener.
2885 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderTargetHasPopup) {
2886 PrerenderTestURL("files/prerender/prerender_page.html",
2887 FINAL_STATUS_NON_EMPTY_BROWSING_INSTANCE,
2888 1);
2889 OpenURLViaWindowOpen(GURL(content::kAboutBlankURL));
2890 NavigateToDestURLWithDisposition(CURRENT_TAB, false);
2891 }
2892
2878 class TestClientCertStore : public net::ClientCertStore { 2893 class TestClientCertStore : public net::ClientCertStore {
2879 public: 2894 public:
2880 TestClientCertStore() {} 2895 TestClientCertStore() {}
2881 virtual ~TestClientCertStore() {} 2896 virtual ~TestClientCertStore() {}
2882 2897
2883 // net::ClientCertStore: 2898 // net::ClientCertStore:
2884 virtual void GetClientCerts(const net::SSLCertRequestInfo& cert_request_info, 2899 virtual void GetClientCerts(const net::SSLCertRequestInfo& cert_request_info,
2885 net::CertificateList* selected_certs, 2900 net::CertificateList* selected_certs,
2886 const base::Closure& callback) OVERRIDE { 2901 const base::Closure& callback) OVERRIDE {
2887 *selected_certs = net::CertificateList( 2902 *selected_certs = net::CertificateList(
(...skipping 1374 matching lines...) Expand 10 before | Expand all | Expand 10 after
4262 4277
4263 // Navigate to the URL entered. 4278 // Navigate to the URL entered.
4264 omnibox_view->model()->AcceptInput(CURRENT_TAB, false); 4279 omnibox_view->model()->AcceptInput(CURRENT_TAB, false);
4265 4280
4266 // Prerender should be running, but abandoned. 4281 // Prerender should be running, but abandoned.
4267 EXPECT_TRUE( 4282 EXPECT_TRUE(
4268 GetAutocompleteActionPredictor()->IsPrerenderAbandonedForTesting()); 4283 GetAutocompleteActionPredictor()->IsPrerenderAbandonedForTesting());
4269 } 4284 }
4270 4285
4271 } // namespace prerender 4286 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_final_status.h » ('j') | content/browser/browsing_instance.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698