Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java

Issue 2699163003: Use VrCoreCompatibility check for whether to show an infobar instead of Android package manager. (Closed)
Patch Set: Check for OS support before vr core state Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrCoreVersionCheckerImpl.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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() {
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrCoreVersionCheckerImpl.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698