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 #ifndef CHROMECAST_SHELL_BROWSER_TEST_CHROMECAST_BROWSER_TEST_H_ 6 #define CHROMECAST_SHELL_BROWSER_TEST_CHROMECAST_BROWSER_TEST_H_ 7 8 #include "base/macros.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "content/public/test/browser_test.h" 11 #include "content/public/test/browser_test_base.h" 12 13 namespace content { 14 class WebContents; 15 } 16 17 namespace chromecast { 18 namespace shell { 19 20 // This test allows for running an entire browser-process lifecycle per unit 21 // test, using Chromecast's cast_shell. This starts up the shell, runs a test 22 // case, then shuts down the entire shell. 23 // Note that this process takes 7-10 seconds per test case on Chromecast, so 24 // fewer test cases with more assertions are preferable. 25 class ChromecastBrowserTest : public content::BrowserTestBase { 26 protected: 27 ChromecastBrowserTest(); 28 virtual ~ChromecastBrowserTest(); 29 30 // testing::Test implementation: 31 virtual void SetUp() OVERRIDE; 32 33 // BrowserTestBase implementation: 34 virtual void RunTestOnMainThreadLoop() OVERRIDE; 35 36 protected: 37 void NavigateToURL(content::WebContents* window, const GURL& gurl); 38 39 // Creates a new window and loads about:blank. 40 content::WebContents* CreateBrowser(); 41 42 // Returns the window for the test. 43 content::WebContents* web_contents() const { return web_contents_.get(); } 44 45 private: 46 scoped_ptr<content::WebContents> web_contents_; 47 48 bool setup_called_; 49 50 DISALLOW_COPY_AND_ASSIGN(ChromecastBrowserTest); 51 }; 52 53 } // namespace shell 54 } // namespace chromecast 55 56 #endif // CHROMECAST_SHELL_BROWSER_TEST_CHROMECAST_BROWSER_TEST_H_ 57