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

Unified Diff: base/message_loop/message_pump_android.h

Issue 2169553002: Properly throw java exceptions from shouldOverrideUrlLoading (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix trybot compilation failure. Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/message_loop/message_loop_unittest.cc ('k') | base/message_loop/message_pump_android.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/message_loop/message_pump_android.h
diff --git a/base/message_loop/message_pump_android.h b/base/message_loop/message_pump_android.h
index 795bd5e79ee69569347d3c0c57522c3717c892ee..e4adaf646b6625666a6abd29de377381ec8e9a62 100644
--- a/base/message_loop/message_pump_android.h
+++ b/base/message_loop/message_pump_android.h
@@ -15,8 +15,13 @@
namespace base {
+namespace android {
+class JavaMessageHandlerFactory;
+}
+
class RunLoop;
class TimeTicks;
+class WaitableEvent;
// This class implements a MessagePump needed for TYPE_UI MessageLoops on
// OS_ANDROID platform.
@@ -31,12 +36,25 @@ class BASE_EXPORT MessagePumpForUI : public MessagePump {
void ScheduleDelayedWork(const TimeTicks& delayed_work_time) override;
virtual void Start(Delegate* delegate);
+ void StartForUnitTest(Delegate* delegate,
+ base::android::JavaMessageHandlerFactory* factory,
+ WaitableEvent* test_done_event);
+
+ // We call Abort when there is a pending JNI exception, meaning that the
+ // current thread will crash when we return to Java.
+ // We can't call any JNI-methods before returning to Java as we would then
+ // cause a native crash (instead of the original Java crash).
+ void Abort() { should_abort_ = true; }
+ bool ShouldAbort() const { return should_abort_; }
static bool RegisterBindings(JNIEnv* env);
private:
+ JNIEnv* StartInternal();
+
RunLoop* run_loop_;
base::android::ScopedJavaGlobalRef<jobject> system_message_handler_obj_;
+ bool should_abort_;
DISALLOW_COPY_AND_ASSIGN(MessagePumpForUI);
};
« no previous file with comments | « base/message_loop/message_loop_unittest.cc ('k') | base/message_loop/message_pump_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698