1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chromecast/shell/browser/test/chromecast_browser_test.h" 6 7 #include "base/command_line.h" 8 #include "base/logging.h" 9 #include "base/message_loop/message_loop.h" 10 #include "chromecast/shell/browser/cast_browser_context.h" 11 #include "chromecast/shell/browser/cast_browser_process.h" 12 #include "content/public/browser/browser_thread.h" 13 #include "content/public/browser/render_process_host.h" 14 #include "content/public/browser/web_contents.h" 15 #include "content/public/test/browser_test_utils.h" 16 #include "content/public/test/test_navigation_observer.h" 17 18 namespace chromecast { 19 namespace shell { 20 ChromecastBrowserTest()21ChromecastBrowserTest::ChromecastBrowserTest() 22 : setup_called_(false) { 23 } 24 ~ChromecastBrowserTest()25ChromecastBrowserTest::~ChromecastBrowserTest() { 26 CHECK(setup_called_) << "Overridden SetUp() did not call parent " 27 << "implementation, so test not run."; 28 } 29 SetUp()30void ChromecastBrowserTest::SetUp() { 31 SetUpCommandLine(CommandLine::ForCurrentProcess()); 32 setup_called_ = true; 33 BrowserTestBase::SetUp(); 34 } 35 RunTestOnMainThreadLoop()36void ChromecastBrowserTest::RunTestOnMainThreadLoop() { 37 // Pump startup related events. 38 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 39 base::RunLoop().RunUntilIdle(); 40 41 SetUpOnMainThread(); 42 43 RunTestOnMainThread(); 44 45 TearDownOnMainThread(); 46 47 for (content::RenderProcessHost::iterator i( 48 content::RenderProcessHost::AllHostsIterator()); 49 !i.IsAtEnd(); i.Advance()) { 50 i.GetCurrentValue()->FastShutdownIfPossible(); 51 } 52 53 web_contents_.reset(); 54 } 55 NavigateToURL(content::WebContents * window,const GURL & url)56void ChromecastBrowserTest::NavigateToURL(content::WebContents* window, 57 const GURL& url) { 58 content::WaitForLoadStop(window); 59 content::TestNavigationObserver same_tab_observer(window, 1); 60 content::NavigationController::LoadURLParams params(url); 61 params.transition_type = ui::PageTransitionFromInt( 62 ui::PAGE_TRANSITION_TYPED | 63 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); 64 window->GetController().LoadURLWithParams(params); 65 same_tab_observer.Wait(); 66 } 67 CreateBrowser()68content::WebContents* ChromecastBrowserTest::CreateBrowser() { 69 content::WebContents::CreateParams create_params( 70 CastBrowserProcess::GetInstance()->browser_context(), 71 NULL); 72 create_params.routing_id = MSG_ROUTING_NONE; 73 create_params.initial_size = gfx::Size(1280, 720); 74 web_contents_.reset(content::WebContents::Create(create_params)); 75 return web_contents_.get(); 76 } 77 78 } // namespace shell 79 } // namespace chromecast 80