Commit 15a75cd7 authored by Piotr Bialecki's avatar Piotr Bialecki Committed by Commit Bot

Reduce ArImmersiveOverlay's dependencies on chrome

Bug: 843374
Change-Id: Ib21288785cf151bd19a6590c288cd1abb1cd3054
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2462348
Commit-Queue: Piotr Bialecki <bialpio@chromium.org>
Reviewed-by: default avatarKlaus Weidner <klausw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815400}
parent 535c70e5
......@@ -26,11 +26,10 @@ import org.chromium.base.Log;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.compositor.CompositorView;
import org.chromium.chrome.browser.fullscreen.FullscreenManager;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.content_public.browser.ScreenOrientationDelegate;
import org.chromium.content_public.browser.ScreenOrientationProvider;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.display.DisplayAndroidManager;
import org.chromium.ui.widget.Toast;
......@@ -51,6 +50,7 @@ public class ArImmersiveOverlay
private Integer mRestoreOrientation;
private boolean mCleanupInProgress;
private SurfaceUiWrapper mSurfaceUi;
private WebContents mWebContents;
// Set containing all currently touching pointers.
private HashMap<Integer, PointerData> mPointerIdToData;
......@@ -61,6 +61,8 @@ public class ArImmersiveOverlay
@NonNull WebContents webContents, @NonNull ArCoreJavaUtils caller, boolean useOverlay) {
if (DEBUG_LOGS) Log.i(TAG, "constructor");
mArCoreJavaUtils = caller;
mWebContents = webContents;
mActivity = ChromeActivity.fromWebContents(webContents);
mPointerIdToData = new HashMap<Integer, PointerData>();
......@@ -162,7 +164,7 @@ public class ArImmersiveOverlay
private class SurfaceUiCompositor implements SurfaceUiWrapper {
private SurfaceView mSurfaceView;
private CompositorView mCompositorView;
private FullscreenManager.Observer mFullscreenListener;
private WebContentsObserver mWebContentsObserver;
public SurfaceUiCompositor() {
mSurfaceView = new SurfaceView(mActivity);
......@@ -187,16 +189,23 @@ public class ArImmersiveOverlay
if (DEBUG_LOGS) Log.i(TAG, "calling mCompositorView.setOverlayImmersiveArMode(true)");
mCompositorView.setOverlayImmersiveArMode(true);
mFullscreenListener = new FullscreenManager.Observer() {
mWebContentsObserver = new WebContentsObserver() {
@Override
public void onExitFullscreen(Tab tab) {
if (DEBUG_LOGS) Log.i(TAG, "onExitFullscreenMode");
cleanupAndExit();
public void hasEffectivelyFullscreenVideoChange(boolean isFullscreen) {
if (DEBUG_LOGS) {
Log.i(TAG,
"hasEffectivelyFullscreenVideoChange(), isFullscreen="
+ isFullscreen);
}
if (!isFullscreen) {
cleanupAndExit();
}
}
};
// Watch for fullscreen exit triggered from JS, this needs to end the session.
mActivity.getFullscreenManager().addObserver(mFullscreenListener);
mWebContents.addObserver(mWebContentsObserver);
}
@Override // SurfaceUiWrapper
......@@ -210,7 +219,7 @@ public class ArImmersiveOverlay
@Override // SurfaceUiWrapper
public void destroy() {
mActivity.getFullscreenManager().removeObserver(mFullscreenListener);
mWebContents.removeObserver(mWebContentsObserver);
View content = mActivity.getWindow().findViewById(android.R.id.content);
ViewGroup group = (ViewGroup) content.getParent();
group.removeView(mSurfaceView);
......@@ -502,8 +511,8 @@ public class ArImmersiveOverlay
// The JS app may have put an element into fullscreen mode during the immersive session,
// even if this wasn't visible to the user. Ensure that we fully exit out of any active
// fullscreen state on session end to avoid being left in a confusing state.
if (mActivity.getActivityTab() != null && !mActivity.isActivityFinishingOrDestroyed()) {
mActivity.getFullscreenManager().onExitFullscreen(mActivity.getActivityTab());
if (!mWebContents.isDestroyed()) {
mWebContents.exitFullscreen();
}
// Restore orientation.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment