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

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

Issue 8503040: Prerendering: Add MatchComplete PPLT (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "base/stringprintf.h" 9 #include "base/stringprintf.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 PrerenderManager::kNoExperiment), 120 PrerenderManager::kNoExperiment),
121 number_of_loads_(0), 121 number_of_loads_(0),
122 expected_number_of_loads_(expected_number_of_loads), 122 expected_number_of_loads_(expected_number_of_loads),
123 expected_final_status_(expected_final_status), 123 expected_final_status_(expected_final_status),
124 new_render_view_host_(NULL), 124 new_render_view_host_(NULL),
125 was_hidden_(false), 125 was_hidden_(false),
126 was_shown_(false), 126 was_shown_(false),
127 should_be_shown_(expected_final_status == FINAL_STATUS_USED), 127 should_be_shown_(expected_final_status == FINAL_STATUS_USED),
128 quit_message_loop_on_destruction_( 128 quit_message_loop_on_destruction_(
129 expected_final_status != FINAL_STATUS_EVICTED && 129 expected_final_status != FINAL_STATUS_EVICTED &&
130 expected_final_status != FINAL_STATUS_APP_TERMINATING), 130 expected_final_status != FINAL_STATUS_APP_TERMINATING &&
131 expected_final_status != FINAL_STATUS_MATCH_COMPLETE_DUMMY),
131 expected_pending_prerenders_(0) { 132 expected_pending_prerenders_(0) {
132 if (expected_number_of_loads == 0) 133 if (expected_number_of_loads == 0)
133 MessageLoopForUI::current()->Quit(); 134 MessageLoopForUI::current()->Quit();
134 } 135 }
135 136
136 virtual ~TestPrerenderContents() { 137 virtual ~TestPrerenderContents() {
137 EXPECT_EQ(expected_final_status_, final_status()) << 138 EXPECT_EQ(expected_final_status_, final_status()) <<
138 " when testing URL " << prerender_url().path() << 139 " when testing URL " << prerender_url().path() <<
139 " (Expected: " << NameFromFinalStatus(expected_final_status_) << 140 " (Expected: " << NameFromFinalStatus(expected_final_status_) <<
140 ", Actual: " << NameFromFinalStatus(final_status()) << ")"; 141 ", Actual: " << NameFromFinalStatus(final_status()) << ")";
(...skipping 29 matching lines...) Expand all
170 // app termination, but before we've been deleted, which is why the second 171 // app termination, but before we've been deleted, which is why the second
171 // check is needed. 172 // check is needed.
172 if (expected_final_status_ == FINAL_STATUS_APP_TERMINATING && 173 if (expected_final_status_ == FINAL_STATUS_APP_TERMINATING &&
173 final_status() != expected_final_status_) { 174 final_status() != expected_final_status_) {
174 expected_final_status_ = FINAL_STATUS_RENDERER_CRASHED; 175 expected_final_status_ = FINAL_STATUS_RENDERER_CRASHED;
175 } 176 }
176 177
177 PrerenderContents::RenderViewGone(); 178 PrerenderContents::RenderViewGone();
178 } 179 }
179 180
180 virtual bool AddAliasURL(const GURL& url) OVERRIDE { 181 virtual bool AddAliasURL(const GURL& url, bool destroy_on_failure) OVERRIDE {
181 // Prevent FINAL_STATUS_UNSUPPORTED_SCHEME when navigating to about:crash in 182 // Prevent FINAL_STATUS_UNSUPPORTED_SCHEME when navigating to about:crash in
182 // the PrerenderRendererCrash test. 183 // the PrerenderRendererCrash test.
183 if (url.spec() != chrome::kAboutCrashURL) 184 if (url.spec() != chrome::kAboutCrashURL)
184 return PrerenderContents::AddAliasURL(url); 185 return PrerenderContents::AddAliasURL(url, destroy_on_failure);
185 return true; 186 return true;
186 } 187 }
187 188
188 virtual void DidStopLoading() OVERRIDE { 189 virtual void DidStopLoading() OVERRIDE {
189 PrerenderContents::DidStopLoading(); 190 PrerenderContents::DidStopLoading();
190 ++number_of_loads_; 191 ++number_of_loads_;
191 if (ShouldRenderPrerenderedPageCorrectly(expected_final_status_) && 192 if (ShouldRenderPrerenderedPageCorrectly(expected_final_status_) &&
192 number_of_loads_ == expected_number_of_loads_) { 193 number_of_loads_ == expected_number_of_loads_) {
193 MessageLoopForUI::current()->Quit(); 194 MessageLoopForUI::current()->Quit();
194 } 195 }
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 } 297 }
297 298
298 virtual PrerenderContents* CreatePrerenderContents( 299 virtual PrerenderContents* CreatePrerenderContents(
299 PrerenderManager* prerender_manager, 300 PrerenderManager* prerender_manager,
300 PrerenderTracker* prerender_tracker, 301 PrerenderTracker* prerender_tracker,
301 Profile* profile, 302 Profile* profile,
302 const GURL& url, 303 const GURL& url,
303 const GURL& referrer, 304 const GURL& referrer,
304 Origin origin, 305 Origin origin,
305 uint8 experiment_id) OVERRIDE { 306 uint8 experiment_id) OVERRIDE {
306 CHECK(!expected_final_status_queue_.empty()) << 307 FinalStatus expected_final_status = FINAL_STATUS_MATCH_COMPLETE_DUMMY;
307 "Creating prerender contents for " << url.path() << 308 if (!expected_final_status_queue_.empty()) {
308 " with no expected final status"; 309 expected_final_status = expected_final_status_queue_.front();
309 FinalStatus expected_final_status = expected_final_status_queue_.front(); 310 expected_final_status_queue_.pop_front();
310 expected_final_status_queue_.pop_front(); 311 }
311 VLOG(1) << "Creating prerender contents for " << url.path() << 312 VLOG(1) << "Creating prerender contents for " << url.path() <<
312 " with expected final status " << expected_final_status; 313 " with expected final status " << expected_final_status;
313 VLOG(1) << expected_final_status_queue_.size() << " left in the queue."; 314 VLOG(1) << expected_final_status_queue_.size() << " left in the queue.";
314 return new TestPrerenderContents(prerender_manager, prerender_tracker, 315 return new TestPrerenderContents(prerender_manager, prerender_tracker,
315 profile, url, 316 profile, url,
316 referrer, expected_number_of_loads_, 317 referrer, expected_number_of_loads_,
317 expected_final_status); 318 expected_final_status);
318 } 319 }
319 320
320 private: 321 private:
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 // Check if page behaves as expected while in prerendered state. 714 // Check if page behaves as expected while in prerendered state.
714 bool prerender_test_result = false; 715 bool prerender_test_result = false;
715 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 716 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
716 prerender_contents->render_view_host_mutable(), L"", 717 prerender_contents->render_view_host_mutable(), L"",
717 L"window.domAutomationController.send(DidPrerenderPass())", 718 L"window.domAutomationController.send(DidPrerenderPass())",
718 &prerender_test_result)); 719 &prerender_test_result));
719 EXPECT_TRUE(prerender_test_result); 720 EXPECT_TRUE(prerender_test_result);
720 } 721 }
721 } else { 722 } else {
722 // In the failure case, we should have removed |dest_url_| from the 723 // In the failure case, we should have removed |dest_url_| from the
723 // prerender_manager. 724 // prerender_manager. We ignore dummy PrerenderContents (as indicated
724 EXPECT_TRUE(prerender_contents == NULL); 725 // by not having started).
726 EXPECT_TRUE(prerender_contents == NULL ||
727 !prerender_contents->prerendering_has_started());
725 } 728 }
726 } 729 }
727 730
728 void NavigateToURLImpl(const GURL& dest_url, 731 void NavigateToURLImpl(const GURL& dest_url,
729 WindowOpenDisposition disposition) const { 732 WindowOpenDisposition disposition) const {
730 // Make sure in navigating we have a URL to use in the PrerenderManager. 733 // Make sure in navigating we have a URL to use in the PrerenderManager.
731 ASSERT_TRUE(GetPrerenderContents() != NULL); 734 ASSERT_TRUE(GetPrerenderContents() != NULL);
732 735
733 // If opening the page in a background tab, it won't be shown when swapped 736 // If opening the page in a background tab, it won't be shown when swapped
734 // in. 737 // in.
(...skipping 1106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1841 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSessionStorage) { 1844 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSessionStorage) {
1842 set_loader_path("files/prerender/prerender_loader_with_session_storage.html"); 1845 set_loader_path("files/prerender/prerender_loader_with_session_storage.html");
1843 PrerenderTestURL(GetCrossDomainTestUrl("files/prerender/prerender_page.html"), 1846 PrerenderTestURL(GetCrossDomainTestUrl("files/prerender/prerender_page.html"),
1844 FINAL_STATUS_USED, 1847 FINAL_STATUS_USED,
1845 1); 1848 1);
1846 NavigateToDestURL(); 1849 NavigateToDestURL();
1847 GoBackToPageBeforePrerender(browser()); 1850 GoBackToPageBeforePrerender(browser());
1848 } 1851 }
1849 1852
1850 } // namespace prerender 1853 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_contents.h » ('j') | chrome/browser/prerender/prerender_contents.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698