| Index: chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java
|
| index a1fa7920a9c971dc9e1c28c196593320e87f790b..1df5575a977b74ee7d19579bf17c224200264482 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java
|
| @@ -27,7 +27,6 @@ import android.view.WindowManager;
|
| import android.widget.FrameLayout;
|
|
|
| import org.chromium.base.Log;
|
| -import org.chromium.base.PackageUtils;
|
| import org.chromium.base.VisibleForTesting;
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.annotations.JNINamespace;
|
| @@ -86,7 +85,6 @@ public class VrShellDelegate {
|
| "org.chromium.chrome.browser.VRChromeTabbedActivity";
|
|
|
| private static final String VR_CORE_PACKAGE_ID = "com.google.vr.vrcore";
|
| - private static final int VR_CORE_MIN_VERSION = 160723800;
|
|
|
| private static final long REENTER_VR_TIMEOUT_MS = 1000;
|
|
|
| @@ -156,48 +154,6 @@ public class VrShellDelegate {
|
| mVrSupportLevel = mVrDaydreamApi.isDaydreamReadyDevice() ? VR_DAYDREAM : VR_CARDBOARD;
|
| }
|
|
|
| - private boolean verifyOrUpdateVrServices(Tab tab) {
|
| - if (!LibraryLoader.isInitialized()) {
|
| - return false;
|
| - }
|
| - int vrCoreVersion = PackageUtils.getPackageVersion(mActivity, VR_CORE_PACKAGE_ID);
|
| - if (vrCoreVersion < VR_CORE_MIN_VERSION) {
|
| - // Assume upgrade as most common case.
|
| - String infobarText =
|
| - mActivity.getString(R.string.vr_services_check_infobar_update_text);
|
| - String buttonText =
|
| - mActivity.getString(R.string.vr_services_check_infobar_update_button);
|
| - if (vrCoreVersion == -1) {
|
| - // VrCore not installed, make sure it's supported before showing the user a prompt.
|
| - if (Build.VERSION.SDK_INT < ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
|
| - ChromeFeatureList.WEBVR_CARDBOARD_SUPPORT,
|
| - MIN_SDK_VERSION_PARAM_NAME,
|
| - Build.VERSION_CODES.KITKAT)) {
|
| - return false;
|
| - }
|
| - // Supported, but not installed. Ask user to install instead of upgrade.
|
| - infobarText = mActivity.getString(R.string.vr_services_check_infobar_install_text);
|
| - buttonText = mActivity.getString(R.string.vr_services_check_infobar_install_button);
|
| - }
|
| - SimpleConfirmInfoBarBuilder.create(tab,
|
| - new SimpleConfirmInfoBarBuilder.Listener() {
|
| - @Override
|
| - public void onInfoBarDismissed() {}
|
| -
|
| - @Override
|
| - public boolean onInfoBarButtonClicked(boolean isPrimary) {
|
| - mActivity.startActivity(new Intent(Intent.ACTION_VIEW,
|
| - Uri.parse("market://details?id=" + VR_CORE_PACKAGE_ID)));
|
| - return false;
|
| - }
|
| - },
|
| - InfoBarIdentifier.VR_SERVICES_UPGRADE_ANDROID, R.drawable.vr_services,
|
| - infobarText, buttonText, null, true);
|
| - return false;
|
| - }
|
| - return true;
|
| - }
|
| -
|
| /**
|
| * Should be called once the native library is loaded so that the native portion of this class
|
| * can be initialized.
|
| @@ -381,8 +337,8 @@ public class VrShellDelegate {
|
| */
|
| @EnterVRResult
|
| public int enterVRIfNecessary() {
|
| - // TODO(amp): Move the UpdateVrService check to where it can check after a WebVR API call.
|
| - if (!verifyOrUpdateVrServices(mActivity.getActivityTab())) return ENTER_VR_CANCELLED;
|
| + // Update VR support level as it can change at runtime
|
| + updateVrSupportLevel();
|
| if (mVrSupportLevel == VR_NOT_AVAILABLE) return ENTER_VR_CANCELLED;
|
| if (mInVr) return ENTER_VR_NOT_NECESSARY;
|
| if (!canEnterVR(mActivity.getActivityTab())) return ENTER_VR_CANCELLED;
|
| @@ -581,7 +537,55 @@ public class VrShellDelegate {
|
| if (mVrCoreVersionChecker == null) {
|
| mVrCoreVersionChecker = mVrClassesWrapper.createVrCoreVersionChecker();
|
| }
|
| - return mVrCoreVersionChecker.isVrCoreCompatible();
|
| +
|
| + return verifyOrUpdateVrServices(
|
| + mVrCoreVersionChecker.getVrCoreCompatibility(), mActivity.getActivityTab());
|
| + }
|
| +
|
| + private boolean verifyOrUpdateVrServices(int vrCoreCompatibility, Tab tab) {
|
| + if (vrCoreCompatibility == VrCoreVersionChecker.VR_READY) {
|
| + return true;
|
| + }
|
| + if (tab == null) {
|
| + return false;
|
| + }
|
| + // Make sure OS is supported before showing the user a prompt.
|
| + if (Build.VERSION.SDK_INT < ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
|
| + ChromeFeatureList.WEBVR_CARDBOARD_SUPPORT,
|
| + MIN_SDK_VERSION_PARAM_NAME,
|
| + Build.VERSION_CODES.KITKAT)) {
|
| + return false;
|
| + }
|
| +
|
| + String infobarText;
|
| + String buttonText;
|
| + if (vrCoreCompatibility == VrCoreVersionChecker.VR_NOT_AVAILABLE) {
|
| + // Supported, but not installed. Ask user to install instead of upgrade.
|
| + infobarText = mActivity.getString(R.string.vr_services_check_infobar_install_text);
|
| + buttonText = mActivity.getString(R.string.vr_services_check_infobar_install_button);
|
| + } else if (vrCoreCompatibility == VrCoreVersionChecker.VR_OUT_OF_DATE) {
|
| + infobarText = mActivity.getString(R.string.vr_services_check_infobar_update_text);
|
| + buttonText = mActivity.getString(R.string.vr_services_check_infobar_update_button);
|
| + } else {
|
| + Log.e(TAG, "Unknown VrCore compatibility: " + vrCoreCompatibility);
|
| + return false;
|
| + }
|
| +
|
| + SimpleConfirmInfoBarBuilder.create(tab,
|
| + new SimpleConfirmInfoBarBuilder.Listener() {
|
| + @Override
|
| + public void onInfoBarDismissed() {}
|
| +
|
| + @Override
|
| + public boolean onInfoBarButtonClicked(boolean isPrimary) {
|
| + mActivity.startActivity(new Intent(Intent.ACTION_VIEW,
|
| + Uri.parse("market://details?id=" + VR_CORE_PACKAGE_ID)));
|
| + return false;
|
| + }
|
| + },
|
| + InfoBarIdentifier.VR_SERVICES_UPGRADE_ANDROID, R.drawable.vr_services, infobarText,
|
| + buttonText, null, true);
|
| + return false;
|
| }
|
|
|
| private boolean createVrShell() {
|
|
|