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 13namespace content { 14class WebContents; 15} 16 17namespace chromecast { 18namespace 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. 25class 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