blob: 3174eafcdc5f8c3333ff052c0bdb9dc0cf7c4c40 [file] [log] [blame]
// 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 CONTENT_TEST_BROWSER_TEST_BASE_H_
#define CONTENT_TEST_BROWSER_TEST_BASE_H_
#pragma once
#include "base/compiler_specific.h"
#include "testing/gtest/include/gtest/gtest.h"
class BrowserTestBase : public testing::Test {
public:
BrowserTestBase();
virtual ~BrowserTestBase();
// 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() OVERRIDE;
// Restores state configured in SetUp.
virtual void TearDown() OVERRIDE;
protected:
// We need these special methods because 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 rather than TestBody.
virtual void RunTestOnMainThread() = 0;
// 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.
virtual void RunTestOnMainThreadLoop() = 0;
private:
void ProxyRunTestOnMainThreadLoop();
};
#endif // CONTENT_TEST_BROWSER_TEST_BASE_H_