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; ...@@ -26,11 +26,10 @@ import org.chromium.base.Log;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.compositor.CompositorView; 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.ScreenOrientationDelegate;
import org.chromium.content_public.browser.ScreenOrientationProvider; import org.chromium.content_public.browser.ScreenOrientationProvider;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.display.DisplayAndroidManager; import org.chromium.ui.display.DisplayAndroidManager;
import org.chromium.ui.widget.Toast; import org.chromium.ui.widget.Toast;
...@@ -51,6 +50,7 @@ public class ArImmersiveOverlay ...@@ -51,6 +50,7 @@ public class ArImmersiveOverlay
private Integer mRestoreOrientation; private Integer mRestoreOrientation;
private boolean mCleanupInProgress; private boolean mCleanupInProgress;
private SurfaceUiWrapper mSurfaceUi; private SurfaceUiWrapper mSurfaceUi;
private WebContents mWebContents;
// Set containing all currently touching pointers. // Set containing all currently touching pointers.
private HashMap<Integer, PointerData> mPointerIdToData; private HashMap<Integer, PointerData> mPointerIdToData;
...@@ -61,6 +61,8 @@ public class ArImmersiveOverlay ...@@ -61,6 +61,8 @@ public class ArImmersiveOverlay
@NonNull WebContents webContents, @NonNull ArCoreJavaUtils caller, boolean useOverlay) { @NonNull WebContents webContents, @NonNull ArCoreJavaUtils caller, boolean useOverlay) {
if (DEBUG_LOGS) Log.i(TAG, "constructor"); if (DEBUG_LOGS) Log.i(TAG, "constructor");
mArCoreJavaUtils = caller; mArCoreJavaUtils = caller;
mWebContents = webContents;
mActivity = ChromeActivity.fromWebContents(webContents); mActivity = ChromeActivity.fromWebContents(webContents);
mPointerIdToData = new HashMap<Integer, PointerData>(); mPointerIdToData = new HashMap<Integer, PointerData>();
...@@ -162,7 +164,7 @@ public class ArImmersiveOverlay ...@@ -162,7 +164,7 @@ public class ArImmersiveOverlay
private class SurfaceUiCompositor implements SurfaceUiWrapper { private class SurfaceUiCompositor implements SurfaceUiWrapper {
private SurfaceView mSurfaceView; private SurfaceView mSurfaceView;
private CompositorView mCompositorView; private CompositorView mCompositorView;
private FullscreenManager.Observer mFullscreenListener; private WebContentsObserver mWebContentsObserver;
public SurfaceUiCompositor() { public SurfaceUiCompositor() {
mSurfaceView = new SurfaceView(mActivity); mSurfaceView = new SurfaceView(mActivity);
...@@ -187,16 +189,23 @@ public class ArImmersiveOverlay ...@@ -187,16 +189,23 @@ public class ArImmersiveOverlay
if (DEBUG_LOGS) Log.i(TAG, "calling mCompositorView.setOverlayImmersiveArMode(true)"); if (DEBUG_LOGS) Log.i(TAG, "calling mCompositorView.setOverlayImmersiveArMode(true)");
mCompositorView.setOverlayImmersiveArMode(true); mCompositorView.setOverlayImmersiveArMode(true);
mFullscreenListener = new FullscreenManager.Observer() { mWebContentsObserver = new WebContentsObserver() {
@Override @Override
public void onExitFullscreen(Tab tab) { public void hasEffectivelyFullscreenVideoChange(boolean isFullscreen) {
if (DEBUG_LOGS) Log.i(TAG, "onExitFullscreenMode"); if (DEBUG_LOGS) {
cleanupAndExit(); Log.i(TAG,
"hasEffectivelyFullscreenVideoChange(), isFullscreen="
+ isFullscreen);
}
if (!isFullscreen) {
cleanupAndExit();
}
} }
}; };
// Watch for fullscreen exit triggered from JS, this needs to end the session. // Watch for fullscreen exit triggered from JS, this needs to end the session.
mActivity.getFullscreenManager().addObserver(mFullscreenListener); mWebContents.addObserver(mWebContentsObserver);
} }
@Override // SurfaceUiWrapper @Override // SurfaceUiWrapper
...@@ -210,7 +219,7 @@ public class ArImmersiveOverlay ...@@ -210,7 +219,7 @@ public class ArImmersiveOverlay
@Override // SurfaceUiWrapper @Override // SurfaceUiWrapper
public void destroy() { public void destroy() {
mActivity.getFullscreenManager().removeObserver(mFullscreenListener); mWebContents.removeObserver(mWebContentsObserver);
View content = mActivity.getWindow().findViewById(android.R.id.content); View content = mActivity.getWindow().findViewById(android.R.id.content);
ViewGroup group = (ViewGroup) content.getParent(); ViewGroup group = (ViewGroup) content.getParent();
group.removeView(mSurfaceView); group.removeView(mSurfaceView);
...@@ -502,8 +511,8 @@ public class ArImmersiveOverlay ...@@ -502,8 +511,8 @@ public class ArImmersiveOverlay
// The JS app may have put an element into fullscreen mode during the immersive session, // 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 // 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. // fullscreen state on session end to avoid being left in a confusing state.
if (mActivity.getActivityTab() != null && !mActivity.isActivityFinishingOrDestroyed()) { if (!mWebContents.isDestroyed()) {
mActivity.getFullscreenManager().onExitFullscreen(mActivity.getActivityTab()); mWebContents.exitFullscreen();
} }
// Restore orientation. // 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