OLD | NEW |
---|---|
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 "chrome/test/base/browser_with_test_window_test.h" | 5 #include "chrome/test/base/browser_with_test_window_test.h" |
6 | 6 |
7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
8 #include <ole2.h> | 8 #include <ole2.h> |
9 #endif // defined(OS_WIN) | 9 #endif // defined(OS_WIN) |
10 | 10 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
63 params.disposition = NEW_FOREGROUND_TAB; | 63 params.disposition = NEW_FOREGROUND_TAB; |
64 browser::Navigate(¶ms); | 64 browser::Navigate(¶ms); |
65 CommitPendingLoad(¶ms.target_contents->controller()); | 65 CommitPendingLoad(¶ms.target_contents->controller()); |
66 } | 66 } |
67 | 67 |
68 void BrowserWithTestWindowTest::CommitPendingLoad( | 68 void BrowserWithTestWindowTest::CommitPendingLoad( |
69 NavigationController* controller) { | 69 NavigationController* controller) { |
70 if (!controller->pending_entry()) | 70 if (!controller->pending_entry()) |
71 return; // Nothing to commit. | 71 return; // Nothing to commit. |
72 | 72 |
73 TestRenderViewHost* test_rvh = | 73 TestRenderViewHost* old_rvh = |
74 TestRenderViewHostForTab(controller->tab_contents()); | 74 TestRenderViewHostForTab(controller->tab_contents()); |
75 MockRenderProcessHost* mock_rph = static_cast<MockRenderProcessHost*>( | 75 MockRenderProcessHost* mock_rph = static_cast<MockRenderProcessHost*>( |
76 test_rvh->process()); | 76 old_rvh->process()); |
77 | |
78 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>( | |
79 controller->tab_contents()->render_manager_for_testing()-> | |
80 pending_render_view_host()); | |
81 if (pending_rvh) { | |
82 // Simulate the ShouldClose_ACK that is received from the current renderer | |
83 // for a cross-site navigation. | |
84 DCHECK(old_rvh != pending_rvh); | |
Paweł Hajdan Jr.
2011/10/11 22:26:18
nit: DCHECK_NE.
Charlie Reis
2011/10/12 21:55:56
Done.
| |
85 old_rvh->SendShouldCloseACK(true); | |
86 } | |
87 // Commit on the pending_rvh, if one exists. | |
88 TestRenderViewHost* test_rvh = pending_rvh ? pending_rvh : old_rvh; | |
77 | 89 |
78 // For new navigations, we need to send a larger page ID. For renavigations, | 90 // For new navigations, we need to send a larger page ID. For renavigations, |
79 // we need to send the preexisting page ID. We can tell these apart because | 91 // we need to send the preexisting page ID. We can tell these apart because |
80 // renavigations will have a pending_entry_index while new ones won't (they'll | 92 // renavigations will have a pending_entry_index while new ones won't (they'll |
81 // just have a standalong pending_entry that isn't in the list already). | 93 // just have a standalong pending_entry that isn't in the list already). |
82 if (controller->pending_entry_index() >= 0) { | 94 if (controller->pending_entry_index() >= 0) { |
83 test_rvh->SendNavigate(controller->pending_entry()->page_id(), | 95 test_rvh->SendNavigateWithTransition( |
84 controller->pending_entry()->url()); | 96 controller->pending_entry()->page_id(), |
97 controller->pending_entry()->url(), | |
98 controller->pending_entry()->transition_type()); | |
85 } else { | 99 } else { |
86 test_rvh->SendNavigate(mock_rph->max_page_id() + 1, | 100 test_rvh->SendNavigateWithTransition( |
87 controller->pending_entry()->url()); | 101 mock_rph->max_page_id() + 1, |
102 controller->pending_entry()->url(), | |
103 controller->pending_entry()->transition_type()); | |
104 mock_rph->UpdateMaxPageID(mock_rph->max_page_id() + 1); | |
88 } | 105 } |
106 | |
107 // Simulate the SwapOut_ACK that fires if you commit a cross-site navigation | |
108 // without making any network requests. | |
109 if (pending_rvh) | |
110 old_rvh->OnSwapOutACK(); | |
89 } | 111 } |
90 | 112 |
91 void BrowserWithTestWindowTest::NavigateAndCommit( | 113 void BrowserWithTestWindowTest::NavigateAndCommit( |
92 NavigationController* controller, | 114 NavigationController* controller, |
93 const GURL& url) { | 115 const GURL& url) { |
94 controller->LoadURL(url, GURL(), PageTransition::LINK, std::string()); | 116 controller->LoadURL(url, GURL(), PageTransition::LINK, std::string()); |
95 CommitPendingLoad(controller); | 117 CommitPendingLoad(controller); |
96 } | 118 } |
97 | 119 |
98 void BrowserWithTestWindowTest::NavigateAndCommitActiveTab(const GURL& url) { | 120 void BrowserWithTestWindowTest::NavigateAndCommitActiveTab(const GURL& url) { |
99 NavigateAndCommit(&browser()->GetSelectedTabContents()->controller(), url); | 121 NavigateAndCommit(&browser()->GetSelectedTabContents()->controller(), url); |
100 } | 122 } |
101 | 123 |
102 void BrowserWithTestWindowTest::DestroyBrowser() { | 124 void BrowserWithTestWindowTest::DestroyBrowser() { |
103 if (!browser_.get()) | 125 if (!browser_.get()) |
104 return; | 126 return; |
105 // Make sure we close all tabs, otherwise Browser isn't happy in its | 127 // Make sure we close all tabs, otherwise Browser isn't happy in its |
106 // destructor. | 128 // destructor. |
107 browser()->CloseAllTabs(); | 129 browser()->CloseAllTabs(); |
108 browser_.reset(NULL); | 130 browser_.reset(NULL); |
109 window_.reset(NULL); | 131 window_.reset(NULL); |
110 } | 132 } |
111 | 133 |
112 TestingProfile* BrowserWithTestWindowTest::CreateProfile() { | 134 TestingProfile* BrowserWithTestWindowTest::CreateProfile() { |
113 return new TestingProfile(); | 135 return new TestingProfile(); |
114 } | 136 } |
OLD | NEW |