11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/chromeos/login/mixin_based_browser_test.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace chromeos {
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciMixinBasedBrowserTest::MixinBasedBrowserTest() : setup_was_launched_(false) {
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciMixinBasedBrowserTest::~MixinBasedBrowserTest() {
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid MixinBasedBrowserTest::SetUpCommandLine(base::CommandLine* command_line) {
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  setup_was_launched_ = true;
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  for (ScopedVector<Mixin>::iterator it = mixins_.begin(); it != mixins_.end();
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci       ++it) {
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    (*it)->SetUpCommandLine(command_line);
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  InProcessBrowserTest::SetUpCommandLine(command_line);
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid MixinBasedBrowserTest::SetUpInProcessBrowserTestFixture() {
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  setup_was_launched_ = true;
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  for (ScopedVector<Mixin>::iterator it = mixins_.begin(); it != mixins_.end();
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci       ++it) {
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    (*it)->SetUpInProcessBrowserTestFixture();
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  InProcessBrowserTest::SetUpInProcessBrowserTestFixture();
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid MixinBasedBrowserTest::SetUpOnMainThread() {
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  setup_was_launched_ = true;
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  for (ScopedVector<Mixin>::iterator it = mixins_.begin(); it != mixins_.end();
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci       ++it) {
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    (*it)->SetUpOnMainThread();
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  InProcessBrowserTest::SetUpOnMainThread();
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid MixinBasedBrowserTest::TearDownOnMainThread() {
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  InProcessBrowserTest::TearDownOnMainThread();
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  for (ScopedVector<Mixin>::reverse_iterator it = mixins_.rbegin();
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci       it != mixins_.rend();
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci       ++it) {
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    (*it)->TearDownInProcessBrowserTestFixture();
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid MixinBasedBrowserTest::TearDownInProcessBrowserTestFixture() {
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  InProcessBrowserTest::TearDownInProcessBrowserTestFixture();
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  for (ScopedVector<Mixin>::reverse_iterator it = mixins_.rbegin();
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci       it != mixins_.rend();
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci       ++it) {
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    (*it)->TearDownInProcessBrowserTestFixture();
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid MixinBasedBrowserTest::AddMixin(MixinBasedBrowserTest::Mixin* mixin) {
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  CHECK(!setup_was_launched_)
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      << "You are trying to add a mixin after setting up has already started.";
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  mixins_.push_back(mixin);
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace chromeos
66