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

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

Issue 9146028: Define the public interface for content browser SiteInstance. This interface is implemented by th... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 8 years, 11 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 "content/browser/browser_thread_impl.h" 5 #include "content/browser/browser_thread_impl.h"
6 #include "content/browser/browser_url_handler.h" 6 #include "content/browser/browser_url_handler.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.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"
11 #include "content/browser/tab_contents/navigation_entry_impl.h" 11 #include "content/browser/tab_contents/navigation_entry_impl.h"
12 #include "content/browser/tab_contents/render_view_host_manager.h" 12 #include "content/browser/tab_contents/render_view_host_manager.h"
13 #include "content/browser/tab_contents/test_tab_contents.h" 13 #include "content/browser/tab_contents/test_tab_contents.h"
14 #include "content/browser/webui/empty_web_ui_factory.h" 14 #include "content/browser/webui/empty_web_ui_factory.h"
15 #include "content/common/test_url_constants.h" 15 #include "content/common/test_url_constants.h"
16 #include "content/common/view_messages.h" 16 #include "content/common/view_messages.h"
17 #include "content/public/browser/notification_details.h" 17 #include "content/public/browser/notification_details.h"
18 #include "content/public/browser/notification_source.h" 18 #include "content/public/browser/notification_source.h"
19 #include "content/public/browser/notification_types.h" 19 #include "content/public/browser/notification_types.h"
20 #include "content/public/browser/web_ui_controller.h" 20 #include "content/public/browser/web_ui_controller.h"
21 #include "content/public/common/page_transition_types.h" 21 #include "content/public/common/page_transition_types.h"
22 #include "content/public/common/url_constants.h" 22 #include "content/public/common/url_constants.h"
23 #include "content/test/test_browser_context.h" 23 #include "content/test/test_browser_context.h"
24 #include "content/test/test_notification_tracker.h" 24 #include "content/test/test_notification_tracker.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 #include "googleurl/src/url_util.h" 26 #include "googleurl/src/url_util.h"
27 #include "webkit/glue/webkit_glue.h" 27 #include "webkit/glue/webkit_glue.h"
28 28
29 using content::BrowserThread; 29 using content::BrowserThread;
30 using content::BrowserThreadImpl; 30 using content::BrowserThreadImpl;
31 using content::NavigationController; 31 using content::NavigationController;
32 using content::NavigationEntry; 32 using content::NavigationEntry;
33 using content::NavigationEntryImpl; 33 using content::NavigationEntryImpl;
34 using content::SiteInstance;
34 using content::WebContents; 35 using content::WebContents;
35 using content::WebUIController; 36 using content::WebUIController;
36 37
37 namespace { 38 namespace {
38 39
39 const char kChromeUISchemeButNotWebUIURL[] = "chrome://not-webui"; 40 const char kChromeUISchemeButNotWebUIURL[] = "chrome://not-webui";
40 41
41 class RenderViewHostManagerTestWebUIFactory 42 class RenderViewHostManagerTestWebUIFactory
42 : public content::EmptyWebUIFactory { 43 : public content::EmptyWebUIFactory {
43 public: 44 public:
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 TestRenderViewHost* dest_rvh2 = static_cast<TestRenderViewHost*>( 192 TestRenderViewHost* dest_rvh2 = static_cast<TestRenderViewHost*>(
192 contents2.GetRenderManagerForTesting()->pending_render_view_host()); 193 contents2.GetRenderManagerForTesting()->pending_render_view_host());
193 ASSERT_TRUE(dest_rvh2); 194 ASSERT_TRUE(dest_rvh2);
194 ntp_rvh2->SendShouldCloseACK(true); 195 ntp_rvh2->SendShouldCloseACK(true);
195 dest_rvh2->SendNavigate(101, kDestUrl); 196 dest_rvh2->SendNavigate(101, kDestUrl);
196 ntp_rvh2->OnSwapOutACK(); 197 ntp_rvh2->OnSwapOutACK();
197 198
198 // The two RVH's should be different in every way. 199 // The two RVH's should be different in every way.
199 EXPECT_NE(active_rvh()->process(), dest_rvh2->process()); 200 EXPECT_NE(active_rvh()->process(), dest_rvh2->process());
200 EXPECT_NE(active_rvh()->site_instance(), dest_rvh2->site_instance()); 201 EXPECT_NE(active_rvh()->site_instance(), dest_rvh2->site_instance());
201 EXPECT_NE(active_rvh()->site_instance()->browsing_instance_, 202 EXPECT_NE(static_cast<SiteInstanceImpl*>(active_rvh()->site_instance())->
202 dest_rvh2->site_instance()->browsing_instance_); 203 browsing_instance_,
204 static_cast<SiteInstanceImpl*>(dest_rvh2->site_instance())->
205 browsing_instance_);
203 206
204 // Navigate both to the new tab page, and verify that they share a 207 // Navigate both to the new tab page, and verify that they share a
205 // SiteInstance. 208 // SiteInstance.
206 NavigateActiveAndCommit(kNtpUrl); 209 NavigateActiveAndCommit(kNtpUrl);
207 210
208 contents2.GetController().LoadURL( 211 contents2.GetController().LoadURL(
209 kNtpUrl, content::Referrer(), content::PAGE_TRANSITION_LINK, 212 kNtpUrl, content::Referrer(), content::PAGE_TRANSITION_LINK,
210 std::string()); 213 std::string());
211 dest_rvh2->SendShouldCloseACK(true); 214 dest_rvh2->SendShouldCloseACK(true);
212 static_cast<TestRenderViewHost*>(contents2.GetRenderManagerForTesting()-> 215 static_cast<TestRenderViewHost*>(contents2.GetRenderManagerForTesting()->
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 EXPECT_EQ(controller().GetLastCommittedEntryIndex(), 1); 268 EXPECT_EQ(controller().GetLastCommittedEntryIndex(), 1);
266 EXPECT_FALSE(controller().GetPendingEntry()); 269 EXPECT_FALSE(controller().GetPendingEntry());
267 // New message should be sent out to make sure to enter view-source mode. 270 // New message should be sent out to make sure to enter view-source mode.
268 EXPECT_TRUE(process()->sink().GetUniqueMessageMatching( 271 EXPECT_TRUE(process()->sink().GetUniqueMessageMatching(
269 ViewMsg_EnableViewSourceMode::ID)); 272 ViewMsg_EnableViewSourceMode::ID));
270 } 273 }
271 274
272 // Tests the Init function by checking the initial RenderViewHost. 275 // Tests the Init function by checking the initial RenderViewHost.
273 TEST_F(RenderViewHostManagerTest, Init) { 276 TEST_F(RenderViewHostManagerTest, Init) {
274 // Using TestBrowserContext. 277 // Using TestBrowserContext.
275 SiteInstance* instance = SiteInstance::CreateSiteInstance(browser_context()); 278 SiteInstanceImpl* instance =
276 EXPECT_FALSE(instance->has_site()); 279 static_cast<SiteInstanceImpl*>(SiteInstance::Create(browser_context()));
280 EXPECT_FALSE(instance->HasSite());
277 281
278 TestTabContents tab_contents(browser_context(), instance); 282 TestTabContents tab_contents(browser_context(), instance);
279 RenderViewHostManager manager(&tab_contents, &tab_contents); 283 RenderViewHostManager manager(&tab_contents, &tab_contents);
280 284
281 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 285 manager.Init(browser_context(), instance, MSG_ROUTING_NONE);
282 286
283 RenderViewHost* host = manager.current_host(); 287 RenderViewHost* host = manager.current_host();
284 ASSERT_TRUE(host); 288 ASSERT_TRUE(host);
285 EXPECT_TRUE(instance == host->site_instance()); 289 EXPECT_TRUE(instance == host->site_instance());
286 EXPECT_TRUE(&tab_contents == host->delegate()); 290 EXPECT_TRUE(&tab_contents == host->delegate());
287 EXPECT_TRUE(manager.GetRenderWidgetHostView()); 291 EXPECT_TRUE(manager.GetRenderWidgetHostView());
288 EXPECT_FALSE(manager.pending_render_view_host()); 292 EXPECT_FALSE(manager.pending_render_view_host());
289 } 293 }
290 294
291 // Tests the Navigate function. We navigate three sites consecutively and check 295 // Tests the Navigate function. We navigate three sites consecutively and check
292 // how the pending/committed RenderViewHost are modified. 296 // how the pending/committed RenderViewHost are modified.
293 TEST_F(RenderViewHostManagerTest, Navigate) { 297 TEST_F(RenderViewHostManagerTest, Navigate) {
294 TestNotificationTracker notifications; 298 TestNotificationTracker notifications;
295 299
296 SiteInstance* instance = SiteInstance::CreateSiteInstance(browser_context()); 300 SiteInstance* instance = SiteInstance::Create(browser_context());
297 301
298 TestTabContents tab_contents(browser_context(), instance); 302 TestTabContents tab_contents(browser_context(), instance);
299 notifications.ListenFor( 303 notifications.ListenFor(
300 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED, 304 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED,
301 content::Source<NavigationController>( 305 content::Source<NavigationController>(
302 &tab_contents.GetController())); 306 &tab_contents.GetController()));
303 307
304 // Create. 308 // Create.
305 RenderViewHostManager manager(&tab_contents, &tab_contents); 309 RenderViewHostManager manager(&tab_contents, &tab_contents);
306 310
(...skipping 11 matching lines...) Expand all
318 322
319 // The RenderViewHost created in Init will be reused. 323 // The RenderViewHost created in Init will be reused.
320 EXPECT_TRUE(host == manager.current_host()); 324 EXPECT_TRUE(host == manager.current_host());
321 EXPECT_FALSE(manager.pending_render_view_host()); 325 EXPECT_FALSE(manager.pending_render_view_host());
322 326
323 // Commit. 327 // Commit.
324 manager.DidNavigateMainFrame(host); 328 manager.DidNavigateMainFrame(host);
325 // Commit to SiteInstance should be delayed until RenderView commit. 329 // Commit to SiteInstance should be delayed until RenderView commit.
326 EXPECT_TRUE(host == manager.current_host()); 330 EXPECT_TRUE(host == manager.current_host());
327 ASSERT_TRUE(host); 331 ASSERT_TRUE(host);
328 EXPECT_FALSE(host->site_instance()->has_site()); 332 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->site_instance())->
329 host->site_instance()->SetSite(kUrl1); 333 HasSite());
334 static_cast<SiteInstanceImpl*>(host->site_instance())->SetSite(kUrl1);
330 335
331 // 2) Navigate to next site. ------------------------- 336 // 2) Navigate to next site. -------------------------
332 const GURL kUrl2("http://www.google.com/foo"); 337 const GURL kUrl2("http://www.google.com/foo");
333 NavigationEntryImpl entry2( 338 NavigationEntryImpl entry2(
334 NULL /* instance */, -1 /* page_id */, kUrl2, 339 NULL /* instance */, -1 /* page_id */, kUrl2,
335 content::Referrer(kUrl1, WebKit::WebReferrerPolicyDefault), 340 content::Referrer(kUrl1, WebKit::WebReferrerPolicyDefault),
336 string16() /* title */, content::PAGE_TRANSITION_LINK, 341 string16() /* title */, content::PAGE_TRANSITION_LINK,
337 true /* is_renderer_init */); 342 true /* is_renderer_init */);
338 host = manager.Navigate(entry2); 343 host = manager.Navigate(entry2);
339 344
340 // The RenderViewHost created in Init will be reused. 345 // The RenderViewHost created in Init will be reused.
341 EXPECT_TRUE(host == manager.current_host()); 346 EXPECT_TRUE(host == manager.current_host());
342 EXPECT_FALSE(manager.pending_render_view_host()); 347 EXPECT_FALSE(manager.pending_render_view_host());
343 348
344 // Commit. 349 // Commit.
345 manager.DidNavigateMainFrame(host); 350 manager.DidNavigateMainFrame(host);
346 EXPECT_TRUE(host == manager.current_host()); 351 EXPECT_TRUE(host == manager.current_host());
347 ASSERT_TRUE(host); 352 ASSERT_TRUE(host);
348 EXPECT_TRUE(host->site_instance()->has_site()); 353 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host->site_instance())->
354 HasSite());
349 355
350 // 3) Cross-site navigate to next site. -------------- 356 // 3) Cross-site navigate to next site. --------------
351 const GURL kUrl3("http://webkit.org/"); 357 const GURL kUrl3("http://webkit.org/");
352 NavigationEntryImpl entry3( 358 NavigationEntryImpl entry3(
353 NULL /* instance */, -1 /* page_id */, kUrl3, 359 NULL /* instance */, -1 /* page_id */, kUrl3,
354 content::Referrer(kUrl2, WebKit::WebReferrerPolicyDefault), 360 content::Referrer(kUrl2, WebKit::WebReferrerPolicyDefault),
355 string16() /* title */, content::PAGE_TRANSITION_LINK, 361 string16() /* title */, content::PAGE_TRANSITION_LINK,
356 false /* is_renderer_init */); 362 false /* is_renderer_init */);
357 host = manager.Navigate(entry3); 363 host = manager.Navigate(entry3);
358 364
359 // A new RenderViewHost should be created. 365 // A new RenderViewHost should be created.
360 EXPECT_TRUE(manager.pending_render_view_host()); 366 EXPECT_TRUE(manager.pending_render_view_host());
361 ASSERT_EQ(host, manager.pending_render_view_host()); 367 ASSERT_EQ(host, manager.pending_render_view_host());
362 368
363 notifications.Reset(); 369 notifications.Reset();
364 370
365 // Commit. 371 // Commit.
366 manager.DidNavigateMainFrame(manager.pending_render_view_host()); 372 manager.DidNavigateMainFrame(manager.pending_render_view_host());
367 EXPECT_TRUE(host == manager.current_host()); 373 EXPECT_TRUE(host == manager.current_host());
368 ASSERT_TRUE(host); 374 ASSERT_TRUE(host);
369 EXPECT_TRUE(host->site_instance()->has_site()); 375 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host->site_instance())->
376 HasSite());
370 // Check the pending RenderViewHost has been committed. 377 // Check the pending RenderViewHost has been committed.
371 EXPECT_FALSE(manager.pending_render_view_host()); 378 EXPECT_FALSE(manager.pending_render_view_host());
372 379
373 // We should observe a notification. 380 // We should observe a notification.
374 EXPECT_TRUE(notifications.Check1AndReset( 381 EXPECT_TRUE(notifications.Check1AndReset(
375 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); 382 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED));
376 } 383 }
377 384
378 // Tests the Navigate function. In this unit test we verify that the Navigate 385 // Tests the Navigate function. In this unit test we verify that the Navigate
379 // function can handle a new navigation event before the previous navigation 386 // function can handle a new navigation event before the previous navigation
380 // has been committed. This is also a regression test for 387 // has been committed. This is also a regression test for
381 // http://crbug.com/104600. 388 // http://crbug.com/104600.
382 TEST_F(RenderViewHostManagerTest, NavigateWithEarlyReNavigation) { 389 TEST_F(RenderViewHostManagerTest, NavigateWithEarlyReNavigation) {
383 TestNotificationTracker notifications; 390 TestNotificationTracker notifications;
384 391
385 SiteInstance* instance = SiteInstance::CreateSiteInstance(browser_context()); 392 SiteInstance* instance = SiteInstance::Create(browser_context());
386 393
387 TestTabContents tab_contents(browser_context(), instance); 394 TestTabContents tab_contents(browser_context(), instance);
388 notifications.ListenFor( 395 notifications.ListenFor(
389 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED, 396 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED,
390 content::Source<NavigationController>( 397 content::Source<NavigationController>(
391 &tab_contents.GetController())); 398 &tab_contents.GetController()));
392 399
393 // Create. 400 // Create.
394 RenderViewHostManager manager(&tab_contents, &tab_contents); 401 RenderViewHostManager manager(&tab_contents, &tab_contents);
395 402
(...skipping 15 matching lines...) Expand all
411 EXPECT_TRUE(notifications.Check1AndReset( 418 EXPECT_TRUE(notifications.Check1AndReset(
412 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); 419 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED));
413 notifications.Reset(); 420 notifications.Reset();
414 421
415 // Commit. 422 // Commit.
416 manager.DidNavigateMainFrame(host); 423 manager.DidNavigateMainFrame(host);
417 424
418 // Commit to SiteInstance should be delayed until RenderView commit. 425 // Commit to SiteInstance should be delayed until RenderView commit.
419 EXPECT_TRUE(host == manager.current_host()); 426 EXPECT_TRUE(host == manager.current_host());
420 ASSERT_TRUE(host); 427 ASSERT_TRUE(host);
421 EXPECT_FALSE(host->site_instance()->has_site()); 428 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->site_instance())->
422 host->site_instance()->SetSite(kUrl1); 429 HasSite());
430 static_cast<SiteInstanceImpl*>(host->site_instance())->SetSite(kUrl1);
423 431
424 // 2) Cross-site navigate to next site. ------------------------- 432 // 2) Cross-site navigate to next site. -------------------------
425 const GURL kUrl2("http://www.example.com"); 433 const GURL kUrl2("http://www.example.com");
426 NavigationEntryImpl entry2( 434 NavigationEntryImpl entry2(
427 NULL /* instance */, -1 /* page_id */, kUrl2, content::Referrer(), 435 NULL /* instance */, -1 /* page_id */, kUrl2, content::Referrer(),
428 string16() /* title */, content::PAGE_TRANSITION_TYPED, 436 string16() /* title */, content::PAGE_TRANSITION_TYPED,
429 false /* is_renderer_init */); 437 false /* is_renderer_init */);
430 RenderViewHost* host2 = manager.Navigate(entry2); 438 RenderViewHost* host2 = manager.Navigate(entry2);
431 439
432 // A new RenderViewHost should be created. 440 // A new RenderViewHost should be created.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 // RenderViewHostManager::Navigate followed by RenderViewHost::Navigate. 503 // RenderViewHostManager::Navigate followed by RenderViewHost::Navigate.
496 // Here we need to call the latter ourselves. 504 // Here we need to call the latter ourselves.
497 host3->NavigateToURL(kUrl3); 505 host3->NavigateToURL(kUrl3);
498 EXPECT_TRUE(test_process_host3->sink().GetUniqueMessageMatching( 506 EXPECT_TRUE(test_process_host3->sink().GetUniqueMessageMatching(
499 ViewMsg_Navigate::ID)); 507 ViewMsg_Navigate::ID));
500 508
501 // Commit. 509 // Commit.
502 manager.DidNavigateMainFrame(host3); 510 manager.DidNavigateMainFrame(host3);
503 EXPECT_TRUE(host3 == manager.current_host()); 511 EXPECT_TRUE(host3 == manager.current_host());
504 ASSERT_TRUE(host3); 512 ASSERT_TRUE(host3);
505 EXPECT_TRUE(host3->site_instance()->has_site()); 513 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host3->site_instance())->
514 HasSite());
506 // Check the pending RenderViewHost has been committed. 515 // Check the pending RenderViewHost has been committed.
507 EXPECT_FALSE(manager.pending_render_view_host()); 516 EXPECT_FALSE(manager.pending_render_view_host());
508 517
509 // We should observe a notification. 518 // We should observe a notification.
510 EXPECT_TRUE(notifications.Check1AndReset( 519 EXPECT_TRUE(notifications.Check1AndReset(
511 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); 520 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED));
512 } 521 }
513 522
514 // Tests WebUI creation. 523 // Tests WebUI creation.
515 TEST_F(RenderViewHostManagerTest, WebUI) { 524 TEST_F(RenderViewHostManagerTest, WebUI) {
516 set_should_create_webui(true); 525 set_should_create_webui(true);
517 BrowserThreadImpl ui_thread(BrowserThread::UI, MessageLoop::current()); 526 BrowserThreadImpl ui_thread(BrowserThread::UI, MessageLoop::current());
518 SiteInstance* instance = SiteInstance::CreateSiteInstance(browser_context()); 527 SiteInstance* instance = SiteInstance::Create(browser_context());
519 528
520 TestTabContents tab_contents(browser_context(), instance); 529 TestTabContents tab_contents(browser_context(), instance);
521 RenderViewHostManager manager(&tab_contents, &tab_contents); 530 RenderViewHostManager manager(&tab_contents, &tab_contents);
522 531
523 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 532 manager.Init(browser_context(), instance, MSG_ROUTING_NONE);
524 533
525 const GURL kUrl(chrome::kTestNewTabURL); 534 const GURL kUrl(chrome::kTestNewTabURL);
526 NavigationEntryImpl entry(NULL /* instance */, -1 /* page_id */, kUrl, 535 NavigationEntryImpl entry(NULL /* instance */, -1 /* page_id */, kUrl,
527 content::Referrer(), string16() /* title */, 536 content::Referrer(), string16() /* title */,
528 content::PAGE_TRANSITION_TYPED, 537 content::PAGE_TRANSITION_TYPED,
529 false /* is_renderer_init */); 538 false /* is_renderer_init */);
530 RenderViewHost* host = manager.Navigate(entry); 539 RenderViewHost* host = manager.Navigate(entry);
531 540
532 EXPECT_TRUE(host); 541 EXPECT_TRUE(host);
533 EXPECT_TRUE(host == manager.current_host()); 542 EXPECT_TRUE(host == manager.current_host());
534 EXPECT_FALSE(manager.pending_render_view_host()); 543 EXPECT_FALSE(manager.pending_render_view_host());
535 544
536 // It's important that the site instance get set on the Web UI page as soon 545 // It's important that the site instance get set on the Web UI page as soon
537 // as the navigation starts, rather than lazily after it commits, so we don't 546 // as the navigation starts, rather than lazily after it commits, so we don't
538 // try to re-use the SiteInstance/process for non DOM-UI things that may 547 // try to re-use the SiteInstance/process for non DOM-UI things that may
539 // get loaded in between. 548 // get loaded in between.
540 EXPECT_TRUE(host->site_instance()->has_site()); 549 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host->site_instance())->
541 EXPECT_EQ(kUrl, host->site_instance()->site()); 550 HasSite());
551 EXPECT_EQ(kUrl, host->site_instance()->GetSite());
542 552
543 // The Web UI is committed immediately because the RenderViewHost has not been 553 // The Web UI is committed immediately because the RenderViewHost has not been
544 // used yet. UpdateRendererStateForNavigate() took the short cut path. 554 // used yet. UpdateRendererStateForNavigate() took the short cut path.
545 EXPECT_FALSE(manager.pending_web_ui()); 555 EXPECT_FALSE(manager.pending_web_ui());
546 EXPECT_TRUE(manager.web_ui()); 556 EXPECT_TRUE(manager.web_ui());
547 557
548 // Commit. 558 // Commit.
549 manager.DidNavigateMainFrame(host); 559 manager.DidNavigateMainFrame(host);
550 } 560 }
551 561
552 // Tests that chrome: URLs that are not Web UI pages do not get grouped into 562 // Tests that chrome: URLs that are not Web UI pages do not get grouped into
553 // Web UI renderers, even if --process-per-tab is enabled. In that mode, we 563 // Web UI renderers, even if --process-per-tab is enabled. In that mode, we
554 // still swap processes if ShouldSwapProcessesForNavigation is true. 564 // still swap processes if ShouldSwapProcessesForNavigation is true.
555 // Regression test for bug 46290. 565 // Regression test for bug 46290.
556 TEST_F(RenderViewHostManagerTest, NonWebUIChromeURLs) { 566 TEST_F(RenderViewHostManagerTest, NonWebUIChromeURLs) {
557 BrowserThreadImpl thread(BrowserThread::UI, &message_loop_); 567 BrowserThreadImpl thread(BrowserThread::UI, &message_loop_);
558 SiteInstance* instance = SiteInstance::CreateSiteInstance(browser_context()); 568 SiteInstance* instance = SiteInstance::Create(browser_context());
559 TestTabContents tab_contents(browser_context(), instance); 569 TestTabContents tab_contents(browser_context(), instance);
560 RenderViewHostManager manager(&tab_contents, &tab_contents); 570 RenderViewHostManager manager(&tab_contents, &tab_contents);
561 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 571 manager.Init(browser_context(), instance, MSG_ROUTING_NONE);
562 572
563 // NTP is a Web UI page. 573 // NTP is a Web UI page.
564 const GURL kNtpUrl(chrome::kTestNewTabURL); 574 const GURL kNtpUrl(chrome::kTestNewTabURL);
565 NavigationEntryImpl ntp_entry(NULL /* instance */, -1 /* page_id */, kNtpUrl, 575 NavigationEntryImpl ntp_entry(NULL /* instance */, -1 /* page_id */, kNtpUrl,
566 content::Referrer(), string16() /* title */, 576 content::Referrer(), string16() /* title */,
567 content::PAGE_TRANSITION_TYPED, 577 content::PAGE_TRANSITION_TYPED,
568 false /* is_renderer_init */); 578 false /* is_renderer_init */);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 // current one. 625 // current one.
616 EXPECT_TRUE(contents()->GetRenderManagerForTesting()-> 626 EXPECT_TRUE(contents()->GetRenderManagerForTesting()->
617 pending_render_view_host() == NULL); 627 pending_render_view_host() == NULL);
618 EXPECT_EQ(evil_rvh, contents()->GetRenderManagerForTesting()->current_host()); 628 EXPECT_EQ(evil_rvh, contents()->GetRenderManagerForTesting()->current_host());
619 629
620 // Also we should not have a pending navigation entry. 630 // Also we should not have a pending navigation entry.
621 NavigationEntry* entry = contents()->GetController().GetActiveEntry(); 631 NavigationEntry* entry = contents()->GetController().GetActiveEntry();
622 ASSERT_TRUE(entry != NULL); 632 ASSERT_TRUE(entry != NULL);
623 EXPECT_EQ(kUrl2, entry->GetURL()); 633 EXPECT_EQ(kUrl2, entry->GetURL());
624 } 634 }
OLDNEW
« no previous file with comments | « content/browser/tab_contents/render_view_host_manager.cc ('k') | content/browser/tab_contents/tab_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698