Skip to content
This repository has been archived by the owner on Apr 3, 2020. It is now read-only.

Commit

Permalink
[Temp] Make |enable_webvr==0| work.
Browse files Browse the repository at this point in the history
**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
rakuco authored and Maksim Sisov committed Aug 31, 2016
1 parent 33d0d88 commit b67c5c1
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 1 deletion.
7 changes: 6 additions & 1 deletion content/content.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -546,6 +546,11 @@
'has_java_resources': 1,
'R_package': 'org.chromium.content',
'R_package_relpath': 'org/chromium/content',
'conditions': [
['enable_webvr==1', {
'additional_src_dirs': ['../content/public/android/java-optional'],
}],
],
},
'includes': [ '../build/java.gypi' ],
},
Expand Down Expand Up @@ -692,7 +697,7 @@
'conditions': [
['enable_webvr==1', {
'sources': [
'public/android/java/src/org/chromium/content/browser/input/CardboardVRDevice.java',
'public/android/java-optional/src/org/chromium/content/browser/input/CardboardVRDevice.java',
],
'dependencies': [
'../third_party/cardboard-java/cardboard.gyp:cardboard_jar',
Expand Down
12 changes: 12 additions & 0 deletions content/public/android/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,11 @@ android_library("content_java") {
"java/src/org/chromium/content_public/common/ResourceRequestBody.java",
"java/src/org/chromium/content_public/common/ScreenOrientationConstants.java",
]

if (enable_webvr) {
deps += [ "//third_party/cardboard-java:cardboard-java" ]
java_files += [ "java-optional/src/org/chromium/content/browser/input/CardboardVRDevice.java" ]
}
}

java_strings_grd("content_strings_grd") {
Expand Down Expand Up @@ -286,6 +291,13 @@ generate_jar_jni("jar_jni") {
generate_jni("content_jni_headers") {
sources = rebase_path(content_jni_gypi_values.sources, "", "../..")
jni_package = "content"

if (enable_webvr) {
sources += [ "//content/public/android/java-optional/src/org/chromium/content/browser/input/CardboardVRDevice.java" ]
public_deps = [
"//third_party/cardboard-java:cardboard-java",
]
}
}

group("jni") {
Expand Down
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();
}
}

0 comments on commit b67c5c1

Please sign in to comment.