Index: chrome/android/java/src/org/chromium/chrome/browser/VrActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/VrActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/VrActivity.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4b947fdd17bfa21170a985679885380bbd2cf416 |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/VrActivity.java |
@@ -0,0 +1,78 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser; |
+ |
+import android.graphics.PixelFormat; |
+import android.graphics.SurfaceTexture; |
+import android.view.View; |
+import android.view.Window; |
+import android.view.WindowManager; |
+ |
+import org.chromium.chrome.browser.vr_shell.VrShell; |
+ |
+/** |
+ * A subclass of ChromeTabbedActivity, used in Daydream VR mode. |
+ * |
+ */ |
+public class VrActivity extends ChromeTabbedActivity { |
+ private VrShell mVrShellView; |
+ |
+ @Override |
+ public void onResume() { |
+ super.onResume(); |
+ mVrShellView.onResume(); |
+ } |
+ |
+ @Override |
+ public void onPause() { |
+ super.onPause(); |
+ mVrShellView.onPause(); |
+ } |
+ |
+ @Override |
+ public void onDestroyInternal() { |
+ super.onDestroyInternal(); |
+ if (mVrShellView != null) { |
+ mVrShellView.shutdown(); |
+ mVrShellView = null; |
+ } |
+ } |
+ |
+ @Override |
+ public void initializeCompositor() { |
+ super.initializeCompositor(); |
+ mVrShellView.onNativeLibraryReady(); |
+ } |
+ |
+ @Override |
+ public void postInflationStartup() { |
+ super.postInflationStartup(); |
+ addVrViews(); |
+ setupVrModeWindowFlags(); |
+ } |
+ |
+ public void replaceCompositorSurface(SurfaceTexture surfaceTexture) { |
+ if (getCompositorViewHolder() != null) { |
+ getCompositorViewHolder().replaceCompositorSurface(surfaceTexture); |
+ } |
+ } |
+ |
+ private void addVrViews() { |
+ mVrShellView = new VrShell(this); |
+ WindowManager.LayoutParams params = new WindowManager.LayoutParams( |
+ WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, |
+ WindowManager.LayoutParams.TYPE_APPLICATION, 0, PixelFormat.OPAQUE); |
+ this.addContentView(mVrShellView, params); |
+ } |
+ |
+ private void setupVrModeWindowFlags() { |
+ Window window = getWindow(); |
+ window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); |
+ window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
+ | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
+ | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN |
+ | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); |
+ } |
+} |