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

Unified Diff: services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java

Issue 856063002: Adding keyboard service. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix local variable Created 5 years, 11 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: services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java
diff --git a/services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java b/services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java
index e8eeb4ccd6116aaf067148a4164e094766a1a2b9..712de957abac887b7cd18d3337bb7e4f8c451983 100644
--- a/services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java
+++ b/services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java
@@ -6,10 +6,12 @@ package org.chromium.mojo;
import android.app.Activity;
import android.content.Context;
+import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
+import android.view.View;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
@@ -32,6 +34,9 @@ public class PlatformViewportAndroid extends SurfaceView {
public PlatformViewportAndroid(Context context, long nativeViewport) {
super(context);
+ setFocusable(true);
+ setFocusableInTouchMode(true);
+
mNativeMojoViewport = nativeViewport;
assert mNativeMojoViewport != 0;
@@ -68,11 +73,49 @@ public class PlatformViewportAndroid extends SurfaceView {
}
@Override
+ protected void onWindowVisibilityChanged(int visibility) {
+ super.onWindowVisibilityChanged(visibility);
+ if (visibility == View.VISIBLE) {
+ requestFocusFromTouch();
+ requestFocus();
+ }
+ }
+
+ @Override
public boolean onTouchEvent(MotionEvent event) {
return nativeTouchEvent(mNativeMojoViewport, event.getPointerId(0), event.getAction(),
event.getX(), event.getY(), event.getEventTime());
}
+ @Override
+ public boolean dispatchKeyEvent(KeyEvent event) {
+ if (privateDispatchKeyEvent(event)) {
+ return true;
+ }
+ return super.dispatchKeyEvent(event);
+ }
+
+ @Override
+ public boolean dispatchKeyEventPreIme(KeyEvent event) {
+ if (privateDispatchKeyEvent(event)) {
+ return true;
+ }
+ return super.dispatchKeyEventPreIme(event);
+ }
+
+ @Override
+ public boolean dispatchKeyShortcutEvent(KeyEvent event) {
+ if (privateDispatchKeyEvent(event)) {
+ return true;
+ }
+ return super.dispatchKeyShortcutEvent(event);
+ }
+
+ private boolean privateDispatchKeyEvent(KeyEvent event) {
+ return nativeKeyEvent(mNativeMojoViewport, event.getAction() == KeyEvent.ACTION_DOWN,
+ event.getKeyCode(), event.getUnicodeChar());
+ }
+
private static native void nativeDestroy(long nativePlatformViewportAndroid);
private static native void nativeSurfaceCreated(
@@ -90,4 +133,7 @@ public class PlatformViewportAndroid extends SurfaceView {
int action,
float x, float y,
long timeMs);
+
+ private static native boolean nativeKeyEvent(
+ long nativePlatformViewportAndroid, boolean pressed, int keyCode, int unicodeCharacter);
}
« no previous file with comments | « mojo/services/keyboard/public/interfaces/keyboard.mojom ('k') | services/native_viewport/platform_viewport_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698