1 // Copyright 2013 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. 4 5 #ifndef CONTENT_PUBLIC_TEST_NESTED_MESSAGE_PUMP_ANDROID_ 6 #define CONTENT_PUBLIC_TEST_NESTED_MESSAGE_PUMP_ANDROID_ 7 8 #include "base/android/jni_android.h" 9 #include "base/compiler_specific.h" 10 #include "base/message_loop/message_pump_android.h" 11 12 namespace content { 13 14 // A nested message pump to be used for content browsertests and layout tests 15 // on Android. It overrides the default UI message pump to allow nested loops. 16 class NestedMessagePumpAndroid : public base::MessagePumpForUI { 17 public: 18 NestedMessagePumpAndroid(); 19 20 virtual void Run(Delegate* delegate) OVERRIDE; 21 virtual void Quit() OVERRIDE; 22 virtual void ScheduleWork() OVERRIDE; 23 virtual void ScheduleDelayedWork( 24 const base::TimeTicks& delayed_work_time) OVERRIDE; 25 virtual void Start(Delegate* delegate) OVERRIDE; 26 27 static bool RegisterJni(JNIEnv* env); 28 29 protected: 30 virtual ~NestedMessagePumpAndroid(); 31 32 private: 33 // We may make recursive calls to Run, so we save state that needs to be 34 // separate between them in this structure type. 35 struct RunState; 36 37 RunState* state_; 38 39 DISALLOW_COPY_AND_ASSIGN(NestedMessagePumpAndroid); 40 }; 41 42 } // namespace content 43 44 #endif // CONTENT_PUBLIC_TEST_NESTED_MESSAGE_PUMP_ANDROID_ 45