Commit 8315bbca authored by Brandon Wylie's avatar Brandon Wylie Committed by Commit Bot

Remove ChromeActivity reference from AutoCompleteMediator

ChromeActivity is used in AutocompleteMediator to provide the current
TabModelSelector. This dependency should instead be acquired through
direct constructor injection.

Bug: 1123209,1097292,1113364
Change-Id: I95c8a58f06f250b6397ec7926b2262b5b2b4298b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2382958Reviewed-by: default avatarPatrick Noland <pnoland@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarTomasz Wiszkowski <ender@google.com>
Commit-Queue: Brandon Wylie <wylieb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804419}
parent ca20efec
...@@ -1438,7 +1438,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent ...@@ -1438,7 +1438,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
return new TabbedRootUiCoordinator(this, this::onOmniboxFocusChanged, return new TabbedRootUiCoordinator(this, this::onOmniboxFocusChanged,
mIntentWithEffectSupplier, getShareDelegateSupplier(), getActivityTabProvider(), mIntentWithEffectSupplier, getShareDelegateSupplier(), getActivityTabProvider(),
mEphemeralTabCoordinatorSupplier, mTabModelProfileSupplier, mBookmarkBridgeSupplier, mEphemeralTabCoordinatorSupplier, mTabModelProfileSupplier, mBookmarkBridgeSupplier,
getOverviewModeBehaviorSupplier(), this::getContextualSearchManager); getOverviewModeBehaviorSupplier(), this::getContextualSearchManager,
mTabModelSelectorSupplier);
} }
@Override @Override
......
...@@ -277,9 +277,6 @@ specific_include_rules = { ...@@ -277,9 +277,6 @@ specific_include_rules = {
"UpdateNotificationServiceBridge\.java": [ "UpdateNotificationServiceBridge\.java": [
"+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
], ],
"AutocompleteMediator\.java": [
"+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
],
"PaintPreviewHelper\.java": [ "PaintPreviewHelper\.java": [
"+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java",
], ],
......
...@@ -377,7 +377,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent> ...@@ -377,7 +377,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
// a recommended pattern. // a recommended pattern.
return new RootUiCoordinator(this, null, getShareDelegateSupplier(), return new RootUiCoordinator(this, null, getShareDelegateSupplier(),
getActivityTabProvider(), mTabModelProfileSupplier, mBookmarkBridgeSupplier, getActivityTabProvider(), mTabModelProfileSupplier, mBookmarkBridgeSupplier,
getOverviewModeBehaviorSupplier(), this::getContextualSearchManager); getOverviewModeBehaviorSupplier(), this::getContextualSearchManager,
mTabModelSelectorSupplier);
} }
private C createComponent() { private C createComponent() {
......
...@@ -150,9 +150,13 @@ public abstract class BaseCustomTabActivity extends ChromeActivity<BaseCustomTab ...@@ -150,9 +150,13 @@ public abstract class BaseCustomTabActivity extends ChromeActivity<BaseCustomTab
@Override @Override
protected RootUiCoordinator createRootUiCoordinator() { protected RootUiCoordinator createRootUiCoordinator() {
return new BaseCustomTabRootUiCoordinator(this, getShareDelegateSupplier(), return new BaseCustomTabRootUiCoordinator(this, getShareDelegateSupplier(),
() -> mToolbarCoordinator, () -> mNavigationController, getActivityTabProvider(), ()
mTabModelProfileSupplier, mBookmarkBridgeSupplier, mOverviewModeBehaviorSupplier, -> mToolbarCoordinator,
this::getContextualSearchManager); ()
-> mNavigationController,
getActivityTabProvider(), mTabModelProfileSupplier, mBookmarkBridgeSupplier,
mOverviewModeBehaviorSupplier, this::getContextualSearchManager,
mTabModelSelectorSupplier);
} }
@Override @Override
......
...@@ -20,6 +20,7 @@ import org.chromium.chrome.browser.lifecycle.NativeInitObserver; ...@@ -20,6 +20,7 @@ import org.chromium.chrome.browser.lifecycle.NativeInitObserver;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.reengagement.ReengagementNotificationController; import org.chromium.chrome.browser.reengagement.ReengagementNotificationController;
import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.ui.RootUiCoordinator; import org.chromium.chrome.browser.ui.RootUiCoordinator;
import org.chromium.components.feature_engagement.Tracker; import org.chromium.components.feature_engagement.Tracker;
...@@ -38,10 +39,11 @@ public class BaseCustomTabRootUiCoordinator ...@@ -38,10 +39,11 @@ public class BaseCustomTabRootUiCoordinator
ActivityTabProvider tabProvider, ObservableSupplier<Profile> profileSupplier, ActivityTabProvider tabProvider, ObservableSupplier<Profile> profileSupplier,
ObservableSupplier<BookmarkBridge> bookmarkBridgeSupplier, ObservableSupplier<BookmarkBridge> bookmarkBridgeSupplier,
ObservableSupplier<OverviewModeBehavior> overviewModeBehaviorSupplier, ObservableSupplier<OverviewModeBehavior> overviewModeBehaviorSupplier,
Supplier<ContextualSearchManager> contextualSearchManagerSupplier) { Supplier<ContextualSearchManager> contextualSearchManagerSupplier,
ObservableSupplier<TabModelSelector> tabModelSelectorSupplier) {
super(activity, null, shareDelegateSupplier, tabProvider, profileSupplier, super(activity, null, shareDelegateSupplier, tabProvider, profileSupplier,
bookmarkBridgeSupplier, overviewModeBehaviorSupplier, bookmarkBridgeSupplier, overviewModeBehaviorSupplier,
contextualSearchManagerSupplier); contextualSearchManagerSupplier, tabModelSelectorSupplier);
mToolbarCoordinator = customTabToolbarCoordinator; mToolbarCoordinator = customTabToolbarCoordinator;
mNavigationController = customTabNavigationController; mNavigationController = customTabNavigationController;
} }
......
...@@ -11,6 +11,7 @@ import android.view.Window; ...@@ -11,6 +11,7 @@ import android.view.Window;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.WindowDelegate; import org.chromium.chrome.browser.WindowDelegate;
...@@ -20,6 +21,7 @@ import org.chromium.chrome.browser.omnibox.UrlBar.UrlBarDelegate; ...@@ -20,6 +21,7 @@ import org.chromium.chrome.browser.omnibox.UrlBar.UrlBarDelegate;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.toolbar.IncognitoStateProvider; import org.chromium.chrome.browser.toolbar.IncognitoStateProvider;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider; import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.chrome.browser.toolbar.top.Toolbar; import org.chromium.chrome.browser.toolbar.top.Toolbar;
...@@ -142,16 +144,19 @@ public interface LocationBar extends UrlBarDelegate, FakeboxDelegate { ...@@ -142,16 +144,19 @@ public interface LocationBar extends UrlBarDelegate, FakeboxDelegate {
* @param windowAndroid {@link WindowAndroid} that is used by the owning {@link Activity}. * @param windowAndroid {@link WindowAndroid} that is used by the owning {@link Activity}.
* @param activityTabProvider An {@link ActivityTabProvider} to access the activity's current * @param activityTabProvider An {@link ActivityTabProvider} to access the activity's current
* tab. * tab.
* @param tabModelSelectorSupplier Supplies the Activity's TabModelSelector, used to access tabs
* and models.
* @param modalDialogManagerSupplier A supplier for {@link ModalDialogManager} object. * @param modalDialogManagerSupplier A supplier for {@link ModalDialogManager} object.
* @param shareDelegateSupplier A supplier for {@link ShareDelegate} object. * @param shareDelegateSupplier A supplier for {@link ShareDelegate} object.
* @param incognitoStateProvider An {@link IncognitoStateProvider} to access the current * @param incognitoStateProvider An {@link IncognitoStateProvider} to access the current
* incognito state. * incognito state.
*/ */
void initializeControls(WindowDelegate windowDelegate, WindowAndroid windowAndroid, default void initializeControls(WindowDelegate windowDelegate, WindowAndroid windowAndroid,
ActivityTabProvider activityTabProvider, ActivityTabProvider activityTabProvider,
ObservableSupplier<TabModelSelector> tabModelSelectorSupplier,
Supplier<ModalDialogManager> modalDialogManagerSupplier, Supplier<ModalDialogManager> modalDialogManagerSupplier,
Supplier<ShareDelegate> shareDelegateSupplier, Supplier<ShareDelegate> shareDelegateSupplier,
IncognitoStateProvider incognitoStateProvider); IncognitoStateProvider incognitoStateProvider) {}
/** /**
* Triggers the cursor to be visible in the UrlBar without triggering any of the focus animation * Triggers the cursor to be visible in the UrlBar without triggering any of the focus animation
......
...@@ -34,6 +34,7 @@ import org.chromium.base.CommandLine; ...@@ -34,6 +34,7 @@ import org.chromium.base.CommandLine;
import org.chromium.base.ObserverList; import org.chromium.base.ObserverList;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ActivityTabProvider;
...@@ -62,6 +63,7 @@ import org.chromium.chrome.browser.profiles.Profile; ...@@ -62,6 +63,7 @@ import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil; import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil;
import org.chromium.chrome.browser.toolbar.IncognitoStateProvider; import org.chromium.chrome.browser.toolbar.IncognitoStateProvider;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider; import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
...@@ -301,6 +303,7 @@ public class LocationBarLayout extends FrameLayout ...@@ -301,6 +303,7 @@ public class LocationBarLayout extends FrameLayout
@Override @Override
public void initializeControls(WindowDelegate windowDelegate, WindowAndroid windowAndroid, public void initializeControls(WindowDelegate windowDelegate, WindowAndroid windowAndroid,
ActivityTabProvider activityTabProvider, ActivityTabProvider activityTabProvider,
ObservableSupplier<TabModelSelector> tabModelSelectorSupplier,
Supplier<ModalDialogManager> modalDialogManagerSupplier, Supplier<ModalDialogManager> modalDialogManagerSupplier,
Supplier<ShareDelegate> shareDelegateSupplier, Supplier<ShareDelegate> shareDelegateSupplier,
IncognitoStateProvider incognitoStateProvider) { IncognitoStateProvider incognitoStateProvider) {
...@@ -310,6 +313,7 @@ public class LocationBarLayout extends FrameLayout ...@@ -310,6 +313,7 @@ public class LocationBarLayout extends FrameLayout
mUrlCoordinator.setWindowDelegate(windowDelegate); mUrlCoordinator.setWindowDelegate(windowDelegate);
mAutocompleteCoordinator.setWindowAndroid(windowAndroid); mAutocompleteCoordinator.setWindowAndroid(windowAndroid);
mAutocompleteCoordinator.setActivityTabProvider(activityTabProvider); mAutocompleteCoordinator.setActivityTabProvider(activityTabProvider);
mAutocompleteCoordinator.setTabModelSelectorSupplier(tabModelSelectorSupplier);
mAutocompleteCoordinator.setShareDelegateSupplier(shareDelegateSupplier); mAutocompleteCoordinator.setShareDelegateSupplier(shareDelegateSupplier);
mStatusCoordinator.setIncognitoStateProvider(incognitoStateProvider); mStatusCoordinator.setIncognitoStateProvider(incognitoStateProvider);
mStatusCoordinator.setModalDialogManagerSupplier(modalDialogManagerSupplier); mStatusCoordinator.setModalDialogManagerSupplier(modalDialogManagerSupplier);
......
...@@ -8,6 +8,7 @@ import android.view.KeyEvent; ...@@ -8,6 +8,7 @@ import android.view.KeyEvent;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
...@@ -16,6 +17,7 @@ import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener; ...@@ -16,6 +17,7 @@ import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener;
import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider; import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
...@@ -58,6 +60,11 @@ public interface AutocompleteCoordinator extends UrlFocusChangeListener, UrlText ...@@ -58,6 +60,11 @@ public interface AutocompleteCoordinator extends UrlFocusChangeListener, UrlText
*/ */
void setActivityTabProvider(ActivityTabProvider provider); void setActivityTabProvider(ActivityTabProvider provider);
/**
* @param tabModelSelectorSupplier A means of accessing the current Tab/TabModel.
*/
void setTabModelSelectorSupplier(ObservableSupplier<TabModelSelector> tabModelSelectorSupplier);
/** /**
* @param shareDelegateSupplier A means of accessing the sharing feature. * @param shareDelegateSupplier A means of accessing the sharing feature.
*/ */
......
...@@ -17,6 +17,7 @@ import androidx.annotation.VisibleForTesting; ...@@ -17,6 +17,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ActivityTabProvider;
...@@ -38,6 +39,7 @@ import org.chromium.chrome.browser.omnibox.suggestions.tail.TailSuggestionViewBi ...@@ -38,6 +39,7 @@ import org.chromium.chrome.browser.omnibox.suggestions.tail.TailSuggestionViewBi
import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider; import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.chrome.browser.util.KeyNavigationUtil; import org.chromium.chrome.browser.util.KeyNavigationUtil;
import org.chromium.components.query_tiles.QueryTile; import org.chromium.components.query_tiles.QueryTile;
...@@ -233,6 +235,12 @@ public class AutocompleteCoordinatorImpl implements AutocompleteCoordinator { ...@@ -233,6 +235,12 @@ public class AutocompleteCoordinatorImpl implements AutocompleteCoordinator {
mMediator.setActivityTabProvider(provider); mMediator.setActivityTabProvider(provider);
} }
@Override
public void setTabModelSelectorSupplier(
ObservableSupplier<TabModelSelector> tabModelSelectorSupplier) {
mMediator.setTabModelSelectorSupplier(tabModelSelectorSupplier);
}
@Override @Override
public void setShareDelegateSupplier(Supplier<ShareDelegate> shareDelegateSupplier) { public void setShareDelegateSupplier(Supplier<ShareDelegate> shareDelegateSupplier) {
mMediator.setShareDelegateSupplier(shareDelegateSupplier); mMediator.setShareDelegateSupplier(shareDelegateSupplier);
......
...@@ -27,11 +27,11 @@ import org.chromium.base.IntentUtils; ...@@ -27,11 +27,11 @@ import org.chromium.base.IntentUtils;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.ActivityTabProvider.ActivityTabTabObserver; import org.chromium.chrome.browser.ActivityTabProvider.ActivityTabTabObserver;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver; import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.document.ChromeIntentUtil; import org.chromium.chrome.browser.document.ChromeIntentUtil;
...@@ -52,6 +52,7 @@ import org.chromium.chrome.browser.query_tiles.QueryTileUtils; ...@@ -52,6 +52,7 @@ import org.chromium.chrome.browser.query_tiles.QueryTileUtils;
import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab.TabSelectionType;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelUtils; import org.chromium.chrome.browser.tabmodel.TabModelUtils;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider; import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.embedder_support.util.UrlConstants;
...@@ -146,6 +147,9 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi ...@@ -146,6 +147,9 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi
private WindowAndroid mWindowAndroid; private WindowAndroid mWindowAndroid;
private ActivityLifecycleDispatcher mLifecycleDispatcher; private ActivityLifecycleDispatcher mLifecycleDispatcher;
private ActivityTabTabObserver mTabObserver; private ActivityTabTabObserver mTabObserver;
private ObservableSupplier<TabModelSelector> mTabModelSelectorSupplier;
private final DropdownItemViewInfoListBuilder mDropdownViewInfoListBuilder; private final DropdownItemViewInfoListBuilder mDropdownViewInfoListBuilder;
private final DropdownItemViewInfoListManager mDropdownViewInfoListManager; private final DropdownItemViewInfoListManager mDropdownViewInfoListManager;
...@@ -354,6 +358,15 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi ...@@ -354,6 +358,15 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi
mDropdownViewInfoListBuilder.onNativeInitialized(); mDropdownViewInfoListBuilder.onNativeInitialized();
} }
/**
* @param tabModelSelectorSupplier Supplies the activity TabModelSelector, which is used to
* access the Tab/TabModel.
*/
void setTabModelSelectorSupplier(
ObservableSupplier<TabModelSelector> tabModelSelectorSupplier) {
mTabModelSelectorSupplier = tabModelSelectorSupplier;
}
/** /**
* @param provider A means of accessing the activity tab. * @param provider A means of accessing the activity tab.
*/ */
...@@ -579,7 +592,8 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi ...@@ -579,7 +592,8 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi
@Override @Override
public void onSwitchToTab(OmniboxSuggestion suggestion, int position) { public void onSwitchToTab(OmniboxSuggestion suggestion, int position) {
Tab tab = mAutocomplete.findMatchingTabWithUrl(suggestion.getUrl()); Tab tab = mAutocomplete.findMatchingTabWithUrl(suggestion.getUrl());
if (tab == null) { if (tab == null || mTabModelSelectorSupplier == null
|| mTabModelSelectorSupplier.get() == null) {
onSelection(suggestion, position); onSelection(suggestion, position);
return; return;
} }
...@@ -589,14 +603,9 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi ...@@ -589,14 +603,9 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi
// animation since Android will show the animation for switching apps. // animation since Android will show the animation for switching apps.
if (tab.getWindowAndroid().getActivityState() != ActivityState.STOPPED if (tab.getWindowAndroid().getActivityState() != ActivityState.STOPPED
&& tab.getWindowAndroid().getActivityState() != ActivityState.DESTROYED) { && tab.getWindowAndroid().getActivityState() != ActivityState.DESTROYED) {
// TODO(1097292): Do not use Activity to get TabModelSelector.
assert tab.getWindowAndroid().getActivity().get() instanceof ChromeActivity;
ChromeActivity chromeActivity =
(ChromeActivity) tab.getWindowAndroid().getActivity().get();
int tabIndex = TabModelUtils.getTabIndexById( int tabIndex = TabModelUtils.getTabIndexById(
chromeActivity.getTabModelSelector().getModel(tab.isIncognito()), tab.getId()); mTabModelSelectorSupplier.get().getModel(tab.isIncognito()), tab.getId());
chromeActivity.getTabModelSelector() mTabModelSelectorSupplier.get()
.getModel(tab.isIncognito()) .getModel(tab.isIncognito())
.setIndex(tabIndex, TabSelectionType.FROM_OMNIBOX); .setIndex(tabIndex, TabSelectionType.FROM_OMNIBOX);
} else { } else {
......
...@@ -163,7 +163,7 @@ public class SearchActivity extends AsyncInitializationActivity ...@@ -163,7 +163,7 @@ public class SearchActivity extends AsyncInitializationActivity
mSearchBox.setDelegate(this); mSearchBox.setDelegate(this);
mSearchBox.setToolbarDataProvider(mSearchBoxDataProvider); mSearchBox.setToolbarDataProvider(mSearchBoxDataProvider);
mSearchBox.initializeControls( mSearchBox.initializeControls(
new WindowDelegate(getWindow()), getWindowAndroid(), null, null, null, null); new WindowDelegate(getWindow()), getWindowAndroid(), null, null, null, null, null);
// Kick off everything needed for the user to type into the box. // Kick off everything needed for the user to type into the box.
beginQuery(); beginQuery();
......
...@@ -45,6 +45,7 @@ import org.chromium.chrome.browser.share.ShareDelegate; ...@@ -45,6 +45,7 @@ import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.signin.SigninPromoUtil; import org.chromium.chrome.browser.signin.SigninPromoUtil;
import org.chromium.chrome.browser.status_indicator.StatusIndicatorCoordinator; import org.chromium.chrome.browser.status_indicator.StatusIndicatorCoordinator;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
import org.chromium.chrome.browser.toolbar.ToolbarButtonInProductHelpController; import org.chromium.chrome.browser.toolbar.ToolbarButtonInProductHelpController;
import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarConfiguration; import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarConfiguration;
...@@ -103,10 +104,11 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native ...@@ -103,10 +104,11 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
ObservableSupplier<Profile> profileSupplier, ObservableSupplier<Profile> profileSupplier,
ObservableSupplier<BookmarkBridge> bookmarkBridgeSupplier, ObservableSupplier<BookmarkBridge> bookmarkBridgeSupplier,
ObservableSupplier<OverviewModeBehavior> overviewModeBehaviorSupplier, ObservableSupplier<OverviewModeBehavior> overviewModeBehaviorSupplier,
Supplier<ContextualSearchManager> contextualSearchManagerSupplier) { Supplier<ContextualSearchManager> contextualSearchManagerSupplier,
ObservableSupplier<TabModelSelector> tabModelSelectorSupplier) {
super(activity, onOmniboxFocusChangedListener, shareDelegateSupplier, tabProvider, super(activity, onOmniboxFocusChangedListener, shareDelegateSupplier, tabProvider,
profileSupplier, bookmarkBridgeSupplier, overviewModeBehaviorSupplier, profileSupplier, bookmarkBridgeSupplier, overviewModeBehaviorSupplier,
contextualSearchManagerSupplier); contextualSearchManagerSupplier, tabModelSelectorSupplier);
mIntentWithEffect = intentWithEffect; mIntentWithEffect = intentWithEffect;
mEphemeralTabCoordinatorSupplier = ephemeralTabCoordinatorSupplier; mEphemeralTabCoordinatorSupplier = ephemeralTabCoordinatorSupplier;
mCanAnimateBrowserControls = () -> { mCanAnimateBrowserControls = () -> {
......
...@@ -223,6 +223,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -223,6 +223,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
* TODO(https://crbug.com/1084528): Use OneShotSupplier once it is ready. * TODO(https://crbug.com/1084528): Use OneShotSupplier once it is ready.
* @param overviewModeBehaviorSupplier Supplier of the overview mode manager for the current * @param overviewModeBehaviorSupplier Supplier of the overview mode manager for the current
* profile. * profile.
* @param tabModelSelectorSupplier Supplier of the {@link TabModelSelector}.
*/ */
public ToolbarManager(ChromeActivity activity, BrowserControlsSizer controlsSizer, public ToolbarManager(ChromeActivity activity, BrowserControlsSizer controlsSizer,
FullscreenManager fullscreenManager, ToolbarControlContainer controlContainer, FullscreenManager fullscreenManager, ToolbarControlContainer controlContainer,
...@@ -238,7 +239,8 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -238,7 +239,8 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
@Nullable Supplier<Boolean> canAnimateNativeBrowserControls, @Nullable Supplier<Boolean> canAnimateNativeBrowserControls,
ObservableSupplier<OverviewModeBehavior> overviewModeBehaviorSupplier, ObservableSupplier<OverviewModeBehavior> overviewModeBehaviorSupplier,
ObservableSupplier<AppMenuCoordinator> appMenuCoordinatorSupplier, ObservableSupplier<AppMenuCoordinator> appMenuCoordinatorSupplier,
boolean shouldShowUpdateBadge) { boolean shouldShowUpdateBadge,
ObservableSupplier<TabModelSelector> tabModelSelectorSupplier) {
TraceEvent.begin("ToolbarManager.ToolbarManager"); TraceEvent.begin("ToolbarManager.ToolbarManager");
mActivity = activity; mActivity = activity;
mBrowserControlsSizer = controlsSizer; mBrowserControlsSizer = controlsSizer;
...@@ -332,7 +334,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -332,7 +334,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
mLocationBar.setDefaultTextEditActionModeCallback( mLocationBar.setDefaultTextEditActionModeCallback(
mActionModeController.getActionModeCallback()); mActionModeController.getActionModeCallback());
mLocationBar.initializeControls(new WindowDelegate(mActivity.getWindow()), mLocationBar.initializeControls(new WindowDelegate(mActivity.getWindow()),
mActivity.getWindowAndroid(), mActivityTabProvider, mActivity.getWindowAndroid(), mActivityTabProvider, tabModelSelectorSupplier,
mActivity::getModalDialogManager, mActivity.getShareDelegateSupplier(), mActivity::getModalDialogManager, mActivity.getShareDelegateSupplier(),
mIncognitoStateProvider); mIncognitoStateProvider);
Runnable clickDelegate = Runnable clickDelegate =
......
...@@ -41,11 +41,8 @@ import org.chromium.base.ApiCompatibilityUtils; ...@@ -41,11 +41,8 @@ import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.library_loader.LibraryLoader; import org.chromium.base.library_loader.LibraryLoader;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.Supplier;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.WindowDelegate;
import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.native_page.NativePageFactory; import org.chromium.chrome.browser.native_page.NativePageFactory;
import org.chromium.chrome.browser.ntp.NewTabPage; import org.chromium.chrome.browser.ntp.NewTabPage;
...@@ -59,10 +56,8 @@ import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; ...@@ -59,10 +56,8 @@ import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler;
import org.chromium.chrome.browser.page_info.ChromePageInfoControllerDelegate; import org.chromium.chrome.browser.page_info.ChromePageInfoControllerDelegate;
import org.chromium.chrome.browser.page_info.ChromePermissionParamsListBuilderDelegate; import org.chromium.chrome.browser.page_info.ChromePermissionParamsListBuilderDelegate;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TrustedCdn; import org.chromium.chrome.browser.tab.TrustedCdn;
import org.chromium.chrome.browser.toolbar.IncognitoStateProvider;
import org.chromium.chrome.browser.toolbar.ToolbarColors; import org.chromium.chrome.browser.toolbar.ToolbarColors;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider; import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.chrome.browser.toolbar.ToolbarTabController; import org.chromium.chrome.browser.toolbar.ToolbarTabController;
...@@ -78,9 +73,7 @@ import org.chromium.content_public.common.ContentUrlConstants; ...@@ -78,9 +73,7 @@ import org.chromium.content_public.common.ContentUrlConstants;
import org.chromium.net.GURLUtils; import org.chromium.net.GURLUtils;
import org.chromium.ui.base.Clipboard; import org.chromium.ui.base.Clipboard;
import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.interpolators.BakedBezierInterpolator; import org.chromium.ui.interpolators.BakedBezierInterpolator;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.text.SpanApplier; import org.chromium.ui.text.SpanApplier;
import org.chromium.ui.text.SpanApplier.SpanInfo; import org.chromium.ui.text.SpanApplier.SpanInfo;
import org.chromium.ui.util.ColorUtils; import org.chromium.ui.util.ColorUtils;
...@@ -746,13 +739,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL ...@@ -746,13 +739,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
} }
} }
@Override
public void initializeControls(WindowDelegate windowDelegate, WindowAndroid windowAndroid,
ActivityTabProvider activityTabProvider,
Supplier<ModalDialogManager> modalDialogManager,
Supplier<ShareDelegate> shareDelegateSupplier,
IncognitoStateProvider incognitoStateProvider) {}
@Override @Override
public void updateStatusIcon() { public void updateStatusIcon() {
if (mState == STATE_TITLE_ONLY) return; if (mState == STATE_TITLE_ONLY) return;
......
...@@ -149,6 +149,8 @@ public class RootUiCoordinator ...@@ -149,6 +149,8 @@ public class RootUiCoordinator
@Nullable @Nullable
private BrowserControlsManager mBrowserControlsManager; private BrowserControlsManager mBrowserControlsManager;
private final ObservableSupplier<TabModelSelector> mTabModelSelectorSupplier;
/** /**
* Create a new {@link RootUiCoordinator} for the given activity. * Create a new {@link RootUiCoordinator} for the given activity.
* @param activity The containing {@link ChromeActivity}. TODO(https://crbug.com/931496): * @param activity The containing {@link ChromeActivity}. TODO(https://crbug.com/931496):
...@@ -162,6 +164,7 @@ public class RootUiCoordinator ...@@ -162,6 +164,7 @@ public class RootUiCoordinator
* @param overviewModeBehaviorSupplier Supplier of the overview mode manager for the current * @param overviewModeBehaviorSupplier Supplier of the overview mode manager for the current
* profile. * profile.
* @param contextualSearchManagerSupplier Supplier of the {@link ContextualSearchManager}. * @param contextualSearchManagerSupplier Supplier of the {@link ContextualSearchManager}.
* @param tabModelSelectorSupplier Supplier of the {@link TabModelSelector}.
*/ */
public RootUiCoordinator(ChromeActivity activity, public RootUiCoordinator(ChromeActivity activity,
@Nullable Callback<Boolean> onOmniboxFocusChangedListener, @Nullable Callback<Boolean> onOmniboxFocusChangedListener,
...@@ -169,7 +172,8 @@ public class RootUiCoordinator ...@@ -169,7 +172,8 @@ public class RootUiCoordinator
ActivityTabProvider tabProvider, ObservableSupplier<Profile> profileSupplier, ActivityTabProvider tabProvider, ObservableSupplier<Profile> profileSupplier,
ObservableSupplier<BookmarkBridge> bookmarkBridgeSupplier, ObservableSupplier<BookmarkBridge> bookmarkBridgeSupplier,
ObservableSupplier<OverviewModeBehavior> overviewModeBehaviorSupplier, ObservableSupplier<OverviewModeBehavior> overviewModeBehaviorSupplier,
Supplier<ContextualSearchManager> contextualSearchManagerSupplier) { Supplier<ContextualSearchManager> contextualSearchManagerSupplier,
ObservableSupplier<TabModelSelector> tabModelSelectorSupplier) {
mCallbackController = new CallbackController(); mCallbackController = new CallbackController();
mActivity = activity; mActivity = activity;
mOnOmniboxFocusChangedListener = onOmniboxFocusChangedListener; mOnOmniboxFocusChangedListener = onOmniboxFocusChangedListener;
...@@ -192,6 +196,8 @@ public class RootUiCoordinator ...@@ -192,6 +196,8 @@ public class RootUiCoordinator
mContextualSearchManagerSupplier = contextualSearchManagerSupplier; mContextualSearchManagerSupplier = contextualSearchManagerSupplier;
mActionModeControllerCallback = new ToolbarActionModeCallback(); mActionModeControllerCallback = new ToolbarActionModeCallback();
mTabModelSelectorSupplier = tabModelSelectorSupplier;
mOmniboxFocusStateSupplier.set(false); mOmniboxFocusStateSupplier.set(false);
mOverviewModeBehaviorSupplier = overviewModeBehaviorSupplier; mOverviewModeBehaviorSupplier = overviewModeBehaviorSupplier;
...@@ -309,8 +315,7 @@ public class RootUiCoordinator ...@@ -309,8 +315,7 @@ public class RootUiCoordinator
} }
mChromeActionModeHandler = new ChromeActionModeHandler(mActivity.getActivityTabProvider(), mChromeActionModeHandler = new ChromeActionModeHandler(mActivity.getActivityTabProvider(),
mToolbarManager::onActionBarVisibilityChanged, (searchText) -> { mToolbarManager::onActionBarVisibilityChanged, (searchText) -> {
TabModelSelector selector = mActivity.getTabModelSelector(); if (mTabModelSelectorSupplier.get() == null) return;
if (selector == null) return;
String query = ActionModeCallbackHelper.sanitizeQuery( String query = ActionModeCallbackHelper.sanitizeQuery(
searchText, ActionModeCallbackHelper.MAX_SEARCH_QUERY_LENGTH); searchText, ActionModeCallbackHelper.MAX_SEARCH_QUERY_LENGTH);
...@@ -321,7 +326,8 @@ public class RootUiCoordinator ...@@ -321,7 +326,8 @@ public class RootUiCoordinator
.getTrackerForProfile(Profile.fromWebContents(tab.getWebContents())) .getTrackerForProfile(Profile.fromWebContents(tab.getWebContents()))
.notifyEvent(EventConstants.WEB_SEARCH_PERFORMED); .notifyEvent(EventConstants.WEB_SEARCH_PERFORMED);
selector.openNewTab(generateUrlParamsForSearch(tab, query), mTabModelSelectorSupplier.get().openNewTab(
generateUrlParamsForSearch(tab, query),
TabLaunchType.FROM_LONGPRESS_FOREGROUND, tab, tab.isIncognito()); TabLaunchType.FROM_LONGPRESS_FOREGROUND, tab, tab.isIncognito());
}, mShareDelegateSupplier); }, mShareDelegateSupplier);
mVrModeObserver = new VrModeObserver() { mVrModeObserver = new VrModeObserver() {
...@@ -390,7 +396,7 @@ public class RootUiCoordinator ...@@ -390,7 +396,7 @@ public class RootUiCoordinator
} else if (id == R.id.share_menu_button_id || id == R.id.share_menu_id } else if (id == R.id.share_menu_button_id || id == R.id.share_menu_id
|| id == R.id.direct_share_menu_id) { || id == R.id.direct_share_menu_id) {
onShareMenuItemSelected(id == R.id.direct_share_menu_id, onShareMenuItemSelected(id == R.id.direct_share_menu_id,
mActivity.getTabModelSelector().isIncognitoSelected()); mTabModelSelectorSupplier.get().isIncognitoSelected());
} else if (id == R.id.paint_preview_show_id) { } else if (id == R.id.paint_preview_show_id) {
Tab tab = mActivityTabProvider.get(); Tab tab = mActivityTabProvider.get();
PaintPreviewTabHelper paintPreviewTabHelper = PaintPreviewTabHelper.get(tab); PaintPreviewTabHelper paintPreviewTabHelper = PaintPreviewTabHelper.get(tab);
...@@ -512,7 +518,7 @@ public class RootUiCoordinator ...@@ -512,7 +518,7 @@ public class RootUiCoordinator
mActivityTabProvider, mScrimCoordinator, mActionModeControllerCallback, mActivityTabProvider, mScrimCoordinator, mActionModeControllerCallback,
mFindToolbarManager, mProfileSupplier, mBookmarkBridgeSupplier, mFindToolbarManager, mProfileSupplier, mBookmarkBridgeSupplier,
mCanAnimateBrowserControls, mOverviewModeBehaviorSupplier, mAppMenuSupplier, mCanAnimateBrowserControls, mOverviewModeBehaviorSupplier, mAppMenuSupplier,
shouldShowMenuUpdateBadge()); shouldShowMenuUpdateBadge(), mTabModelSelectorSupplier);
if (!mActivity.supportsAppMenu()) { if (!mActivity.supportsAppMenu()) {
mToolbarManager.getToolbar().disableMenuButton(); mToolbarManager.getToolbar().disableMenuButton();
} }
...@@ -609,7 +615,7 @@ public class RootUiCoordinator ...@@ -609,7 +615,7 @@ public class RootUiCoordinator
} }
mFindToolbarManager = new FindToolbarManager( mFindToolbarManager = new FindToolbarManager(
new DeferredViewStubInflationProvider<FindToolbar>(mActivity.findViewById(stubId)), new DeferredViewStubInflationProvider<FindToolbar>(mActivity.findViewById(stubId)),
mActivity.getTabModelSelector(), mActivity.getWindowAndroid(), mTabModelSelectorSupplier.get(), mActivity.getWindowAndroid(),
mActionModeControllerCallback); mActionModeControllerCallback);
mFindToolbarObserver = new FindToolbarObserver() { mFindToolbarObserver = new FindToolbarObserver() {
...@@ -729,9 +735,8 @@ public class RootUiCoordinator ...@@ -729,9 +735,8 @@ public class RootUiCoordinator
private void initDirectActionInitializer() { private void initDirectActionInitializer() {
@ActivityType @ActivityType
int activityType = mActivity.getActivityType(); int activityType = mActivity.getActivityType();
TabModelSelector tabModelSelector = mActivity.getTabModelSelector();
mDirectActionInitializer = new DirectActionInitializer(mActivity, activityType, mActivity, mDirectActionInitializer = new DirectActionInitializer(mActivity, activityType, mActivity,
mActivity::onBackPressed, tabModelSelector, mFindToolbarManager, mActivity::onBackPressed, mTabModelSelectorSupplier.get(), mFindToolbarManager,
getBottomSheetController(), mActivity.getBrowserControlsManager(), getBottomSheetController(), mActivity.getBrowserControlsManager(),
mActivity.getCompositorViewHolder(), mActivity.getActivityTabProvider()); mActivity.getCompositorViewHolder(), mActivity.getActivityTabProvider());
mActivity.getLifecycleDispatcher().register(mDirectActionInitializer); mActivity.getLifecycleDispatcher().register(mDirectActionInitializer);
......
...@@ -170,7 +170,7 @@ public class ShareIntentTest { ...@@ -170,7 +170,7 @@ public class ShareIntentTest {
RootUiCoordinator rootUiCoordinator = TestThreadUtils.runOnUiThreadBlocking(() -> { RootUiCoordinator rootUiCoordinator = TestThreadUtils.runOnUiThreadBlocking(() -> {
return new RootUiCoordinator(mockActivity, null, return new RootUiCoordinator(mockActivity, null,
mockActivity.getShareDelegateSupplier(), mockActivity.getActivityTabProvider(), mockActivity.getShareDelegateSupplier(), mockActivity.getActivityTabProvider(),
null, null, mockActivity.getOverviewModeBehaviorSupplier(), null); null, null, mockActivity.getOverviewModeBehaviorSupplier(), null, null);
}); });
ShareHelper.setLastShareComponentName(new ComponentName("test.package", "test.activity")); ShareHelper.setLastShareComponentName(new ComponentName("test.package", "test.activity"));
// Skips the capture of screenshot and notifies with an empty file. // Skips the capture of screenshot and notifies with an empty file.
......
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