Commit e46dbb1f authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: Make MotionEventSynthesizer a public interface

MotionEventSynthesizer class is used by Chrome (VR) and content
internally. This CL splits it into public interface with create
method and implementation class. Helps remove the exception rule
in DEPS.

Bug: 617324
Change-Id: I99fa8c01089ede078a7c2b2929897fdbbd7b40aa
Reviewed-on: https://chromium-review.googlesource.com/1058873
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avatarMaria Khomenko <mariakhomenko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561360}
parent 7a4bea4f
...@@ -23,7 +23,6 @@ include_rules = [ ...@@ -23,7 +23,6 @@ include_rules = [
"!content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java", "!content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java",
"!content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java", "!content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java",
"!content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncherHelper.java", "!content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncherHelper.java",
"!content/public/android/java/src/org/chromium/content/browser/MotionEventSynthesizer.java",
"!content/public/android/java/src/org/chromium/content/browser/ScreenOrientationProvider.java", "!content/public/android/java/src/org/chromium/content/browser/ScreenOrientationProvider.java",
"+device/gamepad/android/java", "+device/gamepad/android/java",
......
...@@ -9,7 +9,7 @@ import android.view.View; ...@@ -9,7 +9,7 @@ import android.view.View;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.content.browser.MotionEventSynthesizer; import org.chromium.content_public.browser.MotionEventSynthesizer;
/** /**
* Forwards events for Java native UI pages to MotionEventSynthesizer. * Forwards events for Java native UI pages to MotionEventSynthesizer.
...@@ -21,7 +21,7 @@ public class AndroidUiGestureTarget { ...@@ -21,7 +21,7 @@ public class AndroidUiGestureTarget {
public AndroidUiGestureTarget( public AndroidUiGestureTarget(
View target, float scaleFactor, float scrollRatio, int touchSlop) { View target, float scaleFactor, float scrollRatio, int touchSlop) {
mMotionEventSynthesizer = new MotionEventSynthesizer(target); mMotionEventSynthesizer = MotionEventSynthesizer.create(target);
mNativePointer = nativeInit(scaleFactor, scrollRatio, touchSlop); mNativePointer = nativeInit(scaleFactor, scrollRatio, touchSlop);
} }
......
...@@ -133,7 +133,7 @@ android_library("content_java") { ...@@ -133,7 +133,7 @@ android_library("content_java") {
"java/src/org/chromium/content/browser/LauncherThread.java", "java/src/org/chromium/content/browser/LauncherThread.java",
"java/src/org/chromium/content/browser/MediaSessionImpl.java", "java/src/org/chromium/content/browser/MediaSessionImpl.java",
"java/src/org/chromium/content/browser/MemoryMonitorAndroid.java", "java/src/org/chromium/content/browser/MemoryMonitorAndroid.java",
"java/src/org/chromium/content/browser/MotionEventSynthesizer.java", "java/src/org/chromium/content/browser/MotionEventSynthesizerImpl.java",
"java/src/org/chromium/content/browser/NfcHost.java", "java/src/org/chromium/content/browser/NfcHost.java",
"java/src/org/chromium/content/browser/PepperPluginManager.java", "java/src/org/chromium/content/browser/PepperPluginManager.java",
"java/src/org/chromium/content/browser/PopupController.java", "java/src/org/chromium/content/browser/PopupController.java",
...@@ -246,6 +246,7 @@ android_library("content_java") { ...@@ -246,6 +246,7 @@ android_library("content_java") {
"java/src/org/chromium/content_public/browser/MediaSession.java", "java/src/org/chromium/content_public/browser/MediaSession.java",
"java/src/org/chromium/content_public/browser/MediaSessionObserver.java", "java/src/org/chromium/content_public/browser/MediaSessionObserver.java",
"java/src/org/chromium/content_public/browser/MessagePort.java", "java/src/org/chromium/content_public/browser/MessagePort.java",
"java/src/org/chromium/content_public/browser/MotionEventSynthesizer.java",
"java/src/org/chromium/content_public/browser/NavigationController.java", "java/src/org/chromium/content_public/browser/NavigationController.java",
"java/src/org/chromium/content_public/browser/NavigationEntry.java", "java/src/org/chromium/content_public/browser/NavigationEntry.java",
"java/src/org/chromium/content_public/browser/NavigationHistory.java", "java/src/org/chromium/content_public/browser/NavigationHistory.java",
......
...@@ -10,10 +10,12 @@ import android.view.MotionEvent.PointerCoords; ...@@ -10,10 +10,12 @@ import android.view.MotionEvent.PointerCoords;
import android.view.MotionEvent.PointerProperties; import android.view.MotionEvent.PointerProperties;
import android.view.View; import android.view.View;
import org.chromium.content_public.browser.MotionEventSynthesizer;
/** /**
* Injects synthetic touch events. All the coordinates are of physical unit. * Injects synthetic touch events. All the coordinates are of physical unit.
*/ */
public class MotionEventSynthesizer { public class MotionEventSynthesizerImpl implements MotionEventSynthesizer {
private static final int MAX_NUM_POINTERS = 16; private static final int MAX_NUM_POINTERS = 16;
private final PointerProperties[] mPointerProperties; private final PointerProperties[] mPointerProperties;
...@@ -21,7 +23,11 @@ public class MotionEventSynthesizer { ...@@ -21,7 +23,11 @@ public class MotionEventSynthesizer {
private final View mTarget; private final View mTarget;
private long mDownTimeInMs; private long mDownTimeInMs;
public MotionEventSynthesizer(View target) { public static MotionEventSynthesizerImpl create(View target) {
return new MotionEventSynthesizerImpl(target);
}
private MotionEventSynthesizerImpl(View target) {
assert target != null; assert target != null;
mTarget = target; mTarget = target;
mPointerProperties = new PointerProperties[MAX_NUM_POINTERS]; mPointerProperties = new PointerProperties[MAX_NUM_POINTERS];
...@@ -37,6 +43,7 @@ public class MotionEventSynthesizer { ...@@ -37,6 +43,7 @@ public class MotionEventSynthesizer {
* @param id Id property of the point. * @param id Id property of the point.
* @param toolType ToolType property of the point. * @param toolType ToolType property of the point.
*/ */
@Override
public void setPointer(int index, int x, int y, int id, int toolType) { public void setPointer(int index, int x, int y, int id, int toolType) {
assert (0 <= index && index < MAX_NUM_POINTERS); assert (0 <= index && index < MAX_NUM_POINTERS);
...@@ -85,6 +92,7 @@ public class MotionEventSynthesizer { ...@@ -85,6 +92,7 @@ public class MotionEventSynthesizer {
* @param pointerCount The number of points associated with the event. * @param pointerCount The number of points associated with the event.
* @param timeInMs Timestamp for the event. * @param timeInMs Timestamp for the event.
*/ */
@Override
public void inject(int action, int pointerCount, long timeInMs) { public void inject(int action, int pointerCount, long timeInMs) {
switch (action) { switch (action) {
case MotionEventAction.START: { case MotionEventAction.START: {
......
...@@ -14,7 +14,7 @@ import org.chromium.base.annotations.JNINamespace; ...@@ -14,7 +14,7 @@ import org.chromium.base.annotations.JNINamespace;
*/ */
@JNINamespace("content") @JNINamespace("content")
public class SyntheticGestureTarget { public class SyntheticGestureTarget {
private final MotionEventSynthesizer mMotionEventSynthesizer; private final MotionEventSynthesizerImpl mMotionEventSynthesizer;
@CalledByNative @CalledByNative
private static SyntheticGestureTarget create(View target) { private static SyntheticGestureTarget create(View target) {
...@@ -22,7 +22,7 @@ public class SyntheticGestureTarget { ...@@ -22,7 +22,7 @@ public class SyntheticGestureTarget {
} }
private SyntheticGestureTarget(View target) { private SyntheticGestureTarget(View target) {
mMotionEventSynthesizer = new MotionEventSynthesizer(target); mMotionEventSynthesizer = MotionEventSynthesizerImpl.create(target);
} }
@CalledByNative @CalledByNative
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.content_public.browser;
import android.view.View;
import org.chromium.content.browser.MotionEventSynthesizerImpl;
/**
* Injects synthetic touch events. All the coordinates are of physical unit.
*/
public interface MotionEventSynthesizer {
public static MotionEventSynthesizer create(View target) {
return MotionEventSynthesizerImpl.create(target);
}
/**
* Sets the coordinate of the point at which a touch event takes place.
*
* @param index Index of the point when there are multiple points.
* @param x X coordinate of the point.
* @param x Y coordinate of the point.
* @param id Id property of the point.
* @param toolType ToolType property of the point.
*/
void setPointer(int index, int x, int y, int id, int toolType);
/**
* Injects a synthetic action with the preset points and delta.
*
* @param action Type of the action to inject.
* @param pointerCount The number of points associated with the event.
* @param timeInMs Timestamp for the event.
*/
void inject(int action, int pointerCount, long timeInMs);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment