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

Unified Diff: ui/platform_window/android/platform_window_android.cc

Issue 1455793005: Adding a way to associate Android Activities with PlatformWindowAndroid (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@auraclank_upstream_native_widget
Patch Set: Addressing feedback Created 5 years, 1 month 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
Index: ui/platform_window/android/platform_window_android.cc
diff --git a/ui/platform_window/android/platform_window_android.cc b/ui/platform_window/android/platform_window_android.cc
index 49b6ba7b3357786af2331befc6823c7d3abf1cfd..8a05d239857929758b411d4ea7b0f1d681d7cd12 100644
--- a/ui/platform_window/android/platform_window_android.cc
+++ b/ui/platform_window/android/platform_window_android.cc
@@ -51,6 +51,12 @@ bool PlatformWindowAndroid::Register(JNIEnv* env) {
return RegisterNativesImpl(env);
}
+//static
+PlatformWindowAndroid* PlatformWindowAndroid::From(
+ PlatformWindow* platform_window) {
+ return static_cast<PlatformWindowAndroid*>(platform_window);
+}
+
PlatformWindowAndroid::PlatformWindowAndroid(PlatformWindowDelegate* delegate)
: delegate_(delegate),
window_(NULL),
@@ -68,6 +74,21 @@ PlatformWindowAndroid::~PlatformWindowAndroid() {
}
}
+void PlatformWindowAndroid::AttachToActivity(jobject activity) {
+ JNIEnv* env = base::android::AttachCurrentThread();
sadrul 2015/12/01 21:29:34 Should this DCHECK(!IsAttachedToActivity())? Or is
mfomitchev 2015/12/01 21:50:50 I'll add the DCHECK for now. If we need to change
+ base::android::ScopedJavaLocalRef<jobject> jpwa =
+ Java_PlatformWindowAndroid_createForActivity(
+ env,
+ activity,
+ reinterpret_cast<jlong>(this),
+ reinterpret_cast<jlong>(&platform_ime_controller_));
+ java_platform_window_android_ = JavaObjectWeakGlobalRef(env, jpwa.obj());
+}
+
+bool PlatformWindowAndroid::IsAttachedToActivity() {
+ return !java_platform_window_android_.is_empty();
+}
+
void PlatformWindowAndroid::Destroy(JNIEnv* env, jobject obj) {
delegate_->OnClosed();
}
@@ -152,14 +173,7 @@ void PlatformWindowAndroid::ReleaseWindow() {
// PlatformWindowAndroid, PlatformWindow implementation:
void PlatformWindowAndroid::Show() {
- if (!java_platform_window_android_.is_empty())
- return;
- JNIEnv* env = base::android::AttachCurrentThread();
- java_platform_window_android_ = JavaObjectWeakGlobalRef(
- env, Java_PlatformWindowAndroid_createForActivity(
- env, base::android::GetApplicationContext(),
- reinterpret_cast<jlong>(this),
- reinterpret_cast<jlong>(&platform_ime_controller_)).obj());
+ DCHECK(IsAttachedToActivity());
}
sadrul 2015/12/01 21:29:34 Should this set visibility on the android SurfaceV
mfomitchev 2015/12/01 21:50:51 Considering we are not doing anything in Hide(), I
void PlatformWindowAndroid::Hide() {

Powered by Google App Engine
This is Rietveld 408576698