Commit 615a53c3 authored by Matt Jones's avatar Matt Jones Committed by Commit Bot

Remove SceneOverlay#onTitleChanged

The only user of the onTitleChanged event was the tablet tab strip
which already had access to the TabModelSelector. This patch removes
the SceneOverlay method in favor of handling title change events in
the feature code.

Bug: 1100332, 882508
Change-Id: I022609157f2dd89983f6f9d15ad631783297a949
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2324665Reviewed-by: default avatarMei Liang <meiliang@chromium.org>
Commit-Queue: Matthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#793147}
parent 5a4046f5
......@@ -962,9 +962,6 @@ public class OverlayPanel extends OverlayPanelAnimation implements ActivityState
return true;
}
@Override
public void tabTitleChanged(int tabId, String title) {}
@Override
public void tabStateInitialized() {}
}
......@@ -396,18 +396,6 @@ public abstract class Layout implements TabContentManager.ThumbnailChangeListene
*/
protected void notifySizeChanged(float width, float height, @Orientation int orientation) {}
/**
* Notify the a title has changed.
*
* @param tabId The id of the tab that has changed.
* @param title The new title.
*/
public void tabTitleChanged(int tabId, String title) {
for (int i = 0; i < mSceneOverlays.size(); i++) {
mSceneOverlays.get(i).tabTitleChanged(tabId, title);
}
}
/**
* Sets the managers needed to for the layout to get information from outside. The managers
* are tailored to be called from the GL thread.
......
......@@ -4,8 +4,6 @@
package org.chromium.chrome.browser.compositor.layouts;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.ViewGroup;
import org.chromium.chrome.R;
......@@ -13,12 +11,10 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
import org.chromium.chrome.browser.compositor.overlays.strip.StripLayoutHelperManager;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDelegate;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabCreationState;
import org.chromium.chrome.browser.tab.TabLaunchType;
import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
import org.chromium.chrome.browser.toolbar.ControlContainer;
import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
......@@ -29,11 +25,8 @@ import java.util.List;
* the tablet.
*/
public class LayoutManagerChromeTablet extends LayoutManagerChrome {
// Internal State
private final String mDefaultTitle;
private StripLayoutHelperManager mTabStripLayoutHelperManager;
private TabModelSelectorTabObserver mTabObserver;
/**
* Creates an instance of a {@link LayoutManagerChromePhone}.
......@@ -41,14 +34,9 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome {
*/
public LayoutManagerChromeTablet(LayoutManagerHost host) {
super(host, false, null);
Context context = host.getContext();
mTabStripLayoutHelperManager =
new StripLayoutHelperManager(context, this, mHost.getLayoutRenderHost());
// Set up state
mDefaultTitle = context.getString(R.string.tab_loading_default_title);
mTabStripLayoutHelperManager = new StripLayoutHelperManager(
host.getContext(), this, mHost.getLayoutRenderHost(), () -> mTitleCache);
setNextLayout(null);
}
......@@ -68,11 +56,6 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome {
mTabStripLayoutHelperManager.destroy();
mTabStripLayoutHelperManager = null;
}
if (mTabObserver != null) {
mTabObserver.destroy();
mTabObserver = null;
}
}
@Override
......@@ -109,18 +92,6 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome {
super.init(selector, creator, content, androidContentContainer, controlContainer,
contextualSearchDelegate, dynamicResourceLoader);
mTabObserver = new TabModelSelectorTabObserver(selector) {
@Override
public void onFaviconUpdated(Tab tab, Bitmap icon) {
updateTitle(tab);
}
@Override
public void onTitleUpdated(Tab tab) {
updateTitle(tab);
}
};
// Make sure any tabs already restored get loaded into the title cache.
List<TabModel> models = selector.getModels();
for (int i = 0; i < models.size(); i++) {
......@@ -128,34 +99,15 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome {
for (int j = 0; j < model.getCount(); j++) {
Tab tab = model.getTabAt(j);
if (tab != null && mTitleCache != null) {
mTitleCache.getUpdatedTitle(tab, mDefaultTitle);
mTitleCache.getUpdatedTitle(
tab, mHost.getContext().getString(R.string.tab_loading_default_title));
}
}
}
}
@Override
protected LayoutManagerTabModelObserver createTabModelObserver() {
return new LayoutManagerTabModelObserver() {
@Override
public void didAddTab(
Tab tab, @TabLaunchType int launchType, @TabCreationState int creationState) {
super.didAddTab(tab, launchType, creationState);
updateTitle(getTabById(tab.getId()));
}
};
}
@Override
public StripLayoutHelperManager getStripLayoutHelperManager() {
return mTabStripLayoutHelperManager;
}
private void updateTitle(Tab tab) {
if (tab != null && mTitleCache != null) {
String title = mTitleCache.getUpdatedTitle(tab, mDefaultTitle);
getActiveLayout().tabTitleChanged(tab.getId(), title);
}
requestUpdate();
}
}
......@@ -82,14 +82,6 @@ public interface SceneOverlay {
*/
boolean handlesTabCreating();
/**
* Notify the a title has changed.
*
* @param tabId The id of the tab that has changed.
* @param title The new title.
*/
void tabTitleChanged(int tabId, String title);
/**
* Called when the TabModelSelector has been initialized with an accurate tab count.
*/
......
......@@ -6,13 +6,16 @@ package org.chromium.chrome.browser.compositor.overlays.strip;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.RectF;
import android.os.SystemClock;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.compositor.LayerTitleCache;
import org.chromium.chrome.browser.compositor.TitleCache;
import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
import org.chromium.chrome.browser.compositor.layouts.LayoutRenderHost;
import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost;
......@@ -26,11 +29,13 @@ import org.chromium.chrome.browser.compositor.overlays.SceneOverlay;
import org.chromium.chrome.browser.compositor.scene_layer.SceneOverlayLayer;
import org.chromium.chrome.browser.compositor.scene_layer.TabStripSceneLayer;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabCreationState;
import org.chromium.chrome.browser.tab.TabLaunchType;
import org.chromium.chrome.browser.tab.TabSelectionType;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelObserver;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver;
......@@ -87,6 +92,11 @@ public class StripLayoutHelperManager implements SceneOverlay {
}
};
private TabModelObserver mTabModelObserver;
private final String mDefaultTitle;
private final Supplier<TitleCache> mTitleCacheSupplier;
private class TabStripEventHandler implements GestureHandler {
@Override
public void onDown(float x, float y, boolean fromMouse, int buttons) {
......@@ -143,15 +153,18 @@ public class StripLayoutHelperManager implements SceneOverlay {
/**
* Creates an instance of the {@link StripLayoutHelperManager}.
* @param context The current Android {@link Context}.
* @param updateHost The parent {@link LayoutUpdateHost}.
* @param renderHost The {@link LayoutRenderHost}.
* @param context The current Android {@link Context}.
* @param updateHost The parent {@link LayoutUpdateHost}.
* @param renderHost The {@link LayoutRenderHost}.
* @param titleCacheSupplier A supplier of the title cache.
*/
public StripLayoutHelperManager(
Context context, LayoutUpdateHost updateHost, LayoutRenderHost renderHost) {
public StripLayoutHelperManager(Context context, LayoutUpdateHost updateHost,
LayoutRenderHost renderHost, Supplier<TitleCache> titleCacheSupplier) {
mUpdateHost = updateHost;
mTitleCacheSupplier = titleCacheSupplier;
mTabStripTreeProvider = new TabStripSceneLayer(context);
mTabStripEventHandler = new TabStripEventHandler();
mDefaultTitle = context.getString(R.string.tab_loading_default_title);
mEventFilter =
new AreaGestureEventFilter(context, mTabStripEventHandler, null, false, false);
......@@ -192,6 +205,9 @@ public class StripLayoutHelperManager implements SceneOverlay {
mIncognitoHelper.destroy();
mNormalHelper.destroy();
if (mTabModelSelector != null) {
mTabModelSelector.getTabModelFilterProvider().removeTabModelFilterObserver(
mTabModelObserver);
mTabModelSelector.removeObserver(mTabModelSelectorObserver);
mTabModelSelectorTabModelObserver.destroy();
mTabModelSelectorTabObserver.destroy();
......@@ -317,6 +333,15 @@ public class StripLayoutHelperManager implements SceneOverlay {
TabCreatorManager tabCreatorManager) {
if (mTabModelSelector == modelSelector) return;
mTabModelObserver = new TabModelObserver() {
@Override
public void didAddTab(
Tab tab, @TabLaunchType int launchType, @TabCreationState int creationState) {
updateTitleForTab(tab);
}
};
modelSelector.getTabModelFilterProvider().addTabModelFilterObserver(mTabModelObserver);
mTabModelSelector = modelSelector;
mNormalHelper.setTabModel(mTabModelSelector.getModel(false),
tabCreatorManager.getTabCreator(false));
......@@ -408,14 +433,27 @@ public class StripLayoutHelperManager implements SceneOverlay {
public void onCrash(Tab tab) {
getStripLayoutHelper(tab.isIncognito()).tabPageLoadFinished(tab.getId());
}
@Override
public void onTitleUpdated(Tab tab) {
updateTitleForTab(tab);
}
@Override
public void onFaviconUpdated(Tab tab, Bitmap icon) {
updateTitleForTab(tab);
}
};
mTabModelSelector.addObserver(mTabModelSelectorObserver);
}
@Override
public void tabTitleChanged(int tabId, String title) {
getActiveStripLayoutHelper().tabTitleChanged(tabId, title);
private void updateTitleForTab(Tab tab) {
if (mTitleCacheSupplier.get() == null) return;
String title = mTitleCacheSupplier.get().getUpdatedTitle(tab, mDefaultTitle);
getStripLayoutHelper(tab.isIncognito()).tabTitleChanged(tab.getId(), title);
mUpdateHost.requestUpdate();
}
public float getHeight() {
......
......@@ -158,9 +158,6 @@ public class ScrollingBottomViewSceneLayer extends SceneOverlayLayer implements
@Override
public void getVirtualViews(List<VirtualView> views) {}
@Override
public void tabTitleChanged(int tabId, String title) {}
@Override
public void tabStateInitialized() {}
......
......@@ -215,9 +215,6 @@ public class ToolbarSceneLayer extends SceneOverlayLayer implements SceneOverlay
return false;
}
@Override
public void tabTitleChanged(int tabId, String title) {}
@Override
public void tabStateInitialized() {}
......
......@@ -124,9 +124,6 @@ class StatusIndicatorSceneLayer extends SceneOverlayLayer implements SceneOverla
@Override
public void getVirtualViews(List<VirtualView> views) {}
@Override
public void tabTitleChanged(int tabId, String title) {}
@Override
public void tabStateInitialized() {}
......
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