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

Side by Side Diff: chrome/browser/ui/browser_browsertest.cc

Issue 8515027: Define the public version of the browser side RenderProcessHost interface. This interface is not ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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 | « chrome/browser/ui/browser.cc ('k') | chrome/browser/ui/browser_list.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <string> 5 #include <string>
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #if defined(OS_MACOSX) 9 #if defined(OS_MACOSX)
10 #include "base/mac/mac_util.h" 10 #include "base/mac/mac_util.h"
(...skipping 21 matching lines...) Expand all
32 #include "chrome/browser/ui/browser_navigator.h" 32 #include "chrome/browser/ui/browser_navigator.h"
33 #include "chrome/browser/ui/browser_window.h" 33 #include "chrome/browser/ui/browser_window.h"
34 #include "chrome/browser/ui/fullscreen_exit_bubble_type.h" 34 #include "chrome/browser/ui/fullscreen_exit_bubble_type.h"
35 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 35 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
36 #include "chrome/common/chrome_notification_types.h" 36 #include "chrome/common/chrome_notification_types.h"
37 #include "chrome/common/chrome_switches.h" 37 #include "chrome/common/chrome_switches.h"
38 #include "chrome/common/extensions/extension.h" 38 #include "chrome/common/extensions/extension.h"
39 #include "chrome/common/url_constants.h" 39 #include "chrome/common/url_constants.h"
40 #include "chrome/test/base/in_process_browser_test.h" 40 #include "chrome/test/base/in_process_browser_test.h"
41 #include "chrome/test/base/ui_test_utils.h" 41 #include "chrome/test/base/ui_test_utils.h"
42 #include "content/browser/renderer_host/render_process_host.h" 42 #include "content/browser/renderer_host/render_process_host_impl.h"
43 #include "content/browser/renderer_host/render_view_host.h" 43 #include "content/browser/renderer_host/render_view_host.h"
44 #include "content/browser/tab_contents/tab_contents.h" 44 #include "content/browser/tab_contents/tab_contents.h"
45 #include "content/public/browser/notification_service.h" 45 #include "content/public/browser/notification_service.h"
46 #include "content/public/browser/notification_source.h" 46 #include "content/public/browser/notification_source.h"
47 #include "content/public/common/page_transition_types.h" 47 #include "content/public/common/page_transition_types.h"
48 #include "content/public/common/url_constants.h" 48 #include "content/public/common/url_constants.h"
49 #include "grit/chromium_strings.h" 49 #include "grit/chromium_strings.h"
50 #include "grit/generated_resources.h" 50 #include "grit/generated_resources.h"
51 #include "net/base/mock_host_resolver.h" 51 #include "net/base/mock_host_resolver.h"
52 #include "net/test/test_server.h" 52 #include "net/test/test_server.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 91
92 return UTF16ToWideHack( 92 return UTF16ToWideHack(
93 l10n_util::GetStringFUTF16(IDS_BROWSER_WINDOW_TITLE_FORMAT, 93 l10n_util::GetStringFUTF16(IDS_BROWSER_WINDOW_TITLE_FORMAT,
94 WideToUTF16Hack(page_title))); 94 WideToUTF16Hack(page_title)));
95 #endif 95 #endif
96 } 96 }
97 97
98 // Returns the number of active RenderProcessHosts. 98 // Returns the number of active RenderProcessHosts.
99 int CountRenderProcessHosts() { 99 int CountRenderProcessHosts() {
100 int result = 0; 100 int result = 0;
101 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); 101 for (content::RenderProcessHost::iterator i(
102 content::RenderProcessHost::AllHostsIterator());
102 !i.IsAtEnd(); i.Advance()) 103 !i.IsAtEnd(); i.Advance())
103 ++result; 104 ++result;
104 return result; 105 return result;
105 } 106 }
106 107
107 class MockTabStripModelObserver : public TabStripModelObserver { 108 class MockTabStripModelObserver : public TabStripModelObserver {
108 public: 109 public:
109 MockTabStripModelObserver() : closing_count_(0) {} 110 MockTabStripModelObserver() : closing_count_(0) {}
110 111
111 virtual void TabClosingAt(TabStripModel* tab_strip_model, 112 virtual void TabClosingAt(TabStripModel* tab_strip_model,
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 ASSERT_TRUE(test_server()->Start()); 365 ASSERT_TRUE(test_server()->Start());
365 net::TestServer https_test_server(net::TestServer::TYPE_HTTPS, 366 net::TestServer https_test_server(net::TestServer::TYPE_HTTPS,
366 FilePath(kDocRoot)); 367 FilePath(kDocRoot));
367 ASSERT_TRUE(https_test_server.Start()); 368 ASSERT_TRUE(https_test_server.Start());
368 GURL http_url(test_server()->GetURL("files/title1.html")); 369 GURL http_url(test_server()->GetURL("files/title1.html"));
369 GURL https_url(https_test_server.GetURL("")); 370 GURL https_url(https_test_server.GetURL(""));
370 371
371 // Start with an http URL. 372 // Start with an http URL.
372 ui_test_utils::NavigateToURL(browser(), http_url); 373 ui_test_utils::NavigateToURL(browser(), http_url);
373 TabContents* oldtab = browser()->GetSelectedTabContents(); 374 TabContents* oldtab = browser()->GetSelectedTabContents();
374 RenderProcessHost* process = oldtab->render_view_host()->process(); 375 content::RenderProcessHost* process = oldtab->render_view_host()->process();
375 376
376 // Now open a tab to a blank page, set its opener to null, and redirect it 377 // Now open a tab to a blank page, set its opener to null, and redirect it
377 // cross-site. 378 // cross-site.
378 std::string redirect_popup = "w=window.open();"; 379 std::string redirect_popup = "w=window.open();";
379 redirect_popup += "w.opener=null;"; 380 redirect_popup += "w.opener=null;";
380 redirect_popup += "w.document.location=\""; 381 redirect_popup += "w.document.location=\"";
381 redirect_popup += https_url.spec(); 382 redirect_popup += https_url.spec();
382 redirect_popup += "\";"; 383 redirect_popup += "\";";
383 384
384 ui_test_utils::WindowedNotificationObserver popup_observer( 385 ui_test_utils::WindowedNotificationObserver popup_observer(
(...skipping 10 matching lines...) Expand all
395 ASSERT_EQ(2, browser()->tab_count()); 396 ASSERT_EQ(2, browser()->tab_count());
396 TabContents* newtab = browser()->GetSelectedTabContents(); 397 TabContents* newtab = browser()->GetSelectedTabContents();
397 EXPECT_TRUE(newtab); 398 EXPECT_TRUE(newtab);
398 EXPECT_NE(oldtab, newtab); 399 EXPECT_NE(oldtab, newtab);
399 nav_observer.Wait(); 400 nav_observer.Wait();
400 ASSERT_TRUE(newtab->controller().GetLastCommittedEntry()); 401 ASSERT_TRUE(newtab->controller().GetLastCommittedEntry());
401 EXPECT_EQ(https_url.spec(), 402 EXPECT_EQ(https_url.spec(),
402 newtab->controller().GetLastCommittedEntry()->url().spec()); 403 newtab->controller().GetLastCommittedEntry()->url().spec());
403 404
404 // Popup window should not be in the opener's process. 405 // Popup window should not be in the opener's process.
405 RenderProcessHost* popup_process = newtab->render_view_host()->process(); 406 content::RenderProcessHost* popup_process =
407 newtab->render_view_host()->process();
406 EXPECT_NE(process, popup_process); 408 EXPECT_NE(process, popup_process);
407 409
408 // Now open a tab to a blank page, set its opener to null, and use a 410 // Now open a tab to a blank page, set its opener to null, and use a
409 // meta-refresh to navigate it instead. 411 // meta-refresh to navigate it instead.
410 std::string refresh_popup = "w=window.open();"; 412 std::string refresh_popup = "w=window.open();";
411 refresh_popup += "w.opener=null;"; 413 refresh_popup += "w.opener=null;";
412 refresh_popup += "w.document.write("; 414 refresh_popup += "w.document.write(";
413 refresh_popup += "'<META HTTP-EQUIV=\"refresh\" content=\"0; url="; 415 refresh_popup += "'<META HTTP-EQUIV=\"refresh\" content=\"0; url=";
414 refresh_popup += https_url.spec(); 416 refresh_popup += https_url.spec();
415 refresh_popup += "\">');w.document.close();"; 417 refresh_popup += "\">');w.document.close();";
(...skipping 12 matching lines...) Expand all
428 ASSERT_EQ(3, browser()->tab_count()); 430 ASSERT_EQ(3, browser()->tab_count());
429 TabContents* newtab2 = browser()->GetSelectedTabContents(); 431 TabContents* newtab2 = browser()->GetSelectedTabContents();
430 EXPECT_TRUE(newtab2); 432 EXPECT_TRUE(newtab2);
431 EXPECT_NE(oldtab, newtab2); 433 EXPECT_NE(oldtab, newtab2);
432 nav_observer2.Wait(); 434 nav_observer2.Wait();
433 ASSERT_TRUE(newtab2->controller().GetLastCommittedEntry()); 435 ASSERT_TRUE(newtab2->controller().GetLastCommittedEntry());
434 EXPECT_EQ(https_url.spec(), 436 EXPECT_EQ(https_url.spec(),
435 newtab2->controller().GetLastCommittedEntry()->url().spec()); 437 newtab2->controller().GetLastCommittedEntry()->url().spec());
436 438
437 // This popup window should also not be in the opener's process. 439 // This popup window should also not be in the opener's process.
438 RenderProcessHost* popup_process2 = newtab2->render_view_host()->process(); 440 content::RenderProcessHost* popup_process2 =
441 newtab2->render_view_host()->process();
439 EXPECT_NE(process, popup_process2); 442 EXPECT_NE(process, popup_process2);
440 } 443 }
441 444
442 // Tests that other popup navigations that do not follow the steps at 445 // Tests that other popup navigations that do not follow the steps at
443 // http://www.google.com/chrome/intl/en/webmasters-faq.html#newtab will not 446 // http://www.google.com/chrome/intl/en/webmasters-faq.html#newtab will not
444 // fork a new renderer process. 447 // fork a new renderer process.
445 IN_PROC_BROWSER_TEST_F(BrowserTest, OtherRedirectsDontForkProcess) { 448 IN_PROC_BROWSER_TEST_F(BrowserTest, OtherRedirectsDontForkProcess) {
446 CommandLine::ForCurrentProcess()->AppendSwitch( 449 CommandLine::ForCurrentProcess()->AppendSwitch(
447 switches::kDisablePopupBlocking); 450 switches::kDisablePopupBlocking);
448 451
449 // Create http and https servers for a cross-site transition. 452 // Create http and https servers for a cross-site transition.
450 ASSERT_TRUE(test_server()->Start()); 453 ASSERT_TRUE(test_server()->Start());
451 net::TestServer https_test_server(net::TestServer::TYPE_HTTPS, 454 net::TestServer https_test_server(net::TestServer::TYPE_HTTPS,
452 FilePath(kDocRoot)); 455 FilePath(kDocRoot));
453 ASSERT_TRUE(https_test_server.Start()); 456 ASSERT_TRUE(https_test_server.Start());
454 GURL http_url(test_server()->GetURL("files/title1.html")); 457 GURL http_url(test_server()->GetURL("files/title1.html"));
455 GURL https_url(https_test_server.GetURL("")); 458 GURL https_url(https_test_server.GetURL(""));
456 459
457 // Start with an http URL. 460 // Start with an http URL.
458 ui_test_utils::NavigateToURL(browser(), http_url); 461 ui_test_utils::NavigateToURL(browser(), http_url);
459 TabContents* oldtab = browser()->GetSelectedTabContents(); 462 TabContents* oldtab = browser()->GetSelectedTabContents();
460 RenderProcessHost* process = oldtab->render_view_host()->process(); 463 content::RenderProcessHost* process = oldtab->render_view_host()->process();
461 464
462 // Now open a tab to a blank page, set its opener to null, and redirect it 465 // Now open a tab to a blank page, set its opener to null, and redirect it
463 // cross-site. 466 // cross-site.
464 std::string dont_fork_popup = "w=window.open();"; 467 std::string dont_fork_popup = "w=window.open();";
465 dont_fork_popup += "w.document.location=\""; 468 dont_fork_popup += "w.document.location=\"";
466 dont_fork_popup += https_url.spec(); 469 dont_fork_popup += https_url.spec();
467 dont_fork_popup += "\";"; 470 dont_fork_popup += "\";";
468 471
469 ui_test_utils::WindowedNotificationObserver popup_observer( 472 ui_test_utils::WindowedNotificationObserver popup_observer(
470 content::NOTIFICATION_TAB_ADDED, 473 content::NOTIFICATION_TAB_ADDED,
471 content::NotificationService::AllSources()); 474 content::NotificationService::AllSources());
472 ui_test_utils::WindowedNotificationObserver nav_observer( 475 ui_test_utils::WindowedNotificationObserver nav_observer(
473 content::NOTIFICATION_NAV_ENTRY_COMMITTED, 476 content::NOTIFICATION_NAV_ENTRY_COMMITTED,
474 content::NotificationService::AllSources()); 477 content::NotificationService::AllSources());
475 oldtab->render_view_host()-> 478 oldtab->render_view_host()->
476 ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16(dont_fork_popup)); 479 ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16(dont_fork_popup));
477 480
478 // Wait for popup window to appear and finish navigating. 481 // Wait for popup window to appear and finish navigating.
479 popup_observer.Wait(); 482 popup_observer.Wait();
480 ASSERT_EQ(2, browser()->tab_count()); 483 ASSERT_EQ(2, browser()->tab_count());
481 TabContents* newtab = browser()->GetSelectedTabContents(); 484 TabContents* newtab = browser()->GetSelectedTabContents();
482 EXPECT_TRUE(newtab); 485 EXPECT_TRUE(newtab);
483 EXPECT_NE(oldtab, newtab); 486 EXPECT_NE(oldtab, newtab);
484 nav_observer.Wait(); 487 nav_observer.Wait();
485 ASSERT_TRUE(newtab->controller().GetLastCommittedEntry()); 488 ASSERT_TRUE(newtab->controller().GetLastCommittedEntry());
486 EXPECT_EQ(https_url.spec(), 489 EXPECT_EQ(https_url.spec(),
487 newtab->controller().GetLastCommittedEntry()->url().spec()); 490 newtab->controller().GetLastCommittedEntry()->url().spec());
488 491
489 // Popup window should still be in the opener's process. 492 // Popup window should still be in the opener's process.
490 RenderProcessHost* popup_process = newtab->render_view_host()->process(); 493 content::RenderProcessHost* popup_process =
494 newtab->render_view_host()->process();
491 EXPECT_EQ(process, popup_process); 495 EXPECT_EQ(process, popup_process);
492 496
493 // Same thing if the current tab tries to navigate itself. 497 // Same thing if the current tab tries to navigate itself.
494 std::string navigate_str = "document.location=\""; 498 std::string navigate_str = "document.location=\"";
495 navigate_str += https_url.spec(); 499 navigate_str += https_url.spec();
496 navigate_str += "\";"; 500 navigate_str += "\";";
497 501
498 ui_test_utils::WindowedNotificationObserver nav_observer2( 502 ui_test_utils::WindowedNotificationObserver nav_observer2(
499 content::NOTIFICATION_NAV_ENTRY_COMMITTED, 503 content::NOTIFICATION_NAV_ENTRY_COMMITTED,
500 content::NotificationService::AllSources()); 504 content::NotificationService::AllSources());
501 oldtab->render_view_host()-> 505 oldtab->render_view_host()->
502 ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16(navigate_str)); 506 ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16(navigate_str));
503 nav_observer2.Wait(); 507 nav_observer2.Wait();
504 ASSERT_TRUE(oldtab->controller().GetLastCommittedEntry()); 508 ASSERT_TRUE(oldtab->controller().GetLastCommittedEntry());
505 EXPECT_EQ(https_url.spec(), 509 EXPECT_EQ(https_url.spec(),
506 oldtab->controller().GetLastCommittedEntry()->url().spec()); 510 oldtab->controller().GetLastCommittedEntry()->url().spec());
507 511
508 // Original window should still be in the original process. 512 // Original window should still be in the original process.
509 RenderProcessHost* new_process = newtab->render_view_host()->process(); 513 content::RenderProcessHost* new_process =
514 newtab->render_view_host()->process();
510 EXPECT_EQ(process, new_process); 515 EXPECT_EQ(process, new_process);
511 } 516 }
512 517
513 // Test that get_process_idle_time() returns reasonable values when compared 518 // Test that get_process_idle_time() returns reasonable values when compared
514 // with time deltas measured locally. 519 // with time deltas measured locally.
515 IN_PROC_BROWSER_TEST_F(BrowserTest, RenderIdleTime) { 520 IN_PROC_BROWSER_TEST_F(BrowserTest, RenderIdleTime) {
516 base::TimeTicks start = base::TimeTicks::Now(); 521 base::TimeTicks start = base::TimeTicks::Now();
517 ui_test_utils::NavigateToURL(browser(), 522 ui_test_utils::NavigateToURL(browser(),
518 ui_test_utils::GetTestUrl(FilePath(FilePath::kCurrentDirectory), 523 ui_test_utils::GetTestUrl(FilePath(FilePath::kCurrentDirectory),
519 FilePath(kTitle1File))); 524 FilePath(kTitle1File)));
520 RenderProcessHost::iterator it(RenderProcessHost::AllHostsIterator()); 525 content::RenderProcessHost::iterator it(
526 content::RenderProcessHost::AllHostsIterator());
521 for (; !it.IsAtEnd(); it.Advance()) { 527 for (; !it.IsAtEnd(); it.Advance()) {
522 base::TimeDelta renderer_td = 528 base::TimeDelta renderer_td =
523 it.GetCurrentValue()->get_child_process_idle_time(); 529 it.GetCurrentValue()->GetChildProcessIdleTime();
524 base::TimeDelta browser_td = base::TimeTicks::Now() - start; 530 base::TimeDelta browser_td = base::TimeTicks::Now() - start;
525 EXPECT_TRUE(browser_td >= renderer_td); 531 EXPECT_TRUE(browser_td >= renderer_td);
526 } 532 }
527 } 533 }
528 534
529 // Test IDC_CREATE_SHORTCUTS command is enabled for url scheme file, ftp, http 535 // Test IDC_CREATE_SHORTCUTS command is enabled for url scheme file, ftp, http
530 // and https and disabled for chrome://, about:// etc. 536 // and https and disabled for chrome://, about:// etc.
531 // TODO(pinkerton): Disable app-mode in the model until we implement it 537 // TODO(pinkerton): Disable app-mode in the model until we implement it
532 // on the Mac. http://crbug.com/13148 538 // on the Mac. http://crbug.com/13148
533 #if !defined(OS_MACOSX) 539 #if !defined(OS_MACOSX)
(...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after
1349 1355
1350 // The normal browser should now have four. 1356 // The normal browser should now have four.
1351 EXPECT_EQ(4, browser()->tab_count()); 1357 EXPECT_EQ(4, browser()->tab_count());
1352 1358
1353 // Close the additional browsers. 1359 // Close the additional browsers.
1354 popup_browser->CloseAllTabs(); 1360 popup_browser->CloseAllTabs();
1355 app_browser->CloseAllTabs(); 1361 app_browser->CloseAllTabs();
1356 app_popup_browser->CloseAllTabs(); 1362 app_popup_browser->CloseAllTabs();
1357 } 1363 }
1358 #endif 1364 #endif
OLDNEW
« no previous file with comments | « chrome/browser/ui/browser.cc ('k') | chrome/browser/ui/browser_list.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698