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

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

Issue 2699643003: Show an infobar when VR services need to be installed or updated. (Closed)
Patch Set: Add install vs update check, final icon resources. 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
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

Powered by Google App Engine
This is Rietveld 408576698