This repository has been archived by the owner on Apr 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 212
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
**IMPORTANT** We actually intend to fix this properly. We are cherry-picking this commit from the crosswalk-18 branch first in order to have a stable baseline with no WebVR support propagating from Crosswalk 21 to 20 to 19. After that, we can start working on fixing this in 21 and 20 and, if there is enough time, 19 too. *From the original commit message:* Move `CardboardVRDevice.java` to a different directory so that it is not built by the `content_java` target even if `enable_webvr==0`. This is a prerequisite for getting the code to build with `enable_webvr=0`. BUG=XWALK-6746 (cherry picked from commit e593418) M53 rebasing notes: added GN support: > [Temp] Make |enable_webvr==false| work in GN. > > This is a change that should be squashed into "[Temp] Make > |enable_webvr==0| work", and just adds the required changes to the GN > build so that it is aware of the fact that CardboardVRDevice.java > resides in another directory. > > BUG=XWALK-6746
- Loading branch information
Showing
3 changed files
with
106 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
88 changes: 88 additions & 0 deletions
88
...ublic/android/java-optional/src/org/chromium/content/browser/input/CardboardVRDevice.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
// Copyright 2015 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.browser.input; | ||
|
||
import android.content.Context; | ||
|
||
import com.google.vrtoolkit.cardboard.CardboardDeviceParams; | ||
import com.google.vrtoolkit.cardboard.FieldOfView; | ||
import com.google.vrtoolkit.cardboard.HeadMountedDisplay; | ||
import com.google.vrtoolkit.cardboard.HeadMountedDisplayManager; | ||
import com.google.vrtoolkit.cardboard.ScreenParams; | ||
import com.google.vrtoolkit.cardboard.sensors.HeadTracker; | ||
|
||
import org.chromium.base.annotations.CalledByNative; | ||
import org.chromium.base.annotations.JNINamespace; | ||
|
||
/** | ||
* This is the implementation of the C++ counterpart CardboardVRDevice. | ||
*/ | ||
@JNINamespace("content") | ||
class CardboardVRDevice { | ||
private static final String TAG = "CardboardVRDevice"; | ||
private final HeadMountedDisplayManager mHMDManager; | ||
private final HeadTracker mHeadTracker; | ||
|
||
@CalledByNative | ||
private static CardboardVRDevice create(Context context) { | ||
return new CardboardVRDevice(context); | ||
} | ||
|
||
private CardboardVRDevice(Context context) { | ||
mHMDManager = new HeadMountedDisplayManager(context); | ||
|
||
mHeadTracker = HeadTracker.createFromContext(context); | ||
mHeadTracker.setNeckModelEnabled(true); | ||
mHeadTracker.startTracking(); | ||
} | ||
|
||
@CalledByNative | ||
private void getFieldOfView(float[] outFov) { | ||
HeadMountedDisplay hmd = mHMDManager.getHeadMountedDisplay(); | ||
CardboardDeviceParams deviceParams = hmd.getCardboardDeviceParams(); | ||
FieldOfView fov = deviceParams.getLeftEyeMaxFov(); | ||
outFov[0] = fov.getTop(); | ||
outFov[1] = fov.getBottom(); | ||
outFov[2] = fov.getLeft(); | ||
outFov[3] = fov.getRight(); | ||
} | ||
|
||
@CalledByNative | ||
private float getIpd() { | ||
HeadMountedDisplay hmd = mHMDManager.getHeadMountedDisplay(); | ||
CardboardDeviceParams deviceParams = hmd.getCardboardDeviceParams(); | ||
return deviceParams.getInterLensDistance(); | ||
} | ||
|
||
@CalledByNative | ||
private String getDeviceName() { | ||
HeadMountedDisplay hmd = mHMDManager.getHeadMountedDisplay(); | ||
CardboardDeviceParams deviceParams = hmd.getCardboardDeviceParams(); | ||
return deviceParams.getVendor() + " " + deviceParams.getModel(); | ||
} | ||
|
||
@CalledByNative | ||
private void getScreenSize(int[] outSize) { | ||
HeadMountedDisplay hmd = mHMDManager.getHeadMountedDisplay(); | ||
ScreenParams screenParams = hmd.getScreenParams(); | ||
outSize[0] = screenParams.getWidth(); | ||
outSize[1] = screenParams.getHeight(); | ||
} | ||
|
||
@CalledByNative | ||
private void getSensorState(float[] outMatrix) { | ||
mHeadTracker.getLastHeadView(outMatrix, 0); | ||
} | ||
|
||
@CalledByNative | ||
private void stopTracking() { | ||
mHeadTracker.stopTracking(); | ||
} | ||
|
||
@CalledByNative | ||
private void resetSensor() { | ||
mHeadTracker.resetTracker(); | ||
} | ||
} |