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 51c48a4d820c67f250d8727f0a238473accb06ce..479497f48356fc24e3834c44735d0461536440c4 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 |
@@ -11,6 +11,7 @@ import android.content.Context; |
import android.content.Intent; |
import android.content.pm.ActivityInfo; |
import android.content.res.Configuration; |
+import android.net.Uri; |
import android.os.Build; |
import android.os.Handler; |
import android.os.StrictMode; |
@@ -26,13 +27,18 @@ 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; |
import org.chromium.base.library_loader.LibraryLoader; |
+ |
+import org.chromium.chrome.R; |
import org.chromium.chrome.browser.ChromeActivity; |
import org.chromium.chrome.browser.ChromeFeatureList; |
import org.chromium.chrome.browser.ChromeTabbedActivity; |
+import org.chromium.chrome.browser.infobar.InfoBarIdentifier; |
+import org.chromium.chrome.browser.infobar.SimpleConfirmInfoBarBuilder; |
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; |
import org.chromium.chrome.browser.tab.Tab; |
@@ -77,6 +83,9 @@ public class VrShellDelegate { |
private static final String VR_ACTIVITY_ALIAS = |
"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; // recent: 160722870,160723800 |
Bernhard Bauer
2017/02/16 12:12:51
What does that comment mean?
amp
2017/02/16 18:41:35
These were recent versions of the package. I stil
amp
2017/02/17 01:50:38
Done.
|
+ |
private static final long REENTER_VR_TIMEOUT_MS = 1000; |
private final ChromeTabbedActivity mActivity; |
@@ -279,6 +288,38 @@ public class VrShellDelegate { |
if (!LibraryLoader.isInitialized()) { |
return false; |
} |
+ // TODO(amp): Figure out how this works with isVrCoreCompatible check. |
+ int vrCoreVersion = PackageUtils.getPackageVersion(mActivity, VR_CORE_PACKAGE_ID); |
+ if (vrCoreVersion < VR_CORE_MIN_VERSION) { |
+ // Assume upgrade as most comment case. |
+ String actionText = |
+ mActivity.getString(R.string.vr_services_check_infobar_update_action); |
+ if (vrCoreVersion == -1) { |
+ // VrCore not installed, make sure it's supported first |
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { |
+ // Not supported |
+ return false; |
+ } |
+ // Supported, but not installed. Ask user to install instead of upgrade. |
+ actionText = mActivity.getString(R.string.vr_services_check_infobar_install_action); |
+ } |
+ 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, R.drawable.vr_services, |
+ mActivity.getString(R.string.vr_services_check_infobar_text, actionText), |
+ actionText, null, true); |
+ return false; |
+ } |
// If vr isn't in the build, or we haven't initialized yet, or vr shell is not enabled and |
// this is not a web vr request, then return immediately. |
if (mVrSupportLevel == VR_NOT_AVAILABLE || mNativeVrShellDelegate == 0 |