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