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

Side by Side Diff: content/browser/tab_contents/render_view_host_manager_unittest.cc

Issue 9838009: Clean up a few TODO items. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Respond to review comments. Created 8 years, 9 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 "base/utf_string_conversions.h" 5 #include "base/utf_string_conversions.h"
6 #include "content/browser/browser_thread_impl.h" 6 #include "content/browser/browser_thread_impl.h"
7 #include "content/browser/mock_content_browser_client.h" 7 #include "content/browser/mock_content_browser_client.h"
8 #include "content/browser/renderer_host/test_render_view_host.h" 8 #include "content/browser/renderer_host/test_render_view_host.h"
9 #include "content/browser/site_instance_impl.h" 9 #include "content/browser/site_instance_impl.h"
10 #include "content/browser/tab_contents/navigation_controller_impl.h" 10 #include "content/browser/tab_contents/navigation_controller_impl.h"
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 const GURL kDestUrl("http://www.google.com/"); 262 const GURL kDestUrl("http://www.google.com/");
263 263
264 // Navigate our first tab to the new tab page and then to the destination. 264 // Navigate our first tab to the new tab page and then to the destination.
265 NavigateActiveAndCommit(kNtpUrl); 265 NavigateActiveAndCommit(kNtpUrl);
266 TestRenderViewHost* ntp_rvh = static_cast<TestRenderViewHost*>( 266 TestRenderViewHost* ntp_rvh = static_cast<TestRenderViewHost*>(
267 contents()->GetRenderManagerForTesting()->current_host()); 267 contents()->GetRenderManagerForTesting()->current_host());
268 268
269 // Send an update title message and make sure it works. 269 // Send an update title message and make sure it works.
270 const string16 ntp_title = ASCIIToUTF16("NTP Title"); 270 const string16 ntp_title = ASCIIToUTF16("NTP Title");
271 WebKit::WebTextDirection direction = WebKit::WebTextDirectionLeftToRight; 271 WebKit::WebTextDirection direction = WebKit::WebTextDirectionLeftToRight;
272 EXPECT_TRUE(ntp_rvh->TestOnMessageReceived( 272 EXPECT_TRUE(ntp_rvh->OnMessageReceived(
273 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 0, ntp_title, direction))); 273 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 0, ntp_title, direction)));
274 EXPECT_EQ(ntp_title, contents()->GetTitle()); 274 EXPECT_EQ(ntp_title, contents()->GetTitle());
275 275
276 // Navigate to a cross-site URL. 276 // Navigate to a cross-site URL.
277 contents()->GetController().LoadURL( 277 contents()->GetController().LoadURL(
278 kDestUrl, content::Referrer(), content::PAGE_TRANSITION_LINK, 278 kDestUrl, content::Referrer(), content::PAGE_TRANSITION_LINK,
279 std::string()); 279 std::string());
280 EXPECT_TRUE(contents()->cross_navigation_pending()); 280 EXPECT_TRUE(contents()->cross_navigation_pending());
281 TestRenderViewHost* dest_rvh = static_cast<TestRenderViewHost*>( 281 TestRenderViewHost* dest_rvh = static_cast<TestRenderViewHost*>(
282 contents()->GetRenderManagerForTesting()->pending_render_view_host()); 282 contents()->GetRenderManagerForTesting()->pending_render_view_host());
283 ASSERT_TRUE(dest_rvh); 283 ASSERT_TRUE(dest_rvh);
284 EXPECT_NE(ntp_rvh, dest_rvh); 284 EXPECT_NE(ntp_rvh, dest_rvh);
285 285
286 // BeforeUnload finishes. 286 // BeforeUnload finishes.
287 ntp_rvh->SendShouldCloseACK(true); 287 ntp_rvh->SendShouldCloseACK(true);
288 288
289 // Assume SwapOutACK times out, so the dest_rvh proceeds and commits. 289 // Assume SwapOutACK times out, so the dest_rvh proceeds and commits.
290 dest_rvh->SendNavigate(101, kDestUrl); 290 dest_rvh->SendNavigate(101, kDestUrl);
291 291
292 // The new RVH should be able to update its title. 292 // The new RVH should be able to update its title.
293 const string16 dest_title = ASCIIToUTF16("Google"); 293 const string16 dest_title = ASCIIToUTF16("Google");
294 EXPECT_TRUE(dest_rvh->TestOnMessageReceived( 294 EXPECT_TRUE(dest_rvh->OnMessageReceived(
295 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 101, dest_title, 295 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 101, dest_title,
296 direction))); 296 direction)));
297 EXPECT_EQ(dest_title, contents()->GetTitle()); 297 EXPECT_EQ(dest_title, contents()->GetTitle());
298 298
299 // The old renderer, being slow, now updates the title. It should be filtered 299 // The old renderer, being slow, now updates the title. It should be filtered
300 // out and not take effect. 300 // out and not take effect.
301 EXPECT_TRUE(ntp_rvh->is_swapped_out()); 301 EXPECT_TRUE(ntp_rvh->is_swapped_out());
302 EXPECT_TRUE(ntp_rvh->TestOnMessageReceived( 302 EXPECT_TRUE(ntp_rvh->OnMessageReceived(
303 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 0, ntp_title, direction))); 303 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 0, ntp_title, direction)));
304 EXPECT_EQ(dest_title, contents()->GetTitle()); 304 EXPECT_EQ(dest_title, contents()->GetTitle());
305 305
306 // We cannot filter out synchronous IPC messages, because the renderer would 306 // We cannot filter out synchronous IPC messages, because the renderer would
307 // be left waiting for a reply. We pick RunBeforeUnloadConfirm as an example 307 // be left waiting for a reply. We pick RunBeforeUnloadConfirm as an example
308 // that can run easily within a unit test, and that needs to receive a reply 308 // that can run easily within a unit test, and that needs to receive a reply
309 // without showing an actual dialog. 309 // without showing an actual dialog.
310 MockRenderProcessHost* ntp_process_host = 310 MockRenderProcessHost* ntp_process_host =
311 static_cast<MockRenderProcessHost*>(ntp_rvh->GetProcess()); 311 static_cast<MockRenderProcessHost*>(ntp_rvh->GetProcess());
312 ntp_process_host->sink().ClearMessages(); 312 ntp_process_host->sink().ClearMessages();
313 const string16 msg = ASCIIToUTF16("Message"); 313 const string16 msg = ASCIIToUTF16("Message");
314 bool result = false; 314 bool result = false;
315 string16 unused; 315 string16 unused;
316 ViewHostMsg_RunBeforeUnloadConfirm before_unload_msg( 316 ViewHostMsg_RunBeforeUnloadConfirm before_unload_msg(
317 rvh()->GetRoutingID(), kNtpUrl, msg, false, &result, &unused); 317 rvh()->GetRoutingID(), kNtpUrl, msg, false, &result, &unused);
318 // Enable pumping for check in BrowserMessageFilter::CheckCanDispatchOnUI. 318 // Enable pumping for check in BrowserMessageFilter::CheckCanDispatchOnUI.
319 before_unload_msg.EnableMessagePumping(); 319 before_unload_msg.EnableMessagePumping();
320 EXPECT_TRUE(ntp_rvh->TestOnMessageReceived(before_unload_msg)); 320 EXPECT_TRUE(ntp_rvh->OnMessageReceived(before_unload_msg));
321 EXPECT_TRUE(ntp_process_host->sink().GetUniqueMessageMatching(IPC_REPLY_ID)); 321 EXPECT_TRUE(ntp_process_host->sink().GetUniqueMessageMatching(IPC_REPLY_ID));
322 322
323 // Also test RunJavaScriptMessage. 323 // Also test RunJavaScriptMessage.
324 ntp_process_host->sink().ClearMessages(); 324 ntp_process_host->sink().ClearMessages();
325 ViewHostMsg_RunJavaScriptMessage js_msg( 325 ViewHostMsg_RunJavaScriptMessage js_msg(
326 rvh()->GetRoutingID(), msg, msg, kNtpUrl, 326 rvh()->GetRoutingID(), msg, msg, kNtpUrl,
327 ui::JAVASCRIPT_MESSAGE_TYPE_CONFIRM, &result, &unused); 327 ui::JAVASCRIPT_MESSAGE_TYPE_CONFIRM, &result, &unused);
328 js_msg.EnableMessagePumping(); 328 js_msg.EnableMessagePumping();
329 EXPECT_TRUE(ntp_rvh->TestOnMessageReceived(js_msg)); 329 EXPECT_TRUE(ntp_rvh->OnMessageReceived(js_msg));
330 EXPECT_TRUE(ntp_process_host->sink().GetUniqueMessageMatching(IPC_REPLY_ID)); 330 EXPECT_TRUE(ntp_process_host->sink().GetUniqueMessageMatching(IPC_REPLY_ID));
331 } 331 }
332 332
333 // When there is an error with the specified page, renderer exits view-source 333 // When there is an error with the specified page, renderer exits view-source
334 // mode. See WebFrameImpl::DidFail(). We check by this test that 334 // mode. See WebFrameImpl::DidFail(). We check by this test that
335 // EnableViewSourceMode message is sent on every navigation regardless 335 // EnableViewSourceMode message is sent on every navigation regardless
336 // RenderView is being newly created or reused. 336 // RenderView is being newly created or reused.
337 TEST_F(RenderViewHostManagerTest, AlwaysSendEnableViewSourceMode) { 337 TEST_F(RenderViewHostManagerTest, AlwaysSendEnableViewSourceMode) {
338 BrowserThreadImpl ui_thread(BrowserThread::UI, MessageLoop::current()); 338 BrowserThreadImpl ui_thread(BrowserThread::UI, MessageLoop::current());
339 const GURL kNtpUrl(chrome::kTestNewTabURL); 339 const GURL kNtpUrl(chrome::kTestNewTabURL);
340 const GURL kUrl("view-source:http://foo"); 340 const GURL kUrl("view-source:http://foo");
341 341
342 // We have to navigate to some page at first since without this, the first 342 // We have to navigate to some page at first since without this, the first
343 // navigation will reuse the SiteInstance created by Init(), and the second 343 // navigation will reuse the SiteInstance created by Init(), and the second
344 // one will create a new SiteInstance. Because current_instance and 344 // one will create a new SiteInstance. Because current_instance and
345 // new_instance will be different, a new RenderViewHost will be created for 345 // new_instance will be different, a new RenderViewHost will be created for
346 // the second navigation. We have to avoid this in order to exercise the 346 // the second navigation. We have to avoid this in order to exercise the
347 // target code patch. 347 // target code patch.
348 NavigateActiveAndCommit(kNtpUrl); 348 NavigateActiveAndCommit(kNtpUrl);
349 349
350 // Navigate. 350 // Navigate.
351 controller().LoadURL( 351 controller().LoadURL(
352 kUrl, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 352 kUrl, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
353 // Simulate response from RenderView for FirePageBeforeUnload. 353 // Simulate response from RenderView for FirePageBeforeUnload.
354 test_rvh()->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK( 354 test_rvh()->OnMessageReceived(ViewHostMsg_ShouldClose_ACK(
355 rvh()->GetRoutingID(), true, base::TimeTicks(), base::TimeTicks())); 355 rvh()->GetRoutingID(), true, base::TimeTicks(), base::TimeTicks()));
356 ASSERT_TRUE(pending_rvh()); // New pending RenderViewHost will be created. 356 ASSERT_TRUE(pending_rvh()); // New pending RenderViewHost will be created.
357 RenderViewHost* last_rvh = pending_rvh(); 357 RenderViewHost* last_rvh = pending_rvh();
358 int32 new_id = contents()->GetMaxPageIDForSiteInstance( 358 int32 new_id = contents()->GetMaxPageIDForSiteInstance(
359 active_rvh()->GetSiteInstance()) + 1; 359 active_rvh()->GetSiteInstance()) + 1;
360 pending_test_rvh()->SendNavigate(new_id, kUrl); 360 pending_test_rvh()->SendNavigate(new_id, kUrl);
361 EXPECT_EQ(controller().GetLastCommittedEntryIndex(), 1); 361 EXPECT_EQ(controller().GetLastCommittedEntryIndex(), 1);
362 ASSERT_TRUE(controller().GetLastCommittedEntry()); 362 ASSERT_TRUE(controller().GetLastCommittedEntry());
363 EXPECT_TRUE(kUrl == controller().GetLastCommittedEntry()->GetURL()); 363 EXPECT_TRUE(kUrl == controller().GetLastCommittedEntry()->GetURL());
364 EXPECT_FALSE(controller().GetPendingEntry()); 364 EXPECT_FALSE(controller().GetPendingEntry());
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 762
763 // We should be able to navigate forward. 763 // We should be able to navigate forward.
764 contents()->GetController().GoForward(); 764 contents()->GetController().GoForward();
765 contents()->ProceedWithCrossSiteNavigation(); 765 contents()->ProceedWithCrossSiteNavigation();
766 const NavigationEntry* entry2 = contents()->GetController().GetPendingEntry(); 766 const NavigationEntry* entry2 = contents()->GetController().GetPendingEntry();
767 rvh2->SendNavigate(entry2->GetPageID(), entry2->GetURL()); 767 rvh2->SendNavigate(entry2->GetPageID(), entry2->GetURL());
768 EXPECT_EQ(rvh2, rvh()); 768 EXPECT_EQ(rvh2, rvh());
769 EXPECT_FALSE(rvh2->is_swapped_out()); 769 EXPECT_FALSE(rvh2->is_swapped_out());
770 EXPECT_TRUE(rvh1->is_swapped_out()); 770 EXPECT_TRUE(rvh1->is_swapped_out());
771 } 771 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698