summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorkristianm@chromium.org <kristianm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-02 18:54:05 +0000
committerkristianm@chromium.org <kristianm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-02 18:54:05 +0000
commit3042d1be4a62c2ec757871e8aa4a66deab1a4c86 (patch)
tree0d93daaf029be56ffaeb5e2ef9e40b3e71a11e38 /base
parenta34dca58e4814cd003cf5e36fccae6f64cedaf80 (diff)
downloadchromium_src-3042d1be4a62c2ec757871e8aa4a66deab1a4c86.zip
chromium_src-3042d1be4a62c2ec757871e8aa4a66deab1a4c86.tar.gz
chromium_src-3042d1be4a62c2ec757871e8aa4a66deab1a4c86.tar.bz2
Updating message pump to store java ptr in class
This enables us to have more than one MessagePumpForUI on Android, and gets rid of an unneeded global variable. BUG= Review URL: https://chromiumcodereview.appspot.com/16926003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209739 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/message_loop/message_pump_android.cc25
-rw-r--r--base/message_loop/message_pump_android.h2
2 files changed, 11 insertions, 16 deletions
diff --git a/base/message_loop/message_pump_android.cc b/base/message_loop/message_pump_android.cc
index dda8730..70eb6ef 100644
--- a/base/message_loop/message_pump_android.cc
+++ b/base/message_loop/message_pump_android.cc
@@ -16,13 +16,6 @@
using base::android::ScopedJavaLocalRef;
-namespace {
-
-base::LazyInstance<base::android::ScopedJavaGlobalRef<jobject> >
- g_system_message_handler_obj = LAZY_INSTANCE_INITIALIZER;
-
-} // namespace
-
// ----------------------------------------------------------------------------
// Native JNI methods called by Java.
// ----------------------------------------------------------------------------
@@ -81,23 +74,23 @@ void MessagePumpForUI::Start(Delegate* delegate) {
if (!run_loop_->BeforeRun())
NOTREACHED();
- DCHECK(g_system_message_handler_obj.Get().is_null());
+ DCHECK(system_message_handler_obj_.is_null());
JNIEnv* env = base::android::AttachCurrentThread();
DCHECK(env);
- g_system_message_handler_obj.Get().Reset(
+ system_message_handler_obj_.Reset(
Java_SystemMessageHandler_create(env, reinterpret_cast<jint>(delegate)));
}
void MessagePumpForUI::Quit() {
- if (!g_system_message_handler_obj.Get().is_null()) {
+ if (!system_message_handler_obj_.is_null()) {
JNIEnv* env = base::android::AttachCurrentThread();
DCHECK(env);
Java_SystemMessageHandler_removeTimer(env,
- g_system_message_handler_obj.Get().obj());
- g_system_message_handler_obj.Get().Reset();
+ system_message_handler_obj_.obj());
+ system_message_handler_obj_.Reset();
}
if (run_loop_) {
@@ -108,17 +101,17 @@ void MessagePumpForUI::Quit() {
}
void MessagePumpForUI::ScheduleWork() {
- DCHECK(!g_system_message_handler_obj.Get().is_null());
+ DCHECK(!system_message_handler_obj_.is_null());
JNIEnv* env = base::android::AttachCurrentThread();
DCHECK(env);
Java_SystemMessageHandler_setTimer(env,
- g_system_message_handler_obj.Get().obj());
+ system_message_handler_obj_.obj());
}
void MessagePumpForUI::ScheduleDelayedWork(const TimeTicks& delayed_work_time) {
- DCHECK(!g_system_message_handler_obj.Get().is_null());
+ DCHECK(!system_message_handler_obj_.is_null());
JNIEnv* env = base::android::AttachCurrentThread();
DCHECK(env);
@@ -128,7 +121,7 @@ void MessagePumpForUI::ScheduleDelayedWork(const TimeTicks& delayed_work_time) {
// Note that we're truncating to milliseconds as required by the java side,
// even though delayed_work_time is microseconds resolution.
Java_SystemMessageHandler_setDelayedTimer(env,
- g_system_message_handler_obj.Get().obj(), millis);
+ system_message_handler_obj_.obj(), millis);
}
// static
diff --git a/base/message_loop/message_pump_android.h b/base/message_loop/message_pump_android.h
index fd934a7..f3a8ded 100644
--- a/base/message_loop/message_pump_android.h
+++ b/base/message_loop/message_pump_android.h
@@ -7,6 +7,7 @@
#include <jni.h>
+#include "base/android/scoped_java_ref.h"
#include "base/base_export.h"
#include "base/compiler_specific.h"
#include "base/message_loop/message_pump.h"
@@ -36,6 +37,7 @@ class BASE_EXPORT MessagePumpForUI : public MessagePump {
private:
RunLoop* run_loop_;
+ base::android::ScopedJavaGlobalRef<jobject> system_message_handler_obj_;
DISALLOW_COPY_AND_ASSIGN(MessagePumpForUI);
};