| Index: chrome/browser/chromeos/login/mixin_based_browser_test.h
|
| diff --git a/chrome/browser/chromeos/login/mixin_based_browser_test.h b/chrome/browser/chromeos/login/mixin_based_browser_test.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..af367f24739f3a3cb8e9140c39e9d216f0270be1
|
| --- /dev/null
|
| +++ b/chrome/browser/chromeos/login/mixin_based_browser_test.h
|
| @@ -0,0 +1,85 @@
|
| +// Copyright (c) 2014 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_BROWSER_CHROMEOS_LOGIN_MIXIN_BASED_BROWSER_TEST_H_
|
| +#define CHROME_BROWSER_CHROMEOS_LOGIN_MIXIN_BASED_BROWSER_TEST_H_
|
| +
|
| +#include "base/memory/scoped_vector.h"
|
| +#include "chrome/test/base/in_process_browser_test.h"
|
| +
|
| +namespace chromeos {
|
| +
|
| +class MixinBasedBrowserTest : public InProcessBrowserTest {
|
| + public:
|
| + // A class that can be used to add some features not related directly to the
|
| + // testing process in order not to make the test class too complicated and to
|
| + // set up them in a proper time (at the same time when the corresponding set
|
| + // ups for the main test are run).
|
| + //
|
| + // To used this you need to derive a class from from
|
| + // MixinBasedBrowserTest::Mixin, e.g. MixinYouWantToUse, and declare all
|
| + // the methods you'd like in this new class. You also can reload setups and
|
| + // teardowns if you need so. Test which wants to use some mixin should call
|
| + // AddMixin(mixin_) from its constructor, where mixin_ should be an instance
|
| + // of MixinYouWantToUse.
|
| + //
|
| + // All methods in Mixin are complete analogs of those in InProcessBrowserTest,
|
| + // so if some usecases are unclear, take a look at in_process_browser_test.h
|
| + class Mixin {
|
| + public:
|
| + Mixin() {}
|
| + virtual ~Mixin() {}
|
| +
|
| + // Is called before creating the browser and running
|
| + // SetUpInProcessBrowserTestFixture.
|
| + // Should be used for setting up the command line.
|
| + virtual void SetUpCommandLine(base::CommandLine* command_line) {}
|
| +
|
| + // Is called before creating the browser.
|
| + // Should be used to set up the environment for running the browser.
|
| + virtual void SetUpInProcessBrowserTestFixture() {}
|
| +
|
| + // Is called after creating the browser and before executing test code.
|
| + // Should be used for setting up things related to the browser object.
|
| + virtual void SetUpOnMainThread() {}
|
| +
|
| + // Is called after executing the test code and before the browser is torn
|
| + // down.
|
| + // Should be used to do the necessary cleanup on the working browser.
|
| + virtual void TearDownOnMainThread() {}
|
| +
|
| + // Is called after the browser is torn down.
|
| + // Should be used to do the remaining cleanup.
|
| + virtual void TearDownInProcessBrowserTestFixture() {}
|
| + };
|
| +
|
| + MixinBasedBrowserTest();
|
| + virtual ~MixinBasedBrowserTest();
|
| +
|
| + // Override from InProcessBrowserTest.
|
| + virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE;
|
| + virtual void SetUpInProcessBrowserTestFixture() OVERRIDE;
|
| + virtual void SetUpOnMainThread() OVERRIDE;
|
| + virtual void TearDownOnMainThread() OVERRIDE;
|
| + virtual void TearDownInProcessBrowserTestFixture() OVERRIDE;
|
| +
|
| + protected:
|
| + // Adds |mixin| as an mixin for this test, passing ownership
|
| + // for it to MixinBasedBrowserTest.
|
| + // Should be called in constructor of the test (should be already completed
|
| + // before running set ups).
|
| + void AddMixin(Mixin* mixin);
|
| +
|
| + private:
|
| + // Keeps all the mixins for this test,
|
| + ScopedVector<Mixin> mixins_;
|
| +
|
| + // Is false initially, becomes true when any of SetUp* methods is called.
|
| + // Required to check that AddMixin is always called before setting up.
|
| + bool setup_was_launched_;
|
| +};
|
| +
|
| +} // namespace chromeos
|
| +
|
| +#endif // CHROME_BROWSER_CHROMEOS_LOGIN_MIXIN_BASED_BROWSER_TEST_H_
|
|
|