Commit d2101929 authored by Peter Kotwicz's avatar Peter Kotwicz Committed by Commit Bot

Daggerize WebappActivity

This CL daggerizes WebappActivity.

BUG=1016650

Change-Id: I06f75fdce90985bfb6a59efca0ce268032821375
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1873276
Commit-Queue: Peter Kotwicz <pkotwicz@chromium.org>
Reviewed-by: default avatarPeter Conn <peconn@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708801}
parent 25ac5638
......@@ -1797,6 +1797,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenDialogView.java",
"java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenViewBinder.java",
"java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenViewDelegate.java",
"java/src/org/chromium/chrome/browser/webapps/dependency_injection/WebappActivityComponent.java",
"java/src/org/chromium/chrome/browser/webauth/AuthenticatorFactory.java",
"java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java",
"java/src/org/chromium/chrome/browser/webauth/Fido2ApiHandler.java",
......
......@@ -14,6 +14,7 @@ import org.chromium.base.ActivityState;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.CommandLine;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabBuilder;
import org.chromium.chrome.browser.tab.TabDelegateFactory;
......@@ -27,11 +28,13 @@ import org.chromium.content_public.browser.UiThreadTaskTraits;
/**
* Base class for task-focused activities that need to display a single tab.
* @param <C> - type of associated Dagger component.
*
* Example applications that might use this Activity would be webapps and streaming media
* activities - anything where maintaining multiple tabs is unnecessary.
*/
public abstract class SingleTabActivity extends ChromeActivity {
public abstract class SingleTabActivity<C extends ChromeActivityComponent>
extends ChromeActivity<C> {
private static final int PREWARM_RENDERER_DELAY_MS = 500;
protected static final String BUNDLE_TAB_ID = "tabId";
......
......@@ -5,8 +5,8 @@
package org.chromium.chrome.browser.dependency_injection;
import org.chromium.chrome.browser.AppHooksModule;
import org.chromium.chrome.browser.browserservices.SessionDataHolder;
import org.chromium.chrome.browser.browserservices.ClearDataDialogResultRecorder;
import org.chromium.chrome.browser.browserservices.SessionDataHolder;
import org.chromium.chrome.browser.browserservices.TrustedWebActivityClient;
import org.chromium.chrome.browser.browserservices.permissiondelegation.NotificationPermissionUpdater;
import org.chromium.chrome.browser.browserservices.permissiondelegation.TrustedWebActivityPermissionManager;
......@@ -16,6 +16,7 @@ import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActi
import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityModule;
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
import org.chromium.chrome.browser.webapps.dependency_injection.WebappActivityComponent;
import javax.inject.Singleton;
......@@ -31,6 +32,7 @@ public interface ChromeAppComponent {
CustomTabActivityComponent createCustomTabActivityComponent(ChromeActivityCommonsModule module,
CustomTabActivityModule customTabActivityModule);
WebappActivityComponent createWebappActivityComponent(ChromeActivityCommonsModule module);
CustomTabsConnection resolveCustomTabsConnection();
ChromePreferenceManager resolvePreferenceManager();
......
......@@ -31,6 +31,7 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeApplication;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.SingleTabActivity;
import org.chromium.chrome.browser.WarmupManager;
......@@ -39,6 +40,7 @@ import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProv
import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
import org.chromium.chrome.browser.customtabs.CustomTabAppMenuPropertiesDelegate;
import org.chromium.chrome.browser.customtabs.features.ImmersiveModeController;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.metrics.WebApkUma;
import org.chromium.chrome.browser.tab.EmptyTabObserver;
......@@ -53,6 +55,7 @@ import org.chromium.chrome.browser.ui.widget.TintedDrawable;
import org.chromium.chrome.browser.usage_stats.UsageStatsService;
import org.chromium.chrome.browser.util.AndroidTaskUtils;
import org.chromium.chrome.browser.util.ColorUtils;
import org.chromium.chrome.browser.webapps.dependency_injection.WebappActivityComponent;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.NavigationController;
import org.chromium.content_public.browser.NavigationHandle;
......@@ -68,7 +71,7 @@ import java.util.HashMap;
/**
* Displays a webapp in a nearly UI-less Chrome (InfoBars still appear).
*/
public class WebappActivity extends SingleTabActivity {
public class WebappActivity extends SingleTabActivity<WebappActivityComponent> {
public static final String WEBAPP_SCHEME = "webapp";
private static final String TAG = "WebappActivity";
......@@ -136,9 +139,6 @@ public class WebappActivity extends SingleTabActivity {
*/
public WebappActivity() {
mWebappInfo = createWebappInfo(null);
mTabObserverRegistrar = new TabObserverRegistrar(getLifecycleDispatcher());
mSplashController =
new SplashController(this, getLifecycleDispatcher(), mTabObserverRegistrar);
mDisclosureSnackbarController = new WebappDisclosureSnackbarController();
}
......@@ -327,6 +327,16 @@ public class WebappActivity extends SingleTabActivity {
initSplash();
}
@Override
protected WebappActivityComponent createComponent(ChromeActivityCommonsModule commonsModule) {
WebappActivityComponent component =
ChromeApplication.getComponent().createWebappActivityComponent(commonsModule);
mTabObserverRegistrar = component.resolveTabObserverRegistrar();
mSplashController = component.resolveSplashController();
return component;
}
@Override
public void finishNativeInitialization() {
LayoutManager layoutDriver = new LayoutManager(getCompositorViewHolder());
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.webapps.dependency_injection;
import org.chromium.chrome.browser.dependency_injection.ActivityScope;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent;
import org.chromium.chrome.browser.tab.TabObserverRegistrar;
import org.chromium.chrome.browser.webapps.SplashController;
import dagger.Subcomponent;
/**
* Activity-scoped component associated with
* {@link org.chromium.chrome.browser.webapps.WebappActivity}.
*/
@Subcomponent(modules = {ChromeActivityCommonsModule.class})
@ActivityScope
public interface WebappActivityComponent extends ChromeActivityComponent {
SplashController resolveSplashController();
TabObserverRegistrar resolveTabObserverRegistrar();
}
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