Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(546)

Side by Side Diff: chrome/test/base/view_event_test_base.h

Issue 8212006: base::Bind: Cleanup in automation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_TEST_BASE_VIEW_EVENT_TEST_BASE_H_ 5 #ifndef CHROME_TEST_BASE_VIEW_EVENT_TEST_BASE_H_
6 #define CHROME_TEST_BASE_VIEW_EVENT_TEST_BASE_H_ 6 #define CHROME_TEST_BASE_VIEW_EVENT_TEST_BASE_H_
7 #pragma once 7 #pragma once
8 8
9 // We only want to use ViewEventTestBase in test targets which properly 9 // We only want to use ViewEventTestBase in test targets which properly
10 // isolate each test case by running each test in a separate process. 10 // isolate each test case by running each test in a separate process.
11 // This way if a test hangs the test launcher can reliably terminate it. 11 // This way if a test hangs the test launcher can reliably terminate it.
12 #if defined(HAS_OUT_OF_PROC_TEST_RUNNER) 12 #if defined(HAS_OUT_OF_PROC_TEST_RUNNER)
13 13
14 #include "base/callback.h"
14 #include "base/message_loop.h" 15 #include "base/message_loop.h"
15 #include "base/task.h"
16 #include "base/threading/thread.h" 16 #include "base/threading/thread.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "views/widget/widget_delegate.h" 18 #include "views/widget/widget_delegate.h"
19 19
20 class Task;
21
22 namespace gfx { 20 namespace gfx {
23 class Size; 21 class Size;
24 } 22 }
25 23
26 // Base class for Views based tests that dispatch events. 24 // Base class for Views based tests that dispatch events.
27 // 25 //
28 // As views based event test involves waiting for events to be processed, 26 // As views based event test involves waiting for events to be processed,
29 // writing a views based test is slightly different than that of writing 27 // writing a views based test is slightly different than that of writing
30 // other unit tests. In particular when the test fails or is done you need 28 // other unit tests. In particular when the test fails or is done you need
31 // to stop the message loop. This can be done by way of invoking the Done 29 // to stop the message loop. This can be done by way of invoking the Done
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 72
75 // Destroys the window. 73 // Destroys the window.
76 virtual void TearDown(); 74 virtual void TearDown();
77 75
78 // Overridden from views::WidgetDelegate: 76 // Overridden from views::WidgetDelegate:
79 virtual bool CanResize() const OVERRIDE; 77 virtual bool CanResize() const OVERRIDE;
80 virtual views::View* GetContentsView() OVERRIDE; 78 virtual views::View* GetContentsView() OVERRIDE;
81 virtual const views::Widget* GetWidget() const OVERRIDE; 79 virtual const views::Widget* GetWidget() const OVERRIDE;
82 virtual views::Widget* GetWidget() OVERRIDE; 80 virtual views::Widget* GetWidget() OVERRIDE;
83 81
84 // Overriden to do nothing so that this class can be used in runnable tasks. 82 // Overridden to do nothing so that this class can be used in runnable tasks.
85 void AddRef() {} 83 void AddRef() {}
86 void Release() {} 84 void Release() {}
87 static bool ImplementsThreadSafeReferenceCounting() { return false; } 85 static bool ImplementsThreadSafeReferenceCounting() { return false; }
88 86
89 protected: 87 protected:
90 virtual ~ViewEventTestBase(); 88 virtual ~ViewEventTestBase();
91 89
92 // Returns the view that is added to the window. 90 // Returns the view that is added to the window.
93 virtual views::View* CreateContentsView() = 0; 91 virtual views::View* CreateContentsView() = 0;
94 92
95 // Called once the message loop is running. 93 // Called once the message loop is running.
96 virtual void DoTestOnMessageLoop() = 0; 94 virtual void DoTestOnMessageLoop() = 0;
97 95
98 // Invoke from test main. Shows the window, starts the message loop and 96 // Invoke from test main. Shows the window, starts the message loop and
99 // schedules a task that invokes DoTestOnMessageLoop. 97 // schedules a task that invokes DoTestOnMessageLoop.
100 void StartMessageLoopAndRunTest(); 98 void StartMessageLoopAndRunTest();
101 99
102 // Returns an empty Size. Subclasses that want a preferred size other than 100 // Returns an empty Size. Subclasses that want a preferred size other than
103 // that of the View returned by CreateContentsView should override this 101 // that of the View returned by CreateContentsView should override this
104 // appropriately. 102 // appropriately.
105 virtual gfx::Size GetPreferredSize(); 103 virtual gfx::Size GetPreferredSize();
106 104
107 // Creates a task that calls the specified method back. The specified 105 // Creates a task that calls the specified method back. The specified
108 // method is called in such a way that if there are any test failures 106 // method is called in such a way that if there are any test failures
109 // Done is invoked. 107 // Done is invoked.
110 template <class T, class Method> 108 template <class T, class Method>
111 Task* CreateEventTask(T* target, Method method) { 109 base::Closure CreateEventTask(T* target, Method method) {
112 return NewRunnableMethod(this, &ViewEventTestBase::RunTestMethod, 110 return base::Bind(&ViewEventTestBase::RunTestMethod, this,
113 NewRunnableMethod(target, method)); 111 base::Bind(method, target));
114 } 112 }
115 113
116 // Spawns a new thread posts a MouseMove in the background. 114 // Spawns a new thread posts a MouseMove in the background.
117 void ScheduleMouseMoveInBackground(int x, int y); 115 void ScheduleMouseMoveInBackground(int x, int y);
118 116
119 views::Widget* window_; 117 views::Widget* window_;
120 118
121 private: 119 private:
122 // Stops the thread started by ScheduleMouseMoveInBackground. 120 // Stops the thread started by ScheduleMouseMoveInBackground.
123 void StopBackgroundThread(); 121 void StopBackgroundThread();
124 122
125 // Callback from CreateEventTask. Stops the background thread, runs the 123 // Callback from CreateEventTask. Stops the background thread, runs the
126 // supplied task and if there are failures invokes Done. 124 // supplied task and if there are failures invokes Done.
127 void RunTestMethod(Task* task); 125 void RunTestMethod(const base::Closure& task);
128 126
129 // The content of the Window. 127 // The content of the Window.
130 views::View* content_view_; 128 views::View* content_view_;
131 129
132 // Thread for posting background MouseMoves. 130 // Thread for posting background MouseMoves.
133 scoped_ptr<base::Thread> dnd_thread_; 131 scoped_ptr<base::Thread> dnd_thread_;
134 132
135 MessageLoopForUI message_loop_; 133 MessageLoopForUI message_loop_;
136 134
137 // Method factory used for time-outs. 135 // Method factory used for time-outs.
138 ScopedRunnableMethodFactory<ViewEventTestBase> method_factory_; 136 ScopedRunnableMethodFactory<ViewEventTestBase> method_factory_;
139 137
140 DISALLOW_COPY_AND_ASSIGN(ViewEventTestBase); 138 DISALLOW_COPY_AND_ASSIGN(ViewEventTestBase);
141 }; 139 };
142 140
143 // Convenience macro for defining a ViewEventTestBase. See class description 141 // Convenience macro for defining a ViewEventTestBase. See class description
144 // of ViewEventTestBase for details. 142 // of ViewEventTestBase for details.
145 #define VIEW_TEST(test_class, name) \ 143 #define VIEW_TEST(test_class, name) \
146 TEST_F(test_class, name) {\ 144 TEST_F(test_class, name) {\
147 StartMessageLoopAndRunTest();\ 145 StartMessageLoopAndRunTest();\
148 } 146 }
149 147
150 #endif // defined(HAS_OUT_OF_PROC_TEST_RUNNER) 148 #endif // defined(HAS_OUT_OF_PROC_TEST_RUNNER)
151 149
152 #endif // CHROME_TEST_BASE_VIEW_EVENT_TEST_BASE_H_ 150 #endif // CHROME_TEST_BASE_VIEW_EVENT_TEST_BASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698