OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 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 CHROME_BROWSER_CHROMEOS_LOGIN_MIXIN_BASED_BROWSER_TEST_H_ |
| 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_MIXIN_BASED_BROWSER_TEST_H_ |
| 7 |
| 8 #include "base/memory/scoped_vector.h" |
| 9 #include "chrome/test/base/in_process_browser_test.h" |
| 10 |
| 11 namespace chromeos { |
| 12 |
| 13 class MixinBasedBrowserTest : public InProcessBrowserTest { |
| 14 public: |
| 15 // A class that can be used to add some features not related directly to the |
| 16 // testing process in order not to make the test class too complicated and to |
| 17 // set up them in a proper time (at the same time when the corresponding set |
| 18 // ups for the main test are run). |
| 19 // |
| 20 // To used this you need to derive a class from from |
| 21 // MixinBasedBrowserTest::Mixin, e.g. MixinYouWantToUse, and declare all |
| 22 // the methods you'd like in this new class. You also can reload setups and |
| 23 // teardowns if you need so. Test which wants to use some mixin should call |
| 24 // AddMixin(mixin_) from its constructor, where mixin_ should be an instance |
| 25 // of MixinYouWantToUse. |
| 26 // |
| 27 // All methods in Mixin are complete analogs of those in InProcessBrowserTest, |
| 28 // so if some usecases are unclear, take a look at in_process_browser_test.h |
| 29 class Mixin { |
| 30 public: |
| 31 Mixin() {} |
| 32 virtual ~Mixin() {} |
| 33 |
| 34 // Is called before creating the browser and running |
| 35 // SetUpInProcessBrowserTestFixture. |
| 36 // Should be used for setting up the command line. |
| 37 virtual void SetUpCommandLine(base::CommandLine* command_line) {} |
| 38 |
| 39 // Is called before creating the browser. |
| 40 // Should be used to set up the environment for running the browser. |
| 41 virtual void SetUpInProcessBrowserTestFixture() {} |
| 42 |
| 43 // Is called after creating the browser and before executing test code. |
| 44 // Should be used for setting up things related to the browser object. |
| 45 virtual void SetUpOnMainThread() {} |
| 46 |
| 47 // Is called after executing the test code and before the browser is torn |
| 48 // down. |
| 49 // Should be used to do the necessary cleanup on the working browser. |
| 50 virtual void TearDownOnMainThread() {} |
| 51 |
| 52 // Is called after the browser is torn down. |
| 53 // Should be used to do the remaining cleanup. |
| 54 virtual void TearDownInProcessBrowserTestFixture() {} |
| 55 }; |
| 56 |
| 57 MixinBasedBrowserTest(); |
| 58 virtual ~MixinBasedBrowserTest(); |
| 59 |
| 60 // Override from InProcessBrowserTest. |
| 61 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE; |
| 62 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; |
| 63 virtual void SetUpOnMainThread() OVERRIDE; |
| 64 virtual void TearDownOnMainThread() OVERRIDE; |
| 65 virtual void TearDownInProcessBrowserTestFixture() OVERRIDE; |
| 66 |
| 67 protected: |
| 68 // Adds |mixin| as an mixin for this test, passing ownership |
| 69 // for it to MixinBasedBrowserTest. |
| 70 // Should be called in constructor of the test (should be already completed |
| 71 // before running set ups). |
| 72 void AddMixin(Mixin* mixin); |
| 73 |
| 74 private: |
| 75 // Keeps all the mixins for this test, |
| 76 ScopedVector<Mixin> mixins_; |
| 77 |
| 78 // Is false initially, becomes true when any of SetUp* methods is called. |
| 79 // Required to check that AddMixin is always called before setting up. |
| 80 bool setup_was_launched_; |
| 81 }; |
| 82 |
| 83 } // namespace chromeos |
| 84 |
| 85 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_MIXIN_BASED_BROWSER_TEST_H_ |
OLD | NEW |