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

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

Issue 2431753002: Mus experiment in content shell on Android.
Patch Set: Addressed comments, fixed browser tests and deps. Created 4 years, 2 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
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 a4618aa8b3f97aabb2238f62e4e27cf17f817c6b..d722558244f64668725ec4fb21bece3eabc48f8b 100644
--- a/ui/platform_window/android/platform_window_android.cc
+++ b/ui/platform_window/android/platform_window_android.cc
@@ -9,6 +9,9 @@
#include "base/android/context_utils.h"
#include "base/android/jni_android.h"
+#include "base/bind.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "gpu/ipc/common/gpu_surface_tracker.h"
#include "jni/PlatformWindowAndroid_jni.h"
#include "ui/events/event.h"
#include "ui/events/keycodes/keyboard_code_conversion_android.h"
@@ -90,7 +93,17 @@ void PlatformWindowAndroid::SurfaceCreated(
base::android::ScopedJavaLocalFrame scoped_local_reference_frame(env);
window_ = ANativeWindow_fromSurface(env, jsurface);
}
- delegate_->OnAcceleratedWidgetAvailable(window_, device_pixel_ratio);
+
+ gpu::SurfaceHandle surface_handle =
+ gpu::GpuSurfaceTracker::GetInstance()->AddSurfaceForNativeWidget(window_);
+
+ // Post the notification to the delegate to ensure pending initializations
+ // for the surface have a chance to run.
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+ base::Bind(&PlatformWindowAndroid::NotifyDelegateSurfaceCreated,
+ weak_factory_.GetWeakPtr(), surface_handle,
+ device_pixel_ratio));
}
void PlatformWindowAndroid::SurfaceDestroyed(JNIEnv* env,
@@ -156,18 +169,26 @@ void PlatformWindowAndroid::ReleaseWindow() {
window_ = NULL;
}
+void PlatformWindowAndroid::NotifyDelegateSurfaceCreated(
+ gpu::SurfaceHandle surface_handle,
+ float device_pixel_ratio) {
+ delegate_->OnAcceleratedWidgetAvailable(surface_handle, device_pixel_ratio);
+}
+
////////////////////////////////////////////////////////////////////////////////
// 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(),
+ env, Java_PlatformWindowAndroid_createForCurrentActivity(
+ env,
reinterpret_cast<jlong>(this),
- reinterpret_cast<jlong>(&platform_ime_controller_)).obj());
+ reinterpret_cast<jlong>(&platform_ime_controller_))
+ .obj());
}
void PlatformWindowAndroid::Hide() {

Powered by Google App Engine
This is Rietveld 408576698