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 8f10219090afd7f7b84d877a0a906923ca86e72e..ebbe2440ef609f77c7ec2bbcdc8ef031b3796710 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 |
@@ -43,9 +43,11 @@ public class VrShellDelegate { |
private Class<? extends VrShell> mVrShellClass; |
private Class<? extends NonPresentingGvrContext> mNonPresentingGvrContextClass; |
private Class<? extends VrDaydreamApi> mVrDaydreamApiClass; |
+ private Class<? extends VrCoreVersionChecker> mVrCoreVersionCheckerClass; |
private VrShell mVrShell; |
private NonPresentingGvrContext mNonPresentingGvrContext; |
private VrDaydreamApi mVrDaydreamApi; |
+ private VrCoreVersionChecker mVrCoreVersionChecker; |
private boolean mInVr; |
private int mRestoreSystemUiVisibilityFlag = -1; |
private int mRestoreOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; |
@@ -59,8 +61,7 @@ public class VrShellDelegate { |
public VrShellDelegate(ChromeTabbedActivity activity) { |
mActivity = activity; |
- |
- mVrAvailable = maybeFindVrClasses(); |
+ mVrAvailable = maybeFindVrClasses() && isVrCoreCompatible(); |
createVrDaydreamApi(); |
} |
@@ -84,6 +85,8 @@ public class VrShellDelegate { |
"org.chromium.chrome.browser.vr_shell.NonPresentingGvrContextImpl"); |
mVrDaydreamApiClass = (Class<? extends VrDaydreamApi>) Class.forName( |
"org.chromium.chrome.browser.vr_shell.VrDaydreamApiImpl"); |
+ mVrCoreVersionCheckerClass = (Class<? extends VrCoreVersionChecker>) Class.forName( |
agrieve
2016/11/10 19:16:29
Lot of reflection here... How about changing this
bshe
2016/11/10 20:59:25
Agree that we shouldn't have so many reflections.
agrieve
2016/11/10 21:47:04
SG - this should be removed then when you remove t
bshe
2016/11/11 17:43:02
hum. Probably needs to be after x86 and x64 suppor
|
+ "org.chromium.chrome.browser.vr_shell.VrCoreVersionCheckerImpl"); |
return true; |
} catch (ClassNotFoundException e) { |
mVrShellClass = null; |
@@ -285,6 +288,24 @@ public class VrShellDelegate { |
} |
} |
+ private boolean isVrCoreCompatible() { |
+ if (mVrCoreVersionChecker != null) { |
+ return mVrCoreVersionChecker.isVrCoreCompatible(); |
+ } |
+ |
+ try { |
+ Constructor<?> mVrCoreVersionCheckerConstructor = |
+ mVrCoreVersionCheckerClass.getConstructor(Context.class); |
+ mVrCoreVersionChecker = |
+ (VrCoreVersionChecker) mVrCoreVersionCheckerConstructor.newInstance(mActivity); |
+ } catch (InstantiationException | IllegalAccessException | IllegalArgumentException |
+ | InvocationTargetException | NoSuchMethodException e) { |
+ Log.e(TAG, "Unable to instantiate VrCoreVersionChecker", e); |
+ return false; |
+ } |
+ return mVrCoreVersionChecker.isVrCoreCompatible(); |
+ } |
+ |
private boolean createVrDaydreamApi() { |
if (!mVrAvailable) return false; |