| Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
| index e4516704b844dbf988ed4a45b330130a1d1772ca..838cf37744ec75ec35877bcf6dbf2b6a76bb1e3d 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
| @@ -9,6 +9,7 @@ import android.app.Activity;
|
| import android.app.ActivityManager;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| +import android.content.pm.ActivityInfo;
|
| import android.graphics.Color;
|
| import android.net.Uri;
|
| import android.os.Build;
|
| @@ -111,6 +112,19 @@ import java.lang.annotation.RetentionPolicy;
|
| import java.lang.ref.WeakReference;
|
| import java.util.List;
|
|
|
| +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;
|
| +
|
| +import org.chromium.ui.base.WindowAndroid;
|
| +
|
| +import org.chromium.base.Log;
|
| +import org.chromium.chrome.browser.tab.Tab;
|
| +
|
| /**
|
| * This is the main activity for ChromeMobile when not running in document mode. All the tabs
|
| * are accessible via a chrome specific tab switching UI.
|
| @@ -215,6 +229,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| // Time at which an intent was received and handled.
|
| private long mIntentHandlingTimeMs = 0;
|
|
|
| + private VrShell mVrShellView;
|
| +
|
| private class TabbedAssistStatusHandler extends AssistStatusHandler {
|
| public TabbedAssistStatusHandler(Activity activity) {
|
| super(activity);
|
| @@ -291,6 +307,13 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| if (state != null && state.containsKey(FRE_RUNNING)) {
|
| mIsOnFirstRun = state.getBoolean(FRE_RUNNING);
|
| }
|
| + if (getTabModelSelector().getCurrentTab() != null) {
|
| + Log.e("bshe", "current tab exist!!!!!!!");
|
| + }
|
| + Log.e("bshe", "compositor=====");
|
| + if (mVrShellView != null) {
|
| + mVrShellView.onNativeLibraryReady(getWindowAndroid());
|
| + }
|
| } finally {
|
| TraceEvent.end("ChromeTabbedActivity.initializeCompositor");
|
| }
|
| @@ -333,7 +356,9 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
|
|
| refreshSignIn();
|
|
|
| - initializeUI();
|
| + if (!mVrMode) {
|
| + initializeUI();
|
| + }
|
|
|
| // The dataset has already been created, we need to initialize our state.
|
| mTabModelSelectorImpl.notifyChanged();
|
| @@ -353,6 +378,18 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| }
|
|
|
| @Override
|
| + public void onResume() {
|
| + super.onResume();
|
| + if (mVrShellView != null) mVrShellView.onResume();
|
| + }
|
| +
|
| + @Override
|
| + public void onPause() {
|
| + super.onPause();
|
| + if (mVrShellView != null) mVrShellView.onPause();
|
| + }
|
| +
|
| + @Override
|
| public void onResumeWithNative() {
|
| super.onResumeWithNative();
|
| CookiesFetcher.restoreCookies(this);
|
| @@ -391,6 +428,9 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| public void onStart() {
|
| super.onStart();
|
| StartupMetrics.getInstance().updateIntent(getIntent());
|
| + if (getIntent().getBooleanExtra("android.intent.extra.VR_LAUNCH", false /* default */)) {
|
| + Log.e("bshe", "from vr launder");
|
| + }
|
| }
|
|
|
| @Override
|
| @@ -474,15 +514,17 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| mLayoutManager.addOverviewModeObserver(this);
|
|
|
| // TODO(yusufo): get rid of findViewById(R.id.url_bar).
|
| - initializeCompositorContent(mLayoutManager, findViewById(R.id.url_bar),
|
| - mContentContainer, mControlContainer);
|
| + if (!mVrMode) {
|
| + initializeCompositorContent(mLayoutManager, findViewById(R.id.url_bar),
|
| + mContentContainer, mControlContainer);
|
| + }
|
|
|
| mTabModelSelectorImpl.setOverviewModeBehavior(mLayoutManager);
|
|
|
| mUndoBarPopupController.initialize();
|
|
|
| // Adjust the content container if we're not entering fullscreen mode.
|
| - if (getFullscreenManager() == null) {
|
| + if (getFullscreenManager() == null && !mVrMode) {
|
| float controlHeight = getResources().getDimension(R.dimen.control_container_height);
|
| ((FrameLayout.LayoutParams) mContentContainer.getLayoutParams()).topMargin =
|
| (int) controlHeight;
|
| @@ -822,7 +864,9 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| assert false : "Unknown TabOpenType: " + tabOpenType;
|
| break;
|
| }
|
| - getToolbarManager().setUrlBarFocus(false);
|
| + if (!mVrMode) {
|
| + getToolbarManager().setUrlBarFocus(false);
|
| + }
|
| }
|
|
|
| @Override
|
| @@ -921,6 +965,11 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
|
|
| @Override
|
| public void postInflationStartup() {
|
| + if (mVrMode) {
|
| + addVrViews();
|
| + setupVrModeWindowFlags();
|
| + }
|
| +
|
| super.postInflationStartup();
|
|
|
| // Critical path for startup. Create the minimum objects needed
|
| @@ -935,8 +984,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN
|
| | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
|
|
| - mContentContainer = (ViewGroup) findViewById(android.R.id.content);
|
| - mControlContainer = (ToolbarControlContainer) findViewById(R.id.control_container);
|
| + if (!mVrMode) {
|
| + mContentContainer = (ViewGroup) findViewById(android.R.id.content);
|
| + mControlContainer = (ToolbarControlContainer) findViewById(R.id.control_container);
|
| + }
|
|
|
| mUndoBarPopupController = new UndoBarController(this, mTabModelSelectorImpl,
|
| getSnackbarManager());
|
| @@ -1004,11 +1055,34 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| });
|
| }
|
|
|
| + protected void onTabReady(Tab tab) {
|
| + if (mVrShellView != null) mVrShellView.onWebContentsReady(tab.getWebContents());
|
| + }
|
| +
|
| + private void addVrViews() {
|
| + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
| + 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);
|
| + }
|
| +
|
| private void createTabModelSelectorImpl(Bundle savedInstanceState) {
|
| // We determine the model as soon as possible so every systems get initialized coherently.
|
| boolean startIncognito = savedInstanceState != null
|
| && savedInstanceState.getBoolean("is_incognito_selected", false);
|
| int index = savedInstanceState != null ? savedInstanceState.getInt(WINDOW_INDEX, 0) : 0;
|
| + Log.e("bshe", "call request selector");
|
| mTabModelSelectorImpl = (TabModelSelectorImpl)
|
| TabWindowManager.getInstance().requestSelector(this, getWindowAndroid(), index);
|
| if (mTabModelSelectorImpl == null) {
|
| @@ -1039,6 +1113,11 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| DataReductionPromoInfoBar.maybeLaunchPromoInfoBar(ChromeTabbedActivity.this,
|
| tab.getWebContents(), url, tab.isShowingErrorPage(), isFragmentNavigation,
|
| statusCode);
|
| + if (ChromeTabbedActivity.this.mVrMode) {
|
| + (ContentViewCore.fromWebContents(tab.getWebContents()))
|
| + .onSizeChanged(684, 332, 0, 0);
|
| + ChromeTabbedActivity.this.onTabReady(tab);
|
| + }
|
| }
|
| };
|
|
|
| @@ -1370,6 +1449,11 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| mUndoBarPopupController = null;
|
| }
|
|
|
| + if (mVrShellView != null) {
|
| + mVrShellView.shutdown();
|
| + mVrShellView = null;
|
| + }
|
| +
|
| super.onDestroyInternal();
|
| }
|
|
|
|
|