Commit 45dcb02f authored by Brandon Wylie's avatar Brandon Wylie Committed by Chromium LUCI CQ

Remove ChromeActivity reference from ChromeWindow

Bug: 1123209
Change-Id: I7ef370fe1e6b571bec3a3f1a74e2305e46763a14
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2566334
Commit-Queue: Brandon Wylie <wylieb@chromium.org>
Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Cr-Commit-Position: refs/heads/master@{#835868}
parent f21d861e
...@@ -7,9 +7,11 @@ package org.chromium.chrome.browser; ...@@ -7,9 +7,11 @@ package org.chromium.chrome.browser;
import android.app.Activity; import android.app.Activity;
import android.view.View; import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
import org.chromium.chrome.browser.infobar.InfoBarIdentifier; import org.chromium.chrome.browser.infobar.InfoBarIdentifier;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.ui.messages.infobar.SimpleConfirmInfoBarBuilder; import org.chromium.chrome.browser.ui.messages.infobar.SimpleConfirmInfoBarBuilder;
...@@ -34,28 +36,38 @@ public class ChromeWindow extends ActivityWindowAndroid { ...@@ -34,28 +36,38 @@ public class ChromeWindow extends ActivityWindowAndroid {
private static KeyboardVisibilityDelegateFactory sKeyboardVisibilityDelegateFactory = private static KeyboardVisibilityDelegateFactory sKeyboardVisibilityDelegateFactory =
ChromeKeyboardVisibilityDelegate::new; ChromeKeyboardVisibilityDelegate::new;
private final ActivityTabProvider mActivityTabProvider;
private final Supplier<CompositorViewHolder> mCompositorViewHolderSupplier;
private final Supplier<ModalDialogManager> mModalDialogManagerSupplier;
/** /**
* Creates Chrome specific ActivityWindowAndroid. * Creates Chrome specific ActivityWindowAndroid.
* @param activity The activity that owns the ChromeWindow. * @param activity The activity that owns the ChromeWindow.
* @param activityTabProvider Provides the current activity's {@link Tab}.
* @param compositorViewHolderSupplier Supplies the {@link CompostiorViewHolder}.
* @param modalDialogManagerSupplier Supplies the {@link ModalDialogManager}.
*/ */
public ChromeWindow(ChromeActivity activity) { public ChromeWindow(@NonNull Activity activity,
@NonNull ActivityTabProvider activityTabProvider,
@NonNull Supplier<CompositorViewHolder> compositorViewHolderSupplier,
@NonNull Supplier<ModalDialogManager> modalDialogManagerSupplier) {
super(activity); super(activity);
mActivityTabProvider = activityTabProvider;
mCompositorViewHolderSupplier = compositorViewHolderSupplier;
mModalDialogManagerSupplier = modalDialogManagerSupplier;
} }
@Override @Override
public View getReadbackView() { public View getReadbackView() {
assert getActivity().get() instanceof ChromeActivity; return mCompositorViewHolderSupplier.get() == null
ChromeActivity chromeActivity = (ChromeActivity) getActivity().get();
return chromeActivity.getCompositorViewHolder() == null
? null ? null
: chromeActivity.getCompositorViewHolder().getActiveSurfaceView(); : mCompositorViewHolderSupplier.get().getActiveSurfaceView();
} }
@Override @Override
public ModalDialogManager getModalDialogManager() { public ModalDialogManager getModalDialogManager() {
ChromeActivity activity = (ChromeActivity) getActivity().get(); // TODO(crbug.com/1155658): Move ModalDialogManager to UnownedUserData.
return activity == null ? null : activity.getModalDialogManager(); return mModalDialogManagerSupplier.get();
} }
@Override @Override
...@@ -68,11 +80,7 @@ public class ChromeWindow extends ActivityWindowAndroid { ...@@ -68,11 +80,7 @@ public class ChromeWindow extends ActivityWindowAndroid {
*/ */
@Override @Override
protected void showCallbackNonExistentError(String error) { protected void showCallbackNonExistentError(String error) {
Activity activity = getActivity().get(); Tab tab = mActivityTabProvider.get();
// We can assume that activity is a ChromeActivity because we require one to be passed in
// in the constructor.
Tab tab = activity != null ? ((ChromeActivity) activity).getActivityTab() : null;
if (tab != null) { if (tab != null) {
SimpleConfirmInfoBarBuilder.create(tab.getWebContents(), SimpleConfirmInfoBarBuilder.create(tab.getWebContents(),
......
...@@ -24,9 +24,6 @@ specific_include_rules = { ...@@ -24,9 +24,6 @@ specific_include_rules = {
"ChromeTabbedActivity\.java": [ "ChromeTabbedActivity\.java": [
"+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
], ],
"ChromeWindow\.java": [
"+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
],
"KeyboardShortcuts\.java": [ "KeyboardShortcuts\.java": [
"+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
], ],
......
...@@ -340,7 +340,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent> ...@@ -340,7 +340,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@Override @Override
protected ActivityWindowAndroid createWindowAndroid() { protected ActivityWindowAndroid createWindowAndroid() {
return new ChromeWindow(this); return new ChromeWindow(/* activity= */ this, mActivityTabProvider,
this::getCompositorViewHolder, getModalDialogManagerSupplier());
} }
@Override @Override
......
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