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

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

Issue 6905013: Revert 82928 - Changing URL match method to support fragments.BUG=79898TEST=PrerenderBrowserTest.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_contents.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Deleted: svn:mergeinfo
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/string_util.h" 9 #include "base/string_util.h"
10 #include "chrome/browser/prerender/prerender_contents.h" 10 #include "chrome/browser/prerender/prerender_contents.h"
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 void PrerenderTestURL( 168 void PrerenderTestURL(
169 const std::string& html_file, 169 const std::string& html_file,
170 const std::deque<FinalStatus>& expected_final_status_queue, 170 const std::deque<FinalStatus>& expected_final_status_queue,
171 int total_navigations) { 171 int total_navigations) {
172 PrerenderTestURLImpl(html_file, 172 PrerenderTestURLImpl(html_file,
173 expected_final_status_queue, 173 expected_final_status_queue,
174 total_navigations); 174 total_navigations);
175 } 175 }
176 176
177 void NavigateToDestURL() const { 177 void NavigateToDestURL() const {
178 NavigateToURLImpl(dest_url_); 178 ui_test_utils::NavigateToURL(browser(), dest_url_);
179 }
180 179
181 // Should be const but test_server()->GetURL(...) is not const. 180 // Make sure the PrerenderContents found earlier was used or removed
182 void NavigateToURL(const std::string& dest_html_file) { 181 EXPECT_TRUE(prerender_manager()->FindEntry(dest_url_) == NULL);
183 GURL dest_url = test_server()->GetURL(dest_html_file); 182
184 NavigateToURLImpl(dest_url); 183 // Check if page behaved as expected when actually displayed.
184 bool display_test_result = false;
185 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
186 browser()->GetSelectedTabContents()->render_view_host(), L"",
187 L"window.domAutomationController.send(DidDisplayPass())",
188 &display_test_result));
189 EXPECT_TRUE(display_test_result);
185 } 190 }
186 191
187 bool UrlIsInPrerenderManager(const std::string& html_file) { 192 bool UrlIsInPrerenderManager(const std::string& html_file) {
188 GURL dest_url = test_server()->GetURL(html_file); 193 GURL dest_url = test_server()->GetURL(html_file);
189 return (prerender_manager()->FindEntry(dest_url) != NULL); 194 return (prerender_manager()->FindEntry(dest_url) != NULL);
190 } 195 }
191 196
192 bool UrlIsInPrerenderManager(const GURL& url) { 197 bool UrlIsInPrerenderManager(const GURL& url) {
193 return (prerender_manager()->FindEntry(url) != NULL); 198 return (prerender_manager()->FindEntry(url) != NULL);
194 } 199 }
195 200
196 bool UrlIsPendingInPrerenderManager(const std::string& html_file) { 201 bool UrlIsPendingInPrerenderManager(const std::string& html_file) {
197 GURL dest_url = test_server()->GetURL(html_file); 202 GURL dest_url = test_server()->GetURL(html_file);
198 return (prerender_manager()->FindPendingEntry(dest_url) != NULL); 203 return (prerender_manager()->FindPendingEntry(dest_url) != NULL);
199 } 204 }
200 205
201 void set_use_https_src(bool use_https_src_server) { 206 void set_use_https_src(bool use_https_src_server) {
202 use_https_src_server_ = use_https_src_server; 207 use_https_src_server_ = use_https_src_server;
203 } 208 }
204 209
205 TaskManagerModel* model() const { 210 TaskManagerModel* model() const {
206 return TaskManager::GetInstance()->model(); 211 return TaskManager::GetInstance()->model();
207 } 212 }
208 213
214 void set_dest_url(const GURL& dest_url) { dest_url_ = dest_url; }
215
209 private: 216 private:
210 void PrerenderTestURLImpl( 217 void PrerenderTestURLImpl(
211 const std::string& html_file, 218 const std::string& html_file,
212 const std::deque<FinalStatus>& expected_final_status_queue, 219 const std::deque<FinalStatus>& expected_final_status_queue,
213 int total_navigations) { 220 int total_navigations) {
214 ASSERT_TRUE(test_server()->Start()); 221 ASSERT_TRUE(test_server()->Start());
215 dest_url_ = test_server()->GetURL(html_file); 222 dest_url_ = test_server()->GetURL(html_file);
216 223
217 std::vector<net::TestServer::StringPair> replacement_text; 224 std::vector<net::TestServer::StringPair> replacement_text;
218 replacement_text.push_back( 225 replacement_text.push_back(
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 break; 279 break;
273 } 280 }
274 default: 281 default:
275 // In the failure case, we should have removed dest_url_ from the 282 // In the failure case, we should have removed dest_url_ from the
276 // prerender_manager. 283 // prerender_manager.
277 EXPECT_TRUE(prerender_contents == NULL); 284 EXPECT_TRUE(prerender_contents == NULL);
278 break; 285 break;
279 } 286 }
280 } 287 }
281 288
282 void NavigateToURLImpl(const GURL& dest_url) const {
283 // Make sure in navigating we have a URL to use in the PrerenderManager.
284 EXPECT_TRUE(prerender_manager()->FindEntry(dest_url_) != NULL);
285
286 ui_test_utils::NavigateToURL(browser(), dest_url);
287
288 // Make sure the PrerenderContents found earlier was used or removed.
289 EXPECT_TRUE(prerender_manager()->FindEntry(dest_url_) == NULL);
290
291 // Check if page behaved as expected when actually displayed.
292 bool display_test_result = false;
293 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
294 browser()->GetSelectedTabContents()->render_view_host(), L"",
295 L"window.domAutomationController.send(DidDisplayPass())",
296 &display_test_result));
297 EXPECT_TRUE(display_test_result);
298 }
299
300 PrerenderManager* prerender_manager() const { 289 PrerenderManager* prerender_manager() const {
301 Profile* profile = browser()->GetSelectedTabContents()->profile(); 290 Profile* profile = browser()->GetSelectedTabContents()->profile();
302 PrerenderManager* prerender_manager = profile->GetPrerenderManager(); 291 PrerenderManager* prerender_manager = profile->GetPrerenderManager();
303 return prerender_manager; 292 return prerender_manager;
304 } 293 }
305 294
306 WaitForLoadPrerenderContentsFactory* prc_factory_; 295 WaitForLoadPrerenderContentsFactory* prc_factory_;
307 GURL dest_url_; 296 GURL dest_url_;
308 bool use_https_src_server_; 297 bool use_https_src_server_;
309 }; 298 };
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 362
374 // Checks that client-issued redirects work with prerendering. 363 // Checks that client-issued redirects work with prerendering.
375 // This version navigates to the final destination page, rather than the 364 // This version navigates to the final destination page, rather than the
376 // page which does the redirection. 365 // page which does the redirection.
377 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 366 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
378 PrerenderClientRedirectNavigateToSecond) { 367 PrerenderClientRedirectNavigateToSecond) {
379 PrerenderTestURL( 368 PrerenderTestURL(
380 CreateClientRedirect("files/prerender/prerender_page.html"), 369 CreateClientRedirect("files/prerender/prerender_page.html"),
381 FINAL_STATUS_USED, 370 FINAL_STATUS_USED,
382 2); 371 2);
383 NavigateToURL("files/prerender/prerender_page.html"); 372 set_dest_url(test_server()->GetURL("files/prerender/prerender_page.html"));
373 NavigateToDestURL();
384 } 374 }
385 375
386 // Checks that client-issued redirects to an https page will cancel prerenders. 376 // Checks that client-issued redirects to an https page will cancel prerenders.
387 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClientRedirectToHttps) { 377 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClientRedirectToHttps) {
388 net::TestServer https_server(net::TestServer::TYPE_HTTPS, 378 net::TestServer https_server(net::TestServer::TYPE_HTTPS,
389 FilePath(FILE_PATH_LITERAL("chrome/test/data"))); 379 FilePath(FILE_PATH_LITERAL("chrome/test/data")));
390 ASSERT_TRUE(https_server.Start()); 380 ASSERT_TRUE(https_server.Start());
391 GURL https_url = https_server.GetURL("files/prerender/prerender_page.html"); 381 GURL https_url = https_server.GetURL("files/prerender/prerender_page.html");
392 PrerenderTestURL(CreateClientRedirect(https_url.spec()), 382 PrerenderTestURL(CreateClientRedirect(https_url.spec()),
393 FINAL_STATUS_HTTPS, 383 FINAL_STATUS_HTTPS,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 // Checks that server-issued redirects work with prerendering. 441 // Checks that server-issued redirects work with prerendering.
452 // This version navigates to the final destination page, rather than the 442 // This version navigates to the final destination page, rather than the
453 // page which does the redirection. 443 // page which does the redirection.
454 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 444 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
455 PrerenderServerRedirectNavigateToSecond) { 445 PrerenderServerRedirectNavigateToSecond) {
456 std::string redirect_path; 446 std::string redirect_path;
457 PrerenderTestURL( 447 PrerenderTestURL(
458 CreateServerRedirect("files/prerender/prerender_page.html"), 448 CreateServerRedirect("files/prerender/prerender_page.html"),
459 FINAL_STATUS_USED, 449 FINAL_STATUS_USED,
460 1); 450 1);
461 NavigateToURL("files/prerender/prerender_page.html"); 451 set_dest_url(test_server()->GetURL("files/prerender/prerender_page.html"));
452 NavigateToDestURL();
462 } 453 }
463 454
464 // TODO(cbentzel): Add server-redirect-to-https test. http://crbug.com/79182 455 // TODO(cbentzel): Add server-redirect-to-https test. http://crbug.com/79182
465 456
466 // Checks that server-issued redirects within an iframe in a prerendered 457 // Checks that server-issued redirects within an iframe in a prerendered
467 // page will not count as an "alias" for the prerendered page. 458 // page will not count as an "alias" for the prerendered page.
468 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderServerRedirectInIframe) { 459 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderServerRedirectInIframe) {
469 std::string redirect_path = CreateServerRedirect( 460 std::string redirect_path = CreateServerRedirect(
470 "/files/prerender/prerender_embedded_content.html"); 461 "/files/prerender/prerender_embedded_content.html");
471 std::vector<net::TestServer::StringPair> replacement_text; 462 std::vector<net::TestServer::StringPair> replacement_text;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 // Checks that popups on a prerendered page cause cancellation. 542 // Checks that popups on a prerendered page cause cancellation.
552 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPopup) { 543 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPopup) {
553 PrerenderTestURL("files/prerender/prerender_popup.html", 544 PrerenderTestURL("files/prerender/prerender_popup.html",
554 FINAL_STATUS_CREATE_NEW_WINDOW, 545 FINAL_STATUS_CREATE_NEW_WINDOW,
555 1); 546 1);
556 } 547 }
557 548
558 549
559 550
560 // Checks that renderers using excessive memory will be terminated. 551 // Checks that renderers using excessive memory will be terminated.
561 // Disabled, http://crbug.com/77870. 552 // Disabled, http://crbug.com/80324.
562 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 553 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
563 DISABLED_PrerenderExcessiveMemory) { 554 DISABLED_PrerenderExcessiveMemory) {
564 PrerenderTestURL("files/prerender/prerender_excessive_memory.html", 555 PrerenderTestURL("files/prerender/prerender_excessive_memory.html",
565 FINAL_STATUS_MEMORY_LIMIT_EXCEEDED, 556 FINAL_STATUS_MEMORY_LIMIT_EXCEEDED,
566 1); 557 1);
567 } 558 }
568 559
569 // Checks that we don't prerender in an infinite loop. 560 // Checks that we don't prerender in an infinite loop.
570 // Disabled, http://crbug.com/80324. 561 // Disabled, http://crbug.com/77323.
571 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderInfiniteLoop) { 562 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderInfiniteLoop) {
572 const char* const kHtmlFileA = "prerender_infinite_a.html"; 563 const char* const kHtmlFileA = "prerender_infinite_a.html";
573 const char* const kHtmlFileB = "prerender_infinite_b.html"; 564 const char* const kHtmlFileB = "prerender_infinite_b.html";
574 565
575 std::deque<FinalStatus> expected_final_status_queue; 566 std::deque<FinalStatus> expected_final_status_queue;
576 expected_final_status_queue.push_back(FINAL_STATUS_USED); 567 expected_final_status_queue.push_back(FINAL_STATUS_USED);
577 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING); 568 expected_final_status_queue.push_back(FINAL_STATUS_APP_TERMINATING);
578 569
579 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1); 570 PrerenderTestURL(kHtmlFileA, expected_final_status_queue, 1);
580 571
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 } 679 }
689 680
690 // Checks that prerenderers will terminate when the RenderView crashes. 681 // Checks that prerenderers will terminate when the RenderView crashes.
691 // Note that the prerendering RenderView will be redirected to about:crash. 682 // Note that the prerendering RenderView will be redirected to about:crash.
692 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderRendererCrash) { 683 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderRendererCrash) {
693 PrerenderTestURL(CreateClientRedirect("files/prerender/prerender_page.html"), 684 PrerenderTestURL(CreateClientRedirect("files/prerender/prerender_page.html"),
694 FINAL_STATUS_RENDERER_CRASHED, 685 FINAL_STATUS_RENDERER_CRASHED,
695 1); 686 1);
696 } 687 }
697 688
698 // Checks that we correctly use a prerendered page when navigating to a
699 // fragment.
700 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageNavigateFragment) {
701 PrerenderTestURL("files/prerender/prerender_fragment.html",
702 FINAL_STATUS_USED,
703 1);
704 NavigateToURL("files/prerender/prerender_fragment.html#fragment");
705 }
706
707 // Checks that we correctly use a prerendered page when we prerender a fragment
708 // but navigate to the main page.
709 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderFragmentNavigatePage) {
710 PrerenderTestURL("files/prerender/prerender_page.html#fragment",
711 FINAL_STATUS_USED,
712 1);
713 NavigateToURL("files/prerender/prerender_page.html");
714 }
715
716 // Checks that we correctly use a prerendered page when we prerender a fragment
717 // but navigate to a different fragment on the same page.
718 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
719 PrerenderFragmentNavigateFragment) {
720 PrerenderTestURL("files/prerender/prerender_fragment.html#other_fragment",
721 FINAL_STATUS_USED,
722 1);
723 NavigateToURL("files/prerender/prerender_fragment.html#fragment");
724 }
725
726 // Checks that we correctly use a prerendered page when the page uses meta
727 // http-equiv to refresh to a fragment on the same page.
728 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
729 PrerenderClientRedirectToFragment) {
730 PrerenderTestURL(
731 CreateClientRedirect("files/prerender/prerender_fragment.html#fragment"),
732 FINAL_STATUS_USED,
733 2);
734 NavigateToURL(
735 CreateClientRedirect("files/prerender/prerender_fragment.html"));
736 }
737
738 // Checks that we correctly use a prerendered page when the page uses JS to set
739 // the window.location.hash to a fragment on the same page.
740 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
741 PrerenderPageChangeFragmentLocationHash) {
742 PrerenderTestURL("files/prerender/prerender_fragment_location_hash.html",
743 FINAL_STATUS_USED,
744 1);
745 NavigateToURL("files/prerender/prerender_fragment_location_hash.html");
746 }
747
748 } // namespace prerender 689 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_contents.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698