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

Side by Side Diff: base/test/test_support_android.cc

Issue 10408091: Chromium support of running DumpRenderTree as an apk on Android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed media dependency from testing/android. And style changes. Created 8 years, 7 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) 2012 The Chromium Authors. All rights reserved. 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 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 #include <stdarg.h> 5 #include <stdarg.h>
6 #include <string.h> 6 #include <string.h>
7 7
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/singleton.h" 10 #include "base/memory/singleton.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 } 61 }
62 62
63 private: 63 private:
64 friend struct DefaultSingletonTraits<Waitable>; 64 friend struct DefaultSingletonTraits<Waitable>;
65 65
66 Waitable() 66 Waitable()
67 : waitable_event_(false, false) { 67 : waitable_event_(false, false) {
68 } 68 }
69 69
70 base::WaitableEvent waitable_event_; 70 base::WaitableEvent waitable_event_;
71
72 DISALLOW_COPY_AND_ASSIGN(Waitable);
71 }; 73 };
72 74
73 // The MessagePumpForUI implementation for test purpose. 75 // The MessagePumpForUI implementation for test purpose.
74 class MessagePumpForUIStub : public base::MessagePumpForUI { 76 class MessagePumpForUIStub : public base::MessagePumpForUI {
75 void Start(base::MessagePump::Delegate* delegate) { 77 virtual void Start(base::MessagePump::Delegate* delegate) OVERRIDE {
76 NOTREACHED() << "The Start() method shouldn't be called in test, using" 78 NOTREACHED() << "The Start() method shouldn't be called in test, using"
77 " Run() method should be used."; 79 " Run() method should be used.";
78 } 80 }
79 81
80 void Run(base::MessagePump::Delegate* delegate) { 82 virtual void Run(base::MessagePump::Delegate* delegate) OVERRIDE {
81 // The following was based on message_pump_glib.cc, except we're using a 83 // The following was based on message_pump_glib.cc, except we're using a
82 // WaitableEvent since there are no native message loop to use. 84 // WaitableEvent since there are no native message loop to use.
83 RunState state(delegate, g_state ? g_state->run_depth + 1 : 1); 85 RunState state(delegate, g_state ? g_state->run_depth + 1 : 1);
84 86
85 RunState* previous_state = g_state; 87 RunState* previous_state = g_state;
86 g_state = &state; 88 g_state = &state;
87 89
88 bool more_work_is_plausible = true; 90 bool more_work_is_plausible = true;
89 91
90 for (;;) { 92 for (;;) {
(...skipping 19 matching lines...) Expand all
110 more_work_is_plausible = g_state->delegate->DoIdleWork(); 112 more_work_is_plausible = g_state->delegate->DoIdleWork();
111 if (g_state->should_quit) 113 if (g_state->should_quit)
112 break; 114 break;
113 115
114 more_work_is_plausible |= !delayed_work_time.is_null(); 116 more_work_is_plausible |= !delayed_work_time.is_null();
115 } 117 }
116 118
117 g_state = previous_state; 119 g_state = previous_state;
118 } 120 }
119 121
120 void Quit() { 122 virtual void Quit() OVERRIDE {
121 Waitable::GetInstance()->Quit(); 123 Waitable::GetInstance()->Quit();
122 } 124 }
123 125
124 void ScheduleWork() { 126 virtual void ScheduleWork() OVERRIDE {
125 Waitable::GetInstance()->Signal(); 127 Waitable::GetInstance()->Signal();
126 } 128 }
127 129
128 void ScheduleDelayedWork(const base::TimeTicks& delayed_work_time) { 130 virtual void ScheduleDelayedWork(
131 const base::TimeTicks& delayed_work_time) OVERRIDE {
129 Waitable::GetInstance()->Signal(); 132 Waitable::GetInstance()->Signal();
130 } 133 }
131 }; 134 };
132 135
136 base::MessagePump* CreateMessagePumpForUIStub() {
137 return new MessagePumpForUIStub();
138 };
139
133 // Provides the test path for DIR_MODULE, DIR_CACHE and DIR_ANDROID_APP_DATA. 140 // Provides the test path for DIR_MODULE, DIR_CACHE and DIR_ANDROID_APP_DATA.
134 bool PathTestProviderAndroid(int key, FilePath* result) { 141 bool GetTestProviderPath(int key, FilePath* result) {
135 switch (key) { 142 switch (key) {
136 case base::DIR_MODULE: { 143 case base::DIR_MODULE: {
137 *result = FilePath(kAndroidTestTempDirectory); 144 *result = FilePath(kAndroidTestTempDirectory);
138 return true; 145 return true;
139 } 146 }
140 #if !defined(ANDROID_APK_TEST_TARGET) 147 #if !defined(ANDROID_APK_TEST_TARGET)
141 // When running as executable we need to use /data/local/tmp as the 148 // When running as executable we need to use /data/local/tmp as the
142 // cache directory. 149 // cache directory.
143 case base::DIR_CACHE: { 150 case base::DIR_CACHE: {
144 *result = FilePath(kAndroidTestTempDirectory); 151 *result = FilePath(kAndroidTestTempDirectory);
145 return true; 152 return true;
146 } 153 }
147 #endif // !defined(ANDROID_APK_TEST_TARGET) 154 #endif // !defined(ANDROID_APK_TEST_TARGET)
148 case base::DIR_ANDROID_APP_DATA: { 155 case base::DIR_ANDROID_APP_DATA: {
149 *result = FilePath(kAndroidTestTempDirectory); 156 *result = FilePath(kAndroidTestTempDirectory);
150 return true; 157 return true;
151 } 158 }
152 default: 159 default:
153 return false; 160 return false;
154 } 161 }
155 } 162 }
156 163
157 // The factory method to create a MessagePumpForUI. 164 void InitPathProvider(int key) {
158 base::MessagePump* CreateMessagePumpForUIStub() { 165 FilePath path;
159 return new MessagePumpForUIStub(); 166 GetTestProviderPath(key, &path);
167 // If failed to override the key, that means the way has not been registered.
168 if (!PathService::Override(key, path))
169 PathService::RegisterProvider(&GetTestProviderPath, key, key + 1);
160 } 170 }
161 171
162 } // namespace 172 } // namespace
163 173
164 void InitAndroidOSPathStub() { 174 void InitAndroidTestLogging() {
165 PathService::Override(base::DIR_MODULE, FilePath(kAndroidTestTempDirectory));
166 PathService::Override(base::DIR_CACHE, FilePath(kAndroidTestTempDirectory));
167 PathService::Override(base::DIR_ANDROID_APP_DATA,
168 FilePath(kAndroidTestTempDirectory));
169 }
170
171 void InitAndroidTestStub() {
172 logging::InitLogging(NULL, 175 logging::InitLogging(NULL,
173 logging::LOG_ONLY_TO_SYSTEM_DEBUG_LOG, 176 logging::LOG_ONLY_TO_SYSTEM_DEBUG_LOG,
174 logging::DONT_LOCK_LOG_FILE, 177 logging::DONT_LOCK_LOG_FILE,
175 logging::DELETE_OLD_LOG_FILE, 178 logging::DELETE_OLD_LOG_FILE,
176 logging::ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS); 179 logging::ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS);
177 // To view log output with IDs and timestamps use "adb logcat -v threadtime". 180 // To view log output with IDs and timestamps use "adb logcat -v threadtime".
178 logging::SetLogItems(false, // Process ID 181 logging::SetLogItems(false, // Process ID
179 false, // Thread ID 182 false, // Thread ID
180 false, // Timestamp 183 false, // Timestamp
181 false); // Tick count 184 false); // Tick count
185 }
182 186
183 PathService::RegisterProvider(&PathTestProviderAndroid, base::DIR_MODULE, 187 void InitAndroidTestPaths() {
184 base::DIR_MODULE + 1); 188 InitPathProvider(base::DIR_MODULE);
185 PathService::RegisterProvider(&PathTestProviderAndroid, base::DIR_CACHE, 189 InitPathProvider(base::DIR_CACHE);
186 base::DIR_CACHE + 1); 190 InitPathProvider(base::DIR_ANDROID_APP_DATA);
187 PathService::RegisterProvider(&PathTestProviderAndroid, 191 }
188 base::DIR_ANDROID_APP_DATA, base::DIR_ANDROID_APP_DATA + 1);
189 192
193 void InitAndroidTestMessageLoop() {
190 MessageLoop::InitMessagePumpForUIFactory(&CreateMessagePumpForUIStub); 194 MessageLoop::InitMessagePumpForUIFactory(&CreateMessagePumpForUIStub);
191 } 195 }
196
197 void InitAndroidTest() {
198 InitAndroidTestLogging();
199 InitAndroidTestPaths();
200 InitAndroidTestMessageLoop();
201 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698