Commit 0290c158 authored by Tibor Goldschwendt's avatar Tibor Goldschwendt Committed by Commit Bot

[tab management] Auto-generate and use autogenerated module class

Change-Id: I42e21fe8e789a396a76e90eb88e194716bbb3bcb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1554370
Commit-Queue: Tibor Goldschwendt <tiborg@chromium.org>
Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#659195}
parent 21094fac
......@@ -41,7 +41,7 @@ android_library("java") {
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabListModel.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementModuleImpl.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabStripToolbarCoordinator.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/TabStripToolbarViewProperties.java",
......
......@@ -8,11 +8,14 @@ import android.view.ViewGroup;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ThemeColorProvider;
import org.chromium.components.module_installer.ModuleInterface;
/**
* Interface to get access to components concerning tab management.
*/
public interface TabManagementModule {
@ModuleInterface(module = "tab_management",
impl = "org.chromium.chrome.browser.tasks.tab_management.TabManagementDelegateImpl")
public interface TabManagementDelegate {
GridTabSwitcher createGridTabSwitcher(ChromeActivity activity);
TabGroupUi createTabGroupUi(ViewGroup parentView, ThemeColorProvider themeColorProvider);
}
......@@ -17,8 +17,8 @@ import org.chromium.chrome.browser.metrics.UmaSessionStats;
/**
* Impl class that will resolve components for tab management.
*/
@UsedByReflection("TabManagementModuleProvider.java")
public class TabManagementModuleImpl implements TabManagementModule {
@UsedByReflection("TabManagementModule")
public class TabManagementDelegateImpl implements TabManagementDelegate {
@Override
public GridTabSwitcher createGridTabSwitcher(ChromeActivity activity) {
if (ChromeFeatureList.isInitialized()) {
......
......@@ -8,30 +8,19 @@ import android.support.annotation.Nullable;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.metrics.UmaSessionStats;
import org.chromium.components.module_installer.ModuleInstaller;
/**
* Provider class for TabManagementModule.
*/
public class TabManagementModuleProvider {
public static final String SYNTHETIC_TRIAL_POSTFIX = "SyntheticTrial";
private static final String TAB_MANAGEMENT_MODULE_IMPL_CLASS_NAME =
"org.chromium.chrome.browser.tasks.tab_management.TabManagementModuleImpl";
/**
* Returns fallback or real {@link TabManagementModule} implementation depending on whether
* the module is installed.
* Returns {@link TabManagementDelegate} implementation if the module is installed. null,
* otherwise.
*/
public static @Nullable TabManagementModule getTabManagementModule() {
TabManagementModule tabManagementModule;
try {
tabManagementModule =
(TabManagementModule) Class.forName(TAB_MANAGEMENT_MODULE_IMPL_CLASS_NAME)
.newInstance();
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| IllegalArgumentException e) {
ModuleInstaller.installDeferred("tab_ui");
public static @Nullable TabManagementDelegate getDelegate() {
if (!TabManagementModule.isInstalled()) {
TabManagementModule.installDeferred();
if (ChromeFeatureList.isInitialized()) {
UmaSessionStats.registerSyntheticFieldTrial(
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID + SYNTHETIC_TRIAL_POSTFIX,
......@@ -54,6 +43,6 @@ public class TabManagementModuleProvider {
"Downloaded_Control");
}
}
return tabManagementModule;
return TabManagementModule.getImpl();
}
}
......@@ -6,7 +6,7 @@ public_tab_management_java_sources = [
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/GridTabSwitcher.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/SilenceLintErrors.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUi.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementModule.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementModuleProvider.java",
]
......
......@@ -749,11 +749,11 @@ public class ChromeTabbedActivity
UsageStatsService.getInstance().createPageViewObserver(mTabModelSelectorImpl, this);
}
if (FeatureUtilities.isGridTabSwitcherEnabled()
|| FeatureUtilities.isTabGroupsAndroidEnabled()) {
if (TabManagementModuleProvider.getDelegate() != null
&& (FeatureUtilities.isGridTabSwitcherEnabled()
|| FeatureUtilities.isTabGroupsAndroidEnabled())) {
GridTabSwitcher gridTabSwitcher =
TabManagementModuleProvider.getTabManagementModule().createGridTabSwitcher(
this);
TabManagementModuleProvider.getDelegate().createGridTabSwitcher(this);
mOverviewModeController.overrideOverviewModeController(
gridTabSwitcher.getOverviewModeController());
}
......
......@@ -82,8 +82,9 @@ public class BottomControlsCoordinator {
root.getResources().getDimensionPixelOffset(
R.dimen.bottom_toolbar_height_with_shadow));
if (FeatureUtilities.isTabGroupsAndroidEnabled()) {
mTabGroupUi = TabManagementModuleProvider.getTabManagementModule().createTabGroupUi(
if (TabManagementModuleProvider.getDelegate() != null
&& FeatureUtilities.isTabGroupsAndroidEnabled()) {
mTabGroupUi = TabManagementModuleProvider.getDelegate().createTabGroupUi(
root.findViewById(R.id.bottom_container_slot), themeColorProvider);
} else {
mBottomToolbarCoordinator = new BottomToolbarCoordinator(
......
......@@ -593,7 +593,7 @@ public class FeatureUtilities {
ChromeFeatureList.DOWNLOAD_TAB_MANAGEMENT_MODULE)
|| ChromeFeatureList.isEnabled(
ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID))
&& TabManagementModuleProvider.getTabManagementModule() != null
&& TabManagementModuleProvider.getDelegate() != null
&& ChromeFeatureList.isEnabled(ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID));
}
......@@ -620,7 +620,7 @@ public class FeatureUtilities {
ChromeFeatureList.DOWNLOAD_TAB_MANAGEMENT_MODULE)
|| ChromeFeatureList.isEnabled(
ChromeFeatureList.TAB_GROUPS_ANDROID))
&& TabManagementModuleProvider.getTabManagementModule() != null
&& TabManagementModuleProvider.getDelegate() != null
&& ChromeFeatureList.isEnabled(ChromeFeatureList.TAB_GROUPS_ANDROID));
}
......@@ -654,7 +654,7 @@ public class FeatureUtilities {
ChromeFeatureList.DOWNLOAD_TAB_MANAGEMENT_MODULE)
|| ChromeFeatureList.isEnabled(
ChromeFeatureList.TAB_GROUPS_UI_IMPROVEMENTS_ANDROID))
&& TabManagementModuleProvider.getTabManagementModule() != null
&& TabManagementModuleProvider.getDelegate() != null
&& ChromeFeatureList.isEnabled(
ChromeFeatureList.TAB_GROUPS_UI_IMPROVEMENTS_ANDROID));
}
......
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