| Index: chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java
|
| index 6112be34e224d80e8ea6d69d70165874a9ea9491..777990dbddc45e396757af2cf842843b94fa8125 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java
|
| @@ -23,6 +23,7 @@ import com.google.vr.ndk.base.GvrLayout;
|
| import org.chromium.base.CommandLine;
|
| import org.chromium.base.Log;
|
| import org.chromium.base.ThreadUtils;
|
| +import org.chromium.base.VisibleForTesting;
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.annotations.JNINamespace;
|
| import org.chromium.chrome.browser.ChromeActivity;
|
| @@ -118,6 +119,8 @@ public class VrShellImpl
|
|
|
| private MotionEventSynthesizer mMotionEventSynthesizer;
|
|
|
| + private OnDispatchTouchEventCallback mOnDispatchTouchEventForTesting;
|
| +
|
| public VrShellImpl(
|
| ChromeActivity activity, VrShellDelegate delegate, TabModelSelector tabModelSelector) {
|
| super(activity);
|
| @@ -443,11 +446,18 @@ public class VrShellImpl
|
| // Normally, touch event is dispatched to presentation view only if the phone is paired with
|
| // a Cardboard viewer. This is annoying when we just want to quickly verify a Cardboard
|
| // behavior. This allows us to trigger cardboard trigger event without pair to a Cardboard.
|
| + boolean cardboardTriggered = false;
|
| if (CommandLine.getInstance().hasSwitch(ChromeSwitches.ENABLE_VR_SHELL_DEV)
|
| && event.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
| nativeOnTriggerEvent(mNativeVrShell);
|
| + cardboardTriggered = true;
|
| + }
|
| + boolean parentConsumed = super.dispatchTouchEvent(event);
|
| + if (mOnDispatchTouchEventForTesting != null) {
|
| + mOnDispatchTouchEventForTesting.onDispatchTouchEvent(
|
| + parentConsumed, cardboardTriggered);
|
| }
|
| - return super.dispatchTouchEvent(event);
|
| + return parentConsumed;
|
| }
|
|
|
| @Override
|
| @@ -628,6 +638,16 @@ public class VrShellImpl
|
| @Override
|
| public void removeWindowAndroidChangedObserver(WindowAndroidChangedObserver observer) {}
|
|
|
| + /**
|
| + * Sets the runnable that will be run when VrShellImpl's dispatchTouchEvent
|
| + * is run and the parent consumed the event.
|
| + * @param runnable The Runnable that will be run
|
| + */
|
| + @VisibleForTesting
|
| + public void setOnDispatchTouchEventForTesting(OnDispatchTouchEventCallback callback) {
|
| + mOnDispatchTouchEventForTesting = callback;
|
| + }
|
| +
|
| private native long nativeInit(WebContents uiWebContents, long nativeContentWindowAndroid,
|
| long nativeUiWindowAndroid, boolean forWebVR, VrShellDelegate delegate, long gvrApi,
|
| boolean reprojectedRendering);
|
|
|