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