Chromium Code Reviews| 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 |