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

Unified Diff: chrome/test/in_process_browser_test.h

Issue 7532034: Move in_process_browser_test and ui_test_utils to chrome/test/base (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 5 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/base/ui_test_utils_win.cc ('k') | chrome/test/in_process_browser_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/in_process_browser_test.h
===================================================================
--- chrome/test/in_process_browser_test.h (revision 94694)
+++ chrome/test/in_process_browser_test.h (working copy)
@@ -1,295 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_TEST_IN_PROCESS_BROWSER_TEST_H_
-#define CHROME_TEST_IN_PROCESS_BROWSER_TEST_H_
-#pragma once
-
-#include "base/compiler_specific.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/scoped_temp_dir.h"
-#include "content/common/page_transition_types.h"
-#include "net/test/test_server.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/cros/cros_library.h"
-#endif // defined(OS_CHROMEOS)
-
-class Browser;
-class CommandLine;
-class Profile;
-
-namespace content {
-class ContentRendererClient;
-}
-
-namespace net {
-class RuleBasedHostResolverProc;
-}
-
-// Base class for tests wanting to bring up a browser in the unit test process.
-// Writing tests with InProcessBrowserTest is slightly different than that of
-// other tests. This is necessitated by InProcessBrowserTest running a message
-// loop. To use InProcessBrowserTest do the following:
-// . Use the macro IN_PROC_BROWSER_TEST_F to define your test.
-// . Your test method is invoked on the ui thread. If you need to block until
-// state changes you'll need to run the message loop from your test method.
-// For example, if you need to wait till a find bar has completely been shown
-// you'll need to invoke ui_test_utils::RunMessageLoop. When the message bar
-// is shown, invoke MessageLoop::current()->Quit() to return control back to
-// your test method.
-// . If you subclass and override SetUp, be sure and invoke
-// InProcessBrowserTest::SetUp. (But see also SetUpOnMainThread,
-// SetUpInProcessBrowserTestFixture and other related hook methods for a
-// cleaner alternative).
-//
-// Following three hook methods are called in sequence before calling
-// BrowserMain(), thus no browser has been created yet. They are mainly for
-// setting up the environment for running the browser.
-// . SetUpUserDataDirectory()
-// . SetUpCommandLine()
-// . SetUpInProcessBrowserTestFixture()
-//
-// SetUpOnMainThread() is called just after creating the default browser object
-// and before executing the real test code. It's mainly for setting up things
-// related to the browser object and associated window, like opening a new Tab
-// with a testing page loaded.
-//
-// CleanUpOnMainThread() is called just after executing the real test code to
-// do necessary cleanup before the browser is torn down.
-//
-// TearDownInProcessBrowserTestFixture() is called after BrowserMain() exits to
-// cleanup things setup for running the browser.
-//
-// By default InProcessBrowserTest creates a single Browser (as returned from
-// the CreateBrowser method). You can obviously create more as needed.
-
-// Browsers created while InProcessBrowserTest is running are shown hidden. Use
-// the command line switch --show-windows to make them visible when debugging.
-//
-// InProcessBrowserTest disables the sandbox when running.
-//
-// See ui_test_utils for a handful of methods designed for use with this class.
-class InProcessBrowserTest : public testing::Test {
- public:
- InProcessBrowserTest();
- virtual ~InProcessBrowserTest();
-
- // We do this so we can be used in a Task.
- void AddRef() {}
- void Release() {}
- static bool ImplementsThreadSafeReferenceCounting() { return false; }
-
- // Configures everything for an in process browser test, then invokes
- // BrowserMain. BrowserMain ends up invoking RunTestOnMainThreadLoop.
- virtual void SetUp();
-
- // Restores state configured in SetUp.
- virtual void TearDown();
-
- protected:
- // Returns the browser created by CreateBrowser.
- Browser* browser() const { return browser_; }
-
- // Convenience methods for adding tabs to a Browser.
- void AddTabAtIndexToBrowser(Browser* browser,
- int index,
- const GURL& url,
- PageTransition::Type transition);
- void AddTabAtIndex(int index, const GURL& url,
- PageTransition::Type transition);
-
- // Adds a selected tab at |index| to |url| with the specified |transition|.
- void AddTabAt(int index, const GURL& url, PageTransition::Type transition);
-
- // Override this to add any custom setup code that needs to be done on the
- // main thread after the browser is created and just before calling
- // RunTestOnMainThread().
- virtual void SetUpOnMainThread() {}
-
- // Override this rather than TestBody.
- virtual void RunTestOnMainThread() = 0;
-
- // Initializes the contents of the user data directory. Called by SetUp()
- // after creating the user data directory, but before any browser is launched.
- // If a test wishes to set up some initial non-empty state in the user data
- // directory before the browser starts up, it can do so here. Returns true if
- // successful.
- virtual bool SetUpUserDataDirectory() WARN_UNUSED_RESULT;
-
- // We need these special methods because InProcessBrowserTest::SetUp is the
- // bottom of the stack that winds up calling your test method, so it is not
- // always an option to do what you want by overriding it and calling the
- // superclass version.
- //
- // Override this for things you would normally override SetUp for. It will be
- // called before your individual test fixture method is run, but after most
- // of the overhead initialization has occured.
- virtual void SetUpInProcessBrowserTestFixture() {}
-
- // Override this for things you would normally override TearDown for.
- virtual void TearDownInProcessBrowserTestFixture() {}
-
- // Override this to add command line flags specific to your test.
- virtual void SetUpCommandLine(CommandLine* command_line) {}
-
- // Override this to add any custom cleanup code that needs to be done on the
- // main thread before the browser is torn down.
- virtual void CleanUpOnMainThread() {}
-
- // Returns the testing server. Guaranteed to be non-NULL.
- net::TestServer* test_server() { return test_server_.get(); }
-
- // Creates a browser with a single tab (about:blank), waits for the tab to
- // finish loading and shows the browser.
- //
- // This is invoked from Setup.
- virtual Browser* CreateBrowser(Profile* profile);
-
- // Similar to |CreateBrowser|, but creates an incognito browser.
- virtual Browser* CreateIncognitoBrowser();
-
- // Creates a browser for a popup window with a single tab (about:blank), waits
- // for the tab to finish loading, and shows the browser.
- Browser* CreateBrowserForPopup(Profile* profile);
-
- // Called from the various CreateBrowser methods to add a blank tab, wait for
- // the navigation to complete, and show the browser's window.
- void AddBlankTabAndShow(Browser* browser);
-
- // Returns the host resolver being used for the tests. Subclasses might want
- // to configure it inside tests.
- net::RuleBasedHostResolverProc* host_resolver() {
- return host_resolver_.get();
- }
-
- // Sets some test states (see below for comments). Call this in your test
- // constructor.
- void set_show_window(bool show) { show_window_ = show; }
- void EnableDOMAutomation() { dom_automation_enabled_ = true; }
- void EnableTabCloseableStateWatcher() {
- tab_closeable_state_watcher_enabled_ = true;
- }
-
- private:
- // Creates a user data directory for the test if one is needed. Returns true
- // if successful.
- virtual bool CreateUserDataDirectory() WARN_UNUSED_RESULT;
-
- // This is invoked from main after browser_init/browser_main have completed.
- // This prepares for the test by creating a new browser, runs the test
- // (RunTestOnMainThread), quits the browsers and returns.
- void RunTestOnMainThreadLoop();
-
- // Quits all open browsers and waits until there are no more browsers.
- void QuitBrowsers();
-
- // Prepare command line that will be used to launch the child browser process
- // with an in-process test.
- void PrepareTestCommandLine(CommandLine* command_line);
-
- // Browser created from CreateBrowser.
- Browser* browser_;
-
- // Testing server, started on demand.
- scoped_ptr<net::TestServer> test_server_;
-
- // ContentRendererClient when running in single-process mode.
- scoped_ptr<content::ContentRendererClient> single_process_renderer_client_;
-
- // Whether this test requires the browser windows to be shown (interactive
- // tests for example need the windows shown).
- bool show_window_;
-
- // Whether the JavaScript can access the DOMAutomationController (a JS object
- // that can send messages back to the browser).
- bool dom_automation_enabled_;
-
- // Whether this test requires the TabCloseableStateWatcher.
- bool tab_closeable_state_watcher_enabled_;
-
- // Host resolver to use during the test.
- scoped_refptr<net::RuleBasedHostResolverProc> host_resolver_;
-
- // Temporary user data directory. Used only when a user data directory is not
- // specified in the command line.
- ScopedTempDir temp_user_data_dir_;
-
-#if defined(OS_CHROMEOS)
- chromeos::ScopedStubCrosEnabler stub_cros_enabler_;
-#endif // defined(OS_CHROMEOS)
-
- DISALLOW_COPY_AND_ASSIGN(InProcessBrowserTest);
-};
-
-// We only want to use InProcessBrowserTest in test targets which properly
-// isolate each test case by running each test in a separate process.
-// This way if a test hangs the test launcher can reliably terminate it.
-//
-// InProcessBrowserTest cannot be run more than once in the same address space
-// anyway - otherwise the second test crashes.
-#if defined(HAS_OUT_OF_PROC_TEST_RUNNER)
-
-#define IN_PROC_BROWSER_TEST_(test_case_name, test_name, parent_class,\
- parent_id)\
-class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
- public:\
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
- protected:\
- virtual void RunTestOnMainThread();\
- private:\
- virtual void TestBody() {}\
- static ::testing::TestInfo* const test_info_;\
- GTEST_DISALLOW_COPY_AND_ASSIGN_(\
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
-};\
-\
-::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\
- ::test_info_ =\
- ::testing::internal::MakeAndRegisterTestInfo(\
- #test_case_name, #test_name, "", "", \
- (parent_id), \
- parent_class::SetUpTestCase, \
- parent_class::TearDownTestCase, \
- new ::testing::internal::TestFactoryImpl<\
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\
-void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread()
-
-#define IN_PROC_BROWSER_TEST_F(test_fixture, test_name)\
- IN_PROC_BROWSER_TEST_(test_fixture, test_name, test_fixture,\
- ::testing::internal::GetTypeId<test_fixture>())
-
-#define IN_PROC_BROWSER_TEST_P(test_case_name, test_name) \
- class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
- : public test_case_name { \
- public: \
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
- protected: \
- virtual void RunTestOnMainThread(); \
- private: \
- virtual void TestBody() {} \
- static int AddToRegistry() { \
- ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
- GetTestCasePatternHolder<test_case_name>(\
- #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
- #test_case_name, \
- #test_name, \
- new ::testing::internal::TestMetaFactory< \
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
- return 0; \
- } \
- static int gtest_registering_dummy_; \
- GTEST_DISALLOW_COPY_AND_ASSIGN_(\
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
- }; \
- int GTEST_TEST_CLASS_NAME_(test_case_name, \
- test_name)::gtest_registering_dummy_ = \
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
- void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread()
-
-#endif // defined(HAS_OUT_OF_PROC_TEST_RUNNER)
-
-#endif // CHROME_TEST_IN_PROCESS_BROWSER_TEST_H_
« no previous file with comments | « chrome/test/base/ui_test_utils_win.cc ('k') | chrome/test/in_process_browser_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698