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); |