Make sure webrtc::VideoSourceInterface is released on the main render thread.
[chromium-blink-merge.git] / content / public / test / browser_test.h
blob8b2f79908aaa8fec4363d64862fb7b0618ac31aa
1 // Copyright (c) 2012 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.
5 #ifndef CONTENT_TEST_BROWSER_TEST_H_
6 #define CONTENT_TEST_BROWSER_TEST_H_
8 // We only want to use InProcessBrowserTest in test targets which properly
9 // isolate each test case by running each test in a separate process.
10 // This way if a test hangs the test launcher can reliably terminate it.
12 // InProcessBrowserTest cannot be run more than once in the same address space
13 // anyway - otherwise the second test crashes.
14 #if defined(HAS_OUT_OF_PROC_TEST_RUNNER)
16 #include "base/compiler_specific.h"
17 #include "testing/gtest/include/gtest/gtest.h"
19 #define IN_PROC_BROWSER_TEST_(test_case_name, test_name, parent_class,\
20 parent_id)\
21 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
22 public:\
23 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
24 protected:\
25 virtual void RunTestOnMainThread() OVERRIDE;\
26 private:\
27 virtual void TestBody() OVERRIDE {}\
28 static ::testing::TestInfo* const test_info_;\
29 GTEST_DISALLOW_COPY_AND_ASSIGN_(\
30 GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
31 };\
33 ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\
34 ::test_info_ =\
35 ::testing::internal::MakeAndRegisterTestInfo(\
36 #test_case_name, #test_name, "", "", \
37 (parent_id), \
38 parent_class::SetUpTestCase, \
39 parent_class::TearDownTestCase, \
40 new ::testing::internal::TestFactoryImpl<\
41 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\
42 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread()
44 #define IN_PROC_BROWSER_TEST_F(test_fixture, test_name)\
45 IN_PROC_BROWSER_TEST_(test_fixture, test_name, test_fixture,\
46 ::testing::internal::GetTypeId<test_fixture>())
48 #define IN_PROC_BROWSER_TEST_P_(test_case_name, test_name) \
49 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
50 : public test_case_name { \
51 public: \
52 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
53 protected: \
54 virtual void RunTestOnMainThread() OVERRIDE; \
55 private: \
56 virtual void TestBody() OVERRIDE {} \
57 static int AddToRegistry() { \
58 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
59 GetTestCasePatternHolder<test_case_name>(\
60 #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
61 #test_case_name, \
62 #test_name, \
63 new ::testing::internal::TestMetaFactory< \
64 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
65 return 0; \
66 } \
67 static int gtest_registering_dummy_; \
68 GTEST_DISALLOW_COPY_AND_ASSIGN_(\
69 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
70 }; \
71 int GTEST_TEST_CLASS_NAME_(test_case_name, \
72 test_name)::gtest_registering_dummy_ = \
73 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
74 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread()
76 // Wrap the real macro with an outer macro to ensure that the parameters are
77 // evaluated (e.g., if |test_name| is prefixed with MAYBE_).
78 #define IN_PROC_BROWSER_TEST_P(test_case_name, test_name) \
79 IN_PROC_BROWSER_TEST_P_(test_case_name, test_name)
81 #endif // defined(HAS_OUT_OF_PROC_TEST_RUNNER)
83 #endif // CONTENT_TEST_BROWSER_TEST_H_