| Index: base/test/test_stub_android.cc
|
| diff --git a/base/test/test_stub_android.cc b/base/test/test_stub_android.cc
|
| deleted file mode 100644
|
| index aaf952e232cf5e003baaeedfafe47bfb92594ac9..0000000000000000000000000000000000000000
|
| --- a/base/test/test_stub_android.cc
|
| +++ /dev/null
|
| @@ -1,191 +0,0 @@
|
| -// Copyright (c) 2012 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.
|
| -
|
| -#include <stdarg.h>
|
| -#include <string.h>
|
| -
|
| -#include "base/file_path.h"
|
| -#include "base/logging.h"
|
| -#include "base/memory/singleton.h"
|
| -#include "base/message_pump_android.h"
|
| -#include "base/path_service.h"
|
| -#include "base/synchronization/waitable_event.h"
|
| -
|
| -namespace {
|
| -
|
| -// The test implementation of AndroidOS stores everything in the following
|
| -// directory.
|
| -const char* kAndroidTestTempDirectory = "/data/local/tmp";
|
| -
|
| -struct RunState {
|
| - RunState(base::MessagePump::Delegate* delegate, int run_depth)
|
| - : delegate(delegate),
|
| - run_depth(run_depth),
|
| - should_quit(false) {
|
| - }
|
| -
|
| - base::MessagePump::Delegate* delegate;
|
| -
|
| - // Used to count how many Run() invocations are on the stack.
|
| - int run_depth;
|
| -
|
| - // Used to flag that the current Run() invocation should return ASAP.
|
| - bool should_quit;
|
| -};
|
| -
|
| -RunState* g_state = NULL;
|
| -
|
| -// A singleton WaitableEvent wrapper so we avoid a busy loop in
|
| -// MessagePumpForUIStub. Other platforms use the native event loop which blocks
|
| -// when there are no pending messages.
|
| -class Waitable {
|
| - public:
|
| - static Waitable* GetInstance() {
|
| - return Singleton<Waitable>::get();
|
| - }
|
| -
|
| - // Signals that there are more work to do.
|
| - void Signal() {
|
| - waitable_event_.Signal();
|
| - }
|
| -
|
| - // Blocks until more work is scheduled.
|
| - void Block() {
|
| - waitable_event_.Wait();
|
| - }
|
| -
|
| - void Quit() {
|
| - g_state->should_quit = true;
|
| - Signal();
|
| - }
|
| -
|
| - private:
|
| - friend struct DefaultSingletonTraits<Waitable>;
|
| -
|
| - Waitable()
|
| - : waitable_event_(false, false) {
|
| - }
|
| -
|
| - base::WaitableEvent waitable_event_;
|
| -};
|
| -
|
| -// The MessagePumpForUI implementation for test purpose.
|
| -class MessagePumpForUIStub : public base::MessagePumpForUI {
|
| - void Start(base::MessagePump::Delegate* delegate) {
|
| - NOTREACHED() << "The Start() method shouldn't be called in test, using"
|
| - " Run() method should be used.";
|
| - }
|
| -
|
| - void Run(base::MessagePump::Delegate* delegate) {
|
| - // The following was based on message_pump_glib.cc, except we're using a
|
| - // WaitableEvent since there are no native message loop to use.
|
| - RunState state(delegate, g_state ? g_state->run_depth + 1 : 1);
|
| -
|
| - RunState* previous_state = g_state;
|
| - g_state = &state;
|
| -
|
| - bool more_work_is_plausible = true;
|
| -
|
| - for (;;) {
|
| - if (!more_work_is_plausible) {
|
| - Waitable::GetInstance()->Block();
|
| - if (g_state->should_quit)
|
| - break;
|
| - }
|
| -
|
| - more_work_is_plausible = g_state->delegate->DoWork();
|
| - if (g_state->should_quit)
|
| - break;
|
| -
|
| - base::TimeTicks delayed_work_time;
|
| - more_work_is_plausible |=
|
| - g_state->delegate->DoDelayedWork(&delayed_work_time);
|
| - if (g_state->should_quit)
|
| - break;
|
| -
|
| - if (more_work_is_plausible)
|
| - continue;
|
| -
|
| - more_work_is_plausible = g_state->delegate->DoIdleWork();
|
| - if (g_state->should_quit)
|
| - break;
|
| -
|
| - more_work_is_plausible |= !delayed_work_time.is_null();
|
| - }
|
| -
|
| - g_state = previous_state;
|
| - }
|
| -
|
| - void Quit() {
|
| - Waitable::GetInstance()->Quit();
|
| - }
|
| -
|
| - void ScheduleWork() {
|
| - Waitable::GetInstance()->Signal();
|
| - }
|
| -
|
| - void ScheduleDelayedWork(const base::TimeTicks& delayed_work_time) {
|
| - Waitable::GetInstance()->Signal();
|
| - }
|
| -};
|
| -
|
| -// Provides the test path for DIR_MODULE, DIR_CACHE and DIR_ANDROID_APP_DATA.
|
| -bool PathTestProviderAndroid(int key, FilePath* result) {
|
| - switch (key) {
|
| - case base::DIR_MODULE: {
|
| - *result = FilePath(kAndroidTestTempDirectory);
|
| - return true;
|
| - }
|
| -#if !defined(ANDROID_APK_TEST_TARGET)
|
| - // When running as executable we need to use /data/local/tmp as the
|
| - // cache directory.
|
| - case base::DIR_CACHE: {
|
| - *result = FilePath(kAndroidTestTempDirectory);
|
| - return true;
|
| - }
|
| -#endif // !defined(ANDROID_APK_TEST_TARGET)
|
| - case base::DIR_ANDROID_APP_DATA: {
|
| - *result = FilePath(kAndroidTestTempDirectory);
|
| - return true;
|
| - }
|
| - default:
|
| - return false;
|
| - }
|
| -}
|
| -
|
| -// The factory method to create a MessagePumpForUI.
|
| -base::MessagePump* CreateMessagePumpForUIStub() {
|
| - return new MessagePumpForUIStub();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -void InitAndroidOSPathStub() {
|
| - PathService::Override(base::DIR_MODULE, FilePath(kAndroidTestTempDirectory));
|
| - PathService::Override(base::DIR_CACHE, FilePath(kAndroidTestTempDirectory));
|
| - PathService::Override(base::DIR_ANDROID_APP_DATA,
|
| - FilePath(kAndroidTestTempDirectory));
|
| -}
|
| -
|
| -void InitAndroidTestStub() {
|
| - logging::InitLogging(NULL,
|
| - logging::LOG_ONLY_TO_SYSTEM_DEBUG_LOG,
|
| - logging::DONT_LOCK_LOG_FILE,
|
| - logging::DELETE_OLD_LOG_FILE,
|
| - logging::ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS);
|
| - // To view log output with IDs and timestamps use "adb logcat -v threadtime".
|
| - logging::SetLogItems(false, // Process ID
|
| - false, // Thread ID
|
| - false, // Timestamp
|
| - false); // Tick count
|
| -
|
| - PathService::RegisterProvider(&PathTestProviderAndroid, base::DIR_MODULE,
|
| - base::DIR_MODULE + 1);
|
| - PathService::RegisterProvider(&PathTestProviderAndroid, base::DIR_CACHE,
|
| - base::DIR_CACHE + 1);
|
| - PathService::RegisterProvider(&PathTestProviderAndroid,
|
| - base::DIR_ANDROID_APP_DATA, base::DIR_ANDROID_APP_DATA + 1);
|
| -
|
| - MessageLoop::InitMessagePumpForUIFactory(&CreateMessagePumpForUIStub);
|
| -}
|
|
|