| Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| index fea48405089447b4fceb2c5400b5c9e36bf8190d..22d835049a8198c7a98fd75466329c214db0c24d 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| @@ -175,6 +175,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| private static final String TAG = "ChromeActivity";
|
| private static final Rect EMPTY_RECT = new Rect();
|
|
|
| + protected boolean mVrMode = true;
|
| private TabModelSelector mTabModelSelector;
|
| private TabModelSelectorTabObserver mTabModelSelectorTabObserver;
|
| private TabCreatorManager.TabCreator mRegularTabCreator;
|
| @@ -307,11 +308,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
|
|
| // Set up the animation placeholder to be the SurfaceView. This disables the
|
| // SurfaceView's 'hole' clipping during animations that are notified to the window.
|
| - mWindowAndroid.setAnimationPlaceholderView(mCompositorViewHolder.getSurfaceView());
|
| + if (!mVrMode) {
|
| + mWindowAndroid.setAnimationPlaceholderView(mCompositorViewHolder.getSurfaceView());
|
|
|
| - // Inform the WindowAndroid of the keyboard accessory view.
|
| - mWindowAndroid.setKeyboardAccessoryView((ViewGroup) findViewById(R.id.keyboard_accessory));
|
| - initializeToolbar();
|
| + // Inform the WindowAndroid of the keyboard accessory view.
|
| + mWindowAndroid.setKeyboardAccessoryView(
|
| + (ViewGroup) findViewById(R.id.keyboard_accessory));
|
| + initializeToolbar();
|
| + }
|
| }
|
|
|
| @Override
|
| @@ -342,20 +346,22 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| WarmupManager.getInstance().transferViewHierarchyTo(contentParent);
|
| contentParent.removeView(placeHolderView);
|
| } else {
|
| - // Allow disk access for the content view and toolbar container setup.
|
| - // On certain android devices this setup sequence results in disk writes outside
|
| - // of our control, so we have to disable StrictMode to work. See crbug.com/639352.
|
| - StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
|
| - try {
|
| - setContentView(R.layout.main);
|
| - if (controlContainerLayoutId != NO_CONTROL_CONTAINER) {
|
| - ViewStub toolbarContainerStub =
|
| - ((ViewStub) findViewById(R.id.control_container_stub));
|
| - toolbarContainerStub.setLayoutResource(controlContainerLayoutId);
|
| - toolbarContainerStub.inflate();
|
| + if (!mVrMode) {
|
| + // Allow disk access for the content view and toolbar container setup.
|
| + // On certain android devices this setup sequence results in disk writes outside
|
| + // of our control, so we have to disable StrictMode to work. See crbug.com/639352.
|
| + StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
|
| + try {
|
| + setContentView(R.layout.main);
|
| + if (controlContainerLayoutId != NO_CONTROL_CONTAINER) {
|
| + ViewStub toolbarContainerStub =
|
| + ((ViewStub) findViewById(R.id.control_container_stub));
|
| + toolbarContainerStub.setLayoutResource(controlContainerLayoutId);
|
| + toolbarContainerStub.inflate();
|
| + }
|
| + } finally {
|
| + StrictMode.setThreadPolicy(oldPolicy);
|
| }
|
| - } finally {
|
| - StrictMode.setThreadPolicy(oldPolicy);
|
| }
|
| }
|
| TraceEvent.end("onCreate->setContentView()");
|
| @@ -367,8 +373,12 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| ApiCompatibilityUtils.setStatusBarColor(getWindow(), Color.BLACK);
|
|
|
| ViewGroup rootView = (ViewGroup) getWindow().getDecorView().getRootView();
|
| - mCompositorViewHolder = (CompositorViewHolder) findViewById(R.id.compositor_view_holder);
|
| - mCompositorViewHolder.setRootView(rootView);
|
| +
|
| + if (!mVrMode) {
|
| + mCompositorViewHolder =
|
| + (CompositorViewHolder) findViewById(R.id.compositor_view_holder);
|
| + mCompositorViewHolder.setRootView(rootView);
|
| + }
|
|
|
| // Setting fitsSystemWindows to false ensures that the root view doesn't consume the insets.
|
| rootView.setFitsSystemWindows(false);
|
| @@ -385,34 +395,37 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| * {@link Toolbar}. Extending classes can override this call to avoid creating the toolbar.
|
| */
|
| protected void initializeToolbar() {
|
| - final View controlContainer = findViewById(R.id.control_container);
|
| - assert controlContainer != null;
|
| - ToolbarControlContainer toolbarContainer = (ToolbarControlContainer) controlContainer;
|
| - mAppMenuPropertiesDelegate = createAppMenuPropertiesDelegate();
|
| - mAppMenuHandler = sAppMenuHandlerFactory.get(this, mAppMenuPropertiesDelegate,
|
| - getAppMenuLayoutId());
|
| - mToolbarManager = new ToolbarManager(this, toolbarContainer, mAppMenuHandler,
|
| - mAppMenuPropertiesDelegate, getCompositorViewHolder().getInvalidator());
|
| - mAppMenuHandler.addObserver(new AppMenuObserver() {
|
| - @Override
|
| - public void onMenuVisibilityChanged(boolean isVisible) {
|
| - if (isVisible && !isInOverviewMode()) {
|
| - // The app menu badge should be removed the first time the menu is opened.
|
| - if (mToolbarManager.getToolbar().isShowingAppMenuUpdateBadge()) {
|
| - mToolbarManager.getToolbar().removeAppMenuUpdateBadge(true);
|
| - mCompositorViewHolder.requestRender();
|
| + if (!mVrMode) {
|
| + final View controlContainer = findViewById(R.id.control_container);
|
| + assert controlContainer != null;
|
| + ToolbarControlContainer toolbarContainer = (ToolbarControlContainer) controlContainer;
|
| + mAppMenuPropertiesDelegate = createAppMenuPropertiesDelegate();
|
| + mAppMenuHandler = sAppMenuHandlerFactory.get(
|
| + this, mAppMenuPropertiesDelegate, getAppMenuLayoutId());
|
| + mToolbarManager = new ToolbarManager(this, toolbarContainer, mAppMenuHandler,
|
| + mAppMenuPropertiesDelegate, getCompositorViewHolder().getInvalidator());
|
| + mAppMenuHandler.addObserver(new AppMenuObserver() {
|
| + @Override
|
| + public void onMenuVisibilityChanged(boolean isVisible) {
|
| + if (isVisible && !isInOverviewMode()) {
|
| + // The app menu badge should be removed the first time the menu is opened.
|
| + if (mToolbarManager.getToolbar().isShowingAppMenuUpdateBadge()) {
|
| + mToolbarManager.getToolbar().removeAppMenuUpdateBadge(true);
|
| +
|
| + if (!mVrMode) mCompositorViewHolder.requestRender();
|
| + }
|
| }
|
| - }
|
| - if (!isVisible) {
|
| - mAppMenuPropertiesDelegate.onMenuDismissed();
|
| - MenuItem updateMenuItem = mAppMenuHandler.getAppMenu().getMenu().findItem(
|
| - R.id.update_menu_id);
|
| - if (updateMenuItem != null && updateMenuItem.isVisible()) {
|
| - UpdateMenuItemHelper.getInstance().onMenuDismissed();
|
| + if (!isVisible) {
|
| + mAppMenuPropertiesDelegate.onMenuDismissed();
|
| + MenuItem updateMenuItem = mAppMenuHandler.getAppMenu().getMenu().findItem(
|
| + R.id.update_menu_id);
|
| + if (updateMenuItem != null && updateMenuItem.isVisible()) {
|
| + UpdateMenuItemHelper.getInstance().onMenuDismissed();
|
| + }
|
| }
|
| }
|
| - }
|
| - });
|
| + });
|
| + }
|
| }
|
|
|
| /**
|
| @@ -484,7 +497,12 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
|
|
| setTabContentManager(new TabContentManager(this, getContentOffsetProvider(),
|
| DeviceClassManager.enableSnapshots()));
|
| - mCompositorViewHolder.onNativeLibraryReady(mWindowAndroid, getTabContentManager());
|
| +
|
| + if (!mVrMode) {
|
| + // mCompositorViewHolder.onNativeLibraryReady(new ActivityWindowAndroid(this),
|
| + // getTabContentManager());
|
| + mCompositorViewHolder.onNativeLibraryReady(mWindowAndroid, getTabContentManager());
|
| + }
|
|
|
| if (isContextualSearchAllowed() && ContextualSearchFieldTrial.isEnabled()) {
|
| mContextualSearchManager = new ContextualSearchManager(this, mWindowAndroid, this);
|
| @@ -562,9 +580,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| if (getToolbarManager() == null) return;
|
| getToolbarManager().updatePrimaryColor(color, true);
|
|
|
| - ControlContainer controlContainer =
|
| - (ControlContainer) findViewById(R.id.control_container);
|
| - controlContainer.getToolbarResourceAdapter().invalidate(null);
|
| + if (!mVrMode) {
|
| + ControlContainer controlContainer =
|
| + (ControlContainer) findViewById(R.id.control_container);
|
| + controlContainer.getToolbarResourceAdapter().invalidate(null);
|
| + }
|
| }
|
| };
|
|
|
| @@ -587,7 +607,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| } else {
|
| ContextReporter.reportStatus(ContextReporter.STATUS_GSA_NOT_AVAILABLE);
|
| }
|
| - mCompositorViewHolder.resetFlags();
|
| + if (!mVrMode) mCompositorViewHolder.resetFlags();
|
|
|
| // postDeferredStartupIfNeeded() is called in TabModelSelectorTabObsever#onLoadStopped(),
|
| // #onPageLoadFinished() and #onCrash(). If we are not actively loading a tab (e.g.
|
| @@ -780,7 +800,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| @Override
|
| public void onStart() {
|
| if (AsyncTabParamsManager.hasParamsWithTabToReparent()) {
|
| - mCompositorViewHolder.prepareForTabReparenting();
|
| + if (!mVrMode) mCompositorViewHolder.prepareForTabReparenting();
|
| }
|
| super.onStart();
|
| if (mContextReporter != null) mContextReporter.enable();
|
| @@ -1297,7 +1317,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| * @return The content offset provider, may be null.
|
| */
|
| public ContentOffsetProvider getContentOffsetProvider() {
|
| - return mCompositorViewHolder.getContentOffsetProvider();
|
| + if (!mVrMode)
|
| + return mCompositorViewHolder.getContentOffsetProvider();
|
| + else
|
| + return null;
|
| }
|
|
|
| /**
|
| @@ -1369,14 +1392,17 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| }
|
|
|
| layoutManager.addSceneChangeObserver(this);
|
| - mCompositorViewHolder.setLayoutManager(layoutManager);
|
| - mCompositorViewHolder.setFocusable(false);
|
| - mCompositorViewHolder.setControlContainer(controlContainer);
|
| - mCompositorViewHolder.setFullscreenHandler(mFullscreenManager);
|
| - mCompositorViewHolder.setUrlBar(urlBar);
|
| - mCompositorViewHolder.onFinishNativeInitialization(getTabModelSelector(), this,
|
| - getTabContentManager(), contentContainer, mContextualSearchManager,
|
| - mReaderModeManager);
|
| +
|
| + if (!mVrMode) {
|
| + mCompositorViewHolder.setLayoutManager(layoutManager);
|
| + mCompositorViewHolder.setFocusable(false);
|
| + mCompositorViewHolder.setControlContainer(controlContainer);
|
| + mCompositorViewHolder.setFullscreenHandler(mFullscreenManager);
|
| + mCompositorViewHolder.setUrlBar(urlBar);
|
| + mCompositorViewHolder.onFinishNativeInitialization(getTabModelSelector(), this,
|
| + getTabContentManager(), contentContainer, mContextualSearchManager,
|
| + mReaderModeManager);
|
| + }
|
|
|
| if (controlContainer != null
|
| && DeviceClassManager.enableToolbarSwipe()) {
|
| @@ -1524,9 +1550,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| * @param updateAvailable Whether an update is available.
|
| */
|
| public void onCheckForUpdate(boolean updateAvailable) {
|
| + if (mVrMode) return;
|
| if (UpdateMenuItemHelper.getInstance().shouldShowToolbarBadge(this)) {
|
| mToolbarManager.getToolbar().showAppMenuUpdateBadge();
|
| - mCompositorViewHolder.requestRender();
|
| + if (!mVrMode) mCompositorViewHolder.requestRender();
|
| } else {
|
| mToolbarManager.getToolbar().removeAppMenuUpdateBadge(false);
|
| }
|
|
|