OLD | NEW |
---|---|
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 874 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
885 PrerenderTestURLImpl(prerender_url, destination_url, | 885 PrerenderTestURLImpl(prerender_url, destination_url, |
886 expected_final_status_queue, | 886 expected_final_status_queue, |
887 expected_number_of_loads, | 887 expected_number_of_loads, |
888 false); | 888 false); |
889 } | 889 } |
890 | 890 |
891 void NavigateToDestURL() const { | 891 void NavigateToDestURL() const { |
892 NavigateToDestURLWithDisposition(CURRENT_TAB, true); | 892 NavigateToDestURLWithDisposition(CURRENT_TAB, true); |
893 } | 893 } |
894 | 894 |
895 void NavigateToDestURLInNewTab() const { | |
896 // First, open a new tab. | |
897 ui_test_utils::NavigateToURLWithDisposition( | |
898 current_browser(), GURL(content::kAboutBlankURL), | |
899 NEW_FOREGROUND_TAB, | |
900 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | |
901 // Next, navigate to the destination URL. The swap-in will not succeed, | |
902 // due to session storage namespace mismatch. The merge is only kicked off | |
903 // asynchronously. | |
904 NavigateToDestURLWithDisposition(CURRENT_TAB, false); | |
905 } | |
906 | |
907 // Opens the url in a new tab, with no opener. | 895 // Opens the url in a new tab, with no opener. |
908 void NavigateToDestURLWithDisposition( | 896 void NavigateToDestURLWithDisposition( |
909 WindowOpenDisposition disposition, | 897 WindowOpenDisposition disposition, |
910 bool expect_swap_to_succeed) const { | 898 bool expect_swap_to_succeed) const { |
911 NavigateToURLWithParams( | 899 NavigateToURLWithParams( |
912 content::OpenURLParams(dest_url_, Referrer(), disposition, | 900 content::OpenURLParams(dest_url_, Referrer(), disposition, |
913 content::PAGE_TRANSITION_TYPED, false), | 901 content::PAGE_TRANSITION_TYPED, false), |
914 expect_swap_to_succeed); | 902 expect_swap_to_succeed); |
915 } | 903 } |
916 | 904 |
(...skipping 2528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3445 // prerendered page tries to make a second navigation entry. | 3433 // prerendered page tries to make a second navigation entry. |
3446 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNewNavigationEntry) { | 3434 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNewNavigationEntry) { |
3447 PrerenderTestURL("files/prerender/prerender_new_entry.html", | 3435 PrerenderTestURL("files/prerender/prerender_new_entry.html", |
3448 FINAL_STATUS_NEW_NAVIGATION_ENTRY, | 3436 FINAL_STATUS_NEW_NAVIGATION_ENTRY, |
3449 1); | 3437 1); |
3450 } | 3438 } |
3451 | 3439 |
3452 // Attempt a swap-in in a new tab, verifying that session storage namespace | 3440 // Attempt a swap-in in a new tab, verifying that session storage namespace |
3453 // merging works. | 3441 // merging works. |
3454 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageNewTab) { | 3442 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageNewTab) { |
3455 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 3443 PrerenderTestURL("files/prerender/prerender_session_storage.html", |
3456 NavigateToDestURLInNewTab(); | 3444 FINAL_STATUS_USED, 1); |
3445 | |
3446 // Open a new tab to navigate in. | |
3447 ui_test_utils::NavigateToURLWithDisposition( | |
3448 current_browser(), | |
3449 test_server()->GetURL("files/prerender/init_session_storage.html"), | |
3450 NEW_FOREGROUND_TAB, | |
3451 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | |
3452 | |
3453 // Now navigate in the new tab. Set expect_swap_to_succeed to false because | |
3454 // the swap does not occur synchronously. | |
mmenke
2014/01/09 16:17:01
Now that we have the swap_observer, can't we just
mmenke
2014/01/09 16:20:27
Oh, is the issue that OpenURL() returns the wrong
davidben
2014/01/09 17:39:15
Yeah, it's really confusing. This isn't new from t
mmenke
2014/01/09 21:48:35
The watcher would always be able to get the right
davidben
2014/01/09 21:51:49
Added TODO.
| |
3455 NavigateToDestURLWithDisposition(CURRENT_TAB, false); | |
3456 | |
3457 // Verify DidDisplayPass manually since the previous call skipped it. | |
3458 EXPECT_TRUE(DidDisplayPass( | |
3459 current_browser()->tab_strip_model()->GetActiveWebContents())); | |
3460 } | |
3461 | |
3462 // Verify that session storage conflicts don't merge. | |
3463 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSessionStorageConflict) { | |
3464 PrerenderTestURL("files/prerender/prerender_session_storage_conflict.html", | |
3465 FINAL_STATUS_APP_TERMINATING, 1); | |
3466 | |
3467 // Open a new tab to navigate in. | |
3468 ui_test_utils::NavigateToURLWithDisposition( | |
3469 current_browser(), | |
3470 test_server()->GetURL("files/prerender/init_session_storage.html"), | |
3471 NEW_FOREGROUND_TAB, | |
3472 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | |
3473 | |
3474 // Now navigate in the new tab. | |
3475 NavigateToDestURLWithDisposition(CURRENT_TAB, false); | |
3476 | |
3477 // Verify DidDisplayPass in the new tab. | |
3478 EXPECT_TRUE(DidDisplayPass( | |
3479 current_browser()->tab_strip_model()->GetActiveWebContents())); | |
3457 } | 3480 } |
3458 | 3481 |
3459 // Checks that prerenders honor |should_replace_current_entry|. | 3482 // Checks that prerenders honor |should_replace_current_entry|. |
3460 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReplaceCurrentEntry) { | 3483 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReplaceCurrentEntry) { |
3461 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 3484 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
3462 | 3485 |
3463 content::OpenURLParams params(dest_url(), Referrer(), CURRENT_TAB, | 3486 content::OpenURLParams params(dest_url(), Referrer(), CURRENT_TAB, |
3464 content::PAGE_TRANSITION_TYPED, false); | 3487 content::PAGE_TRANSITION_TYPED, false); |
3465 params.should_replace_current_entry = true; | 3488 params.should_replace_current_entry = true; |
3466 NavigateToURLWithParams(params, false); | 3489 NavigateToURLWithParams(params, false); |
3467 | 3490 |
3468 WebContents* web_contents = | 3491 WebContents* web_contents = |
3469 current_browser()->tab_strip_model()->GetActiveWebContents(); | 3492 current_browser()->tab_strip_model()->GetActiveWebContents(); |
3470 const NavigationController& controller = web_contents->GetController(); | 3493 const NavigationController& controller = web_contents->GetController(); |
3471 // First entry is about:blank, second is prerender_page.html. | 3494 // First entry is about:blank, second is prerender_page.html. |
3472 EXPECT_TRUE(controller.GetPendingEntry() == NULL); | 3495 EXPECT_TRUE(controller.GetPendingEntry() == NULL); |
3473 EXPECT_EQ(2, controller.GetEntryCount()); | 3496 EXPECT_EQ(2, controller.GetEntryCount()); |
3474 EXPECT_EQ(GURL(content::kAboutBlankURL), | 3497 EXPECT_EQ(GURL(content::kAboutBlankURL), |
3475 controller.GetEntryAtIndex(0)->GetURL()); | 3498 controller.GetEntryAtIndex(0)->GetURL()); |
3476 EXPECT_EQ(dest_url(), controller.GetEntryAtIndex(1)->GetURL()); | 3499 EXPECT_EQ(dest_url(), controller.GetEntryAtIndex(1)->GetURL()); |
3477 } | 3500 } |
3478 | 3501 |
3479 } // namespace prerender | 3502 } // namespace prerender |
OLD | NEW |