| Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| index 3f6b891bee4cb8e5d2ae5bcf95e1221b9c40cb41..d2f6fe913aec28943f3b2ebadde350be876367e1 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| @@ -138,6 +138,17 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| implements TabCreatorManager, AccessibilityStateChangeListener, PolicyChangeListener,
|
| ContextualSearchTabPromotionDelegate, SnackbarManageable, SceneChangeObserver {
|
| /**
|
| + * Factory which creates the AppMenuHandler.
|
| + */
|
| + public interface AppMenuHandlerFactory {
|
| + /**
|
| + * @return AppMenuHandler for the given activity and menu resource id.
|
| + */
|
| + public AppMenuHandler get(Activity activity,
|
| + AppMenuPropertiesDelegate delegate, int menuResourceId);
|
| + }
|
| +
|
| + /**
|
| * No control container to inflate during initialization.
|
| */
|
| private static final int NO_CONTROL_CONTAINER = -1;
|
| @@ -199,6 +210,22 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
|
|
| private final Locale mCurrentLocale = Locale.getDefault();
|
|
|
| + private static AppMenuHandlerFactory sAppMenuHandlerFactory = new AppMenuHandlerFactory() {
|
| + @Override
|
| + public AppMenuHandler get(
|
| + Activity activity, AppMenuPropertiesDelegate delegate, int menuResourceId) {
|
| + return new AppMenuHandler(activity, delegate, menuResourceId);
|
| + }
|
| + };
|
| +
|
| + /**
|
| + * @param The {@link AppMenuHandlerFactory} for creating {@link mAppMenuHandler}
|
| + */
|
| + @VisibleForTesting
|
| + public static void setAppMenuHandlerFactoryForTesting(AppMenuHandlerFactory factory) {
|
| + sAppMenuHandlerFactory = factory;
|
| + }
|
| +
|
| @Override
|
| public void preInflationStartup() {
|
| super.preInflationStartup();
|
| @@ -320,8 +347,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| assert controlContainer != null;
|
| ToolbarControlContainer toolbarContainer = (ToolbarControlContainer) controlContainer;
|
| mAppMenuPropertiesDelegate = createAppMenuPropertiesDelegate();
|
| - mAppMenuHandler = new AppMenuHandler(this,
|
| - mAppMenuPropertiesDelegate, getAppMenuLayoutId());
|
| + mAppMenuHandler = sAppMenuHandlerFactory.get(this, mAppMenuPropertiesDelegate,
|
| + getAppMenuLayoutId());
|
| mToolbarManager = new ToolbarManager(this, toolbarContainer, mAppMenuHandler,
|
| mAppMenuPropertiesDelegate, getCompositorViewHolder().getInvalidator());
|
| mAppMenuHandler.addObserver(new AppMenuObserver() {
|
|
|