Commit 2962c6cb authored by Peter Kotwicz's avatar Peter Kotwicz Committed by Commit Bot

[Android Refactor] Finish merging CustomTab & Webapp ActivityComponent

This CL:
- Merges CustomTabActivityComponent and WebappActivityComponent into
BaseCustomTabActivityComponent
- Merges CustomTabActivityModule into BaseCustomTabActivityModule
- Moves ChromeActivity#createComponent() implement to
BaseCustomTabActivity.

BUG=985328

Change-Id: I6c12a63ba405d055804262d904b5cd331cd26996
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2217859
Commit-Queue: Peter Kotwicz <pkotwicz@chromium.org>
Reviewed-by: default avatarPeter Conn <peconn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#773483}
parent 7dab9948
......@@ -461,8 +461,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/customtabs/content/TabObserverRegistrar.java",
"java/src/org/chromium/chrome/browser/customtabs/dependency_injection/BaseCustomTabActivityComponent.java",
"java/src/org/chromium/chrome/browser/customtabs/dependency_injection/BaseCustomTabActivityModule.java",
"java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java",
"java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityModule.java",
"java/src/org/chromium/chrome/browser/customtabs/features/CustomTabNavigationBarController.java",
"java/src/org/chromium/chrome/browser/customtabs/features/ImmersiveModeController.java",
"java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabBrowserControlsVisibilityDelegate.java",
......@@ -1770,7 +1768,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenProperties.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",
......
......@@ -7,6 +7,8 @@ package org.chromium.chrome.browser.customtabs;
import static androidx.browser.customtabs.CustomTabsIntent.COLOR_SCHEME_DARK;
import static androidx.browser.customtabs.CustomTabsIntent.COLOR_SCHEME_LIGHT;
import static org.chromium.chrome.browser.customtabs.content.CustomTabActivityNavigationController.FinishReason.USER_NAVIGATION;
import android.app.Activity;
import android.content.Intent;
import android.graphics.PixelFormat;
......@@ -24,6 +26,7 @@ import org.chromium.base.supplier.ObservableSupplierImpl;
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.KeyboardShortcuts;
import org.chromium.chrome.browser.WarmupManager;
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
......@@ -35,9 +38,12 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabContro
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabFactory;
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvider;
import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler;
import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler.IntentIgnoringCriterion;
import org.chromium.chrome.browser.customtabs.content.TabCreationMode;
import org.chromium.chrome.browser.customtabs.dependency_injection.BaseCustomTabActivityComponent;
import org.chromium.chrome.browser.customtabs.dependency_injection.BaseCustomTabActivityModule;
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
import org.chromium.chrome.browser.flags.ActivityType;
import org.chromium.chrome.browser.night_mode.NightModeStateProvider;
import org.chromium.chrome.browser.night_mode.PowerSavingModeMonitor;
......@@ -60,10 +66,8 @@ import org.chromium.content_public.browser.UiThreadTaskTraits;
* Contains functionality which is shared between {@link WebappActivity} and
* {@link CustomTabActivity}. Purpose of the class is to simplify merging {@link WebappActivity}
* and {@link CustomTabActivity}.
* @param <C> - type of associated Dagger component.
*/
public abstract class BaseCustomTabActivity<C extends BaseCustomTabActivityComponent>
extends ChromeActivity<C> {
public abstract class BaseCustomTabActivity extends ChromeActivity<BaseCustomTabActivityComponent> {
protected static Integer sOverrideCoreCountForTesting;
protected BrowserServicesIntentDataProvider mIntentDataProvider;
......@@ -156,10 +160,20 @@ public abstract class BaseCustomTabActivity<C extends BaseCustomTabActivityCompo
return mTabController.shouldAllocateChildConnection();
}
/**
* Called when the {@link BaseCustomTabActivityComponent} was created.
*/
protected void onComponentCreated(BaseCustomTabActivityComponent component) {
@Override
protected BaseCustomTabActivityComponent createComponent(
ChromeActivityCommonsModule commonsModule) {
// mIntentHandler comes from the base class.
IntentIgnoringCriterion intentIgnoringCriterion =
(intent) -> mIntentHandler.shouldIgnoreIntent(intent);
BaseCustomTabActivityModule baseCustomTabsModule =
new BaseCustomTabActivityModule(mIntentDataProvider, getStartupTabPreloader(),
mNightModeStateController, intentIgnoringCriterion);
BaseCustomTabActivityComponent component =
ChromeApplication.getComponent().createBaseCustomTabActivityComponent(
commonsModule, baseCustomTabsModule);
mDelegateFactory = component.resolveTabDelegateFactory();
mToolbarCoordinator = component.resolveToolbarCoordinator();
mNavigationController = component.resolveNavigationController();
......@@ -172,6 +186,15 @@ public abstract class BaseCustomTabActivity<C extends BaseCustomTabActivityCompo
component.resolveCompositorContentInitializer();
component.resolveTaskDescriptionHelper();
component.resolveUmaTracker();
CustomTabActivityClientConnectionKeeper connectionKeeper =
component.resolveConnectionKeeper();
mNavigationController.setFinishHandler((reason) -> {
if (reason == USER_NAVIGATION) connectionKeeper.recordClientConnectionStatus();
handleFinishAndClose();
});
component.resolveSessionHandler();
component.resolveCustomTabIncognitoManager();
BrowserServicesIntentDataProvider intentDataProvider = getIntentDataProvider();
if (intentDataProvider.isWebappOrWebApkActivity()) {
......@@ -180,6 +203,11 @@ public abstract class BaseCustomTabActivity<C extends BaseCustomTabActivityCompo
if (intentDataProvider.isWebApkActivity()) {
component.resolveWebApkActivityCoordinator();
}
if (mIntentDataProvider.isTrustedWebActivity()) {
mTwaCoordinator = component.resolveTrustedWebActivityCoordinator();
}
return component;
}
/**
......
......@@ -7,8 +7,6 @@ package org.chromium.chrome.browser.customtabs;
import static androidx.browser.customtabs.CustomTabsIntent.COLOR_SCHEME_DARK;
import static androidx.browser.customtabs.CustomTabsIntent.COLOR_SCHEME_LIGHT;
import static org.chromium.chrome.browser.customtabs.content.CustomTabActivityNavigationController.FinishReason.USER_NAVIGATION;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
......@@ -29,19 +27,13 @@ import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.IntentUtils;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeApplication;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.LaunchIntentDispatcher;
import org.chromium.chrome.browser.autofill_assistant.AutofillAssistantFacade;
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider.CustomTabsUiType;
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvider;
import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler.IntentIgnoringCriterion;
import org.chromium.chrome.browser.customtabs.dependency_injection.BaseCustomTabActivityModule;
import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityComponent;
import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityModule;
import org.chromium.chrome.browser.customtabs.features.CustomTabNavigationBarController;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.infobar.InfoBarContainer;
......@@ -58,7 +50,7 @@ import org.chromium.content_public.browser.WebContents;
/**
* The activity for custom tabs. It will be launched on top of a client's task.
*/
public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityComponent> {
public class CustomTabActivity extends BaseCustomTabActivity {
private CustomTabsSessionToken mSession;
private final CustomTabsConnection mConnection = CustomTabsConnection.getInstance();
......@@ -273,41 +265,6 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
&& publisherUrlPackage.equals(mConnection.getClientPackageNameForSession(mSession));
}
@Override
protected CustomTabActivityComponent createComponent(
ChromeActivityCommonsModule commonsModule) {
// mIntentHandler comes from the base class.
IntentIgnoringCriterion intentIgnoringCriterion =
(intent) -> mIntentHandler.shouldIgnoreIntent(intent);
BaseCustomTabActivityModule baseCustomTabsModule =
new BaseCustomTabActivityModule(mIntentDataProvider, getStartupTabPreloader(),
mNightModeStateController, intentIgnoringCriterion);
CustomTabActivityModule customTabsModule = new CustomTabActivityModule();
CustomTabActivityComponent component =
ChromeApplication.getComponent().createCustomTabActivityComponent(
commonsModule, baseCustomTabsModule, customTabsModule);
onComponentCreated(component);
component.resolveUmaTracker();
CustomTabActivityClientConnectionKeeper connectionKeeper =
component.resolveConnectionKeeper();
mNavigationController.setFinishHandler((reason) -> {
if (reason == USER_NAVIGATION) connectionKeeper.recordClientConnectionStatus();
handleFinishAndClose();
});
component.resolveSessionHandler();
component.resolveCustomTabIncognitoManager();
if (mIntentDataProvider.isTrustedWebActivity()) {
mTwaCoordinator = component.resolveTrustedWebActivityCoordinator();
}
return component;
}
/**
* @return The package name of the Trusted Web Activity, if the activity is a TWA; null
* otherwise.
......
......@@ -8,10 +8,18 @@ import org.chromium.chrome.browser.browserservices.trustedwebactivityui.TwaFinis
import org.chromium.chrome.browser.browserservices.ui.controller.CurrentPageVerifier;
import org.chromium.chrome.browser.browserservices.ui.controller.Verifier;
import org.chromium.chrome.browser.browserservices.ui.splashscreen.SplashController;
import org.chromium.chrome.browser.browserservices.ui.trustedwebactivity.TrustedWebActivityCoordinator;
import org.chromium.chrome.browser.customtabs.CustomTabActivityClientConnectionKeeper;
import org.chromium.chrome.browser.customtabs.CustomTabActivityLifecycleUmaTracker;
import org.chromium.chrome.browser.customtabs.CustomTabBottomBarDelegate;
import org.chromium.chrome.browser.customtabs.CustomTabCompositorContentInitializer;
import org.chromium.chrome.browser.customtabs.CustomTabDelegateFactory;
import org.chromium.chrome.browser.customtabs.CustomTabIncognitoManager;
import org.chromium.chrome.browser.customtabs.CustomTabSessionHandler;
import org.chromium.chrome.browser.customtabs.CustomTabStatusBarColorProvider;
import org.chromium.chrome.browser.customtabs.CustomTabTabPersistencePolicy;
import org.chromium.chrome.browser.customtabs.CustomTabTaskDescriptionHelper;
import org.chromium.chrome.browser.customtabs.ReparentingTaskProvider;
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityNavigationController;
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabController;
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabFactory;
......@@ -19,32 +27,53 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvid
import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler;
import org.chromium.chrome.browser.customtabs.content.TabObserverRegistrar;
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator;
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.webapps.WebApkActivityCoordinator;
import org.chromium.chrome.browser.webapps.WebappActivityCoordinator;
import dagger.Subcomponent;
/**
* Contains accessors which are shared between {@link CustomTabActivityComponent} and
* {@link WebappActivityComponent}.
* Activity-scoped component associated with
* {@link org.chromium.chrome.browser.customtabs.CustomTabActivity} and
* {@link org.chromium.chrome.browser.webapps.WebappActivity}.
*/
@Subcomponent(modules = {ChromeActivityCommonsModule.class, BaseCustomTabActivityModule.class})
@ActivityScope
public interface BaseCustomTabActivityComponent extends ChromeActivityComponent {
CurrentPageVerifier resolveCurrentPageVerifier();
CustomTabActivityClientConnectionKeeper resolveConnectionKeeper();
CustomTabActivityLifecycleUmaTracker resolveUmaTracker();
CustomTabActivityNavigationController resolveNavigationController();
CustomTabActivityTabController resolveTabController();
CustomTabActivityTabFactory resolveTabFactory();
CustomTabActivityTabProvider resolveTabProvider();
CustomTabBottomBarDelegate resolveBottomBarDelegate();
CustomTabCompositorContentInitializer resolveCompositorContentInitializer();
CustomTabDelegateFactory resolveTabDelegateFactory();
CustomTabIncognitoManager resolveCustomTabIncognitoManager();
CustomTabIntentHandler resolveIntentHandler();
CustomTabSessionHandler resolveSessionHandler();
CustomTabStatusBarColorProvider resolveCustomTabStatusBarColorProvider();
CustomTabTaskDescriptionHelper resolveTaskDescriptionHelper();
CustomTabToolbarCoordinator resolveToolbarCoordinator();
TabObserverRegistrar resolveTabObserverRegistrar();
TwaFinishHandler resolveTwaFinishHandler();
Verifier resolveVerifier();
// Webapp & WebAPK only
WebappActivityCoordinator resolveWebappActivityCoordinator();
// WebAPK only
WebApkActivityCoordinator resolveWebApkActivityCoordinator();
Verifier resolveVerifier();
// TWA only
TrustedWebActivityCoordinator resolveTrustedWebActivityCoordinator();
// For testing
CustomTabTabPersistencePolicy resolveTabPersistencePolicy();
ReparentingTaskProvider resolveReparentingTaskProvider();
SplashController resolveSplashController();
}
......@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.customtabs.dependency_injection;
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
import org.chromium.chrome.browser.browserservices.ClientAppDataRegister;
import org.chromium.chrome.browser.browserservices.trustedwebactivityui.TwaIntentHandlingStrategy;
import org.chromium.chrome.browser.browserservices.ui.controller.EmptyVerifier;
import org.chromium.chrome.browser.browserservices.ui.controller.Verifier;
......@@ -97,4 +98,9 @@ public class BaseCustomTabActivityModule {
public WebApkPostShareTargetNavigator providePostShareTargetNavigator() {
return new WebApkPostShareTargetNavigator();
}
@Provides
public ClientAppDataRegister provideClientAppDataRegister() {
return new ClientAppDataRegister();
}
}
// Copyright 2018 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.customtabs.dependency_injection;
import org.chromium.chrome.browser.browserservices.ui.trustedwebactivity.TrustedWebActivityCoordinator;
import org.chromium.chrome.browser.customtabs.CustomTabActivityClientConnectionKeeper;
import org.chromium.chrome.browser.customtabs.CustomTabActivityLifecycleUmaTracker;
import org.chromium.chrome.browser.customtabs.CustomTabBottomBarDelegate;
import org.chromium.chrome.browser.customtabs.CustomTabIncognitoManager;
import org.chromium.chrome.browser.customtabs.CustomTabSessionHandler;
import org.chromium.chrome.browser.customtabs.CustomTabTabPersistencePolicy;
import org.chromium.chrome.browser.customtabs.ReparentingTaskProvider;
import org.chromium.chrome.browser.customtabs.features.ImmersiveModeController;
import org.chromium.chrome.browser.dependency_injection.ActivityScope;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
import dagger.Subcomponent;
/**
* Activity-scoped component associated with
* {@link org.chromium.chrome.browser.customtabs.CustomTabActivity}.
*/
@Subcomponent(modules = {ChromeActivityCommonsModule.class, BaseCustomTabActivityModule.class,
CustomTabActivityModule.class})
@ActivityScope
public interface CustomTabActivityComponent extends BaseCustomTabActivityComponent {
TrustedWebActivityCoordinator resolveTrustedWebActivityCoordinator();
CustomTabBottomBarDelegate resolveBottomBarDelegate();
CustomTabActivityLifecycleUmaTracker resolveUmaTracker();
CustomTabIncognitoManager resolveCustomTabIncognitoManager();
CustomTabSessionHandler resolveSessionHandler();
CustomTabActivityClientConnectionKeeper resolveConnectionKeeper();
ImmersiveModeController resolveImmersiveModeController();
// For testing
CustomTabTabPersistencePolicy resolveTabPersistencePolicy();
ReparentingTaskProvider resolveReparentingTaskProvider();
}
// Copyright 2018 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.customtabs.dependency_injection;
import org.chromium.chrome.browser.browserservices.ClientAppDataRegister;
import dagger.Module;
import dagger.Provides;
/**
* Module for custom tab specific bindings.
*/
@Module
public class CustomTabActivityModule {
@Provides
public ClientAppDataRegister provideClientAppDataRegister() {
return new ClientAppDataRegister();
}
}
......@@ -12,12 +12,10 @@ import org.chromium.chrome.browser.browserservices.permissiondelegation.Permissi
import org.chromium.chrome.browser.browserservices.permissiondelegation.TrustedWebActivityPermissionManager;
import org.chromium.chrome.browser.customtabs.CustomTabsClientFileProcessor;
import org.chromium.chrome.browser.customtabs.CustomTabsConnection;
import org.chromium.chrome.browser.customtabs.dependency_injection.BaseCustomTabActivityComponent;
import org.chromium.chrome.browser.customtabs.dependency_injection.BaseCustomTabActivityModule;
import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityComponent;
import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityModule;
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.webapps.dependency_injection.WebappActivityComponent;
import javax.inject.Singleton;
......@@ -31,10 +29,8 @@ import dagger.Component;
public interface ChromeAppComponent {
ChromeActivityComponent createChromeActivityComponent(ChromeActivityCommonsModule module);
CustomTabActivityComponent createCustomTabActivityComponent(ChromeActivityCommonsModule module,
BaseCustomTabActivityModule baseCustomTabActivityModule,
CustomTabActivityModule customTabActivityModule);
WebappActivityComponent createWebappActivityComponent(ChromeActivityCommonsModule module,
BaseCustomTabActivityComponent createBaseCustomTabActivityComponent(
ChromeActivityCommonsModule module,
BaseCustomTabActivityModule baseCustomTabActivityModule);
CustomTabsConnection resolveCustomTabsConnection();
......
......@@ -39,7 +39,7 @@ public class WebApkUpdateTask extends NativeBackgroundTask {
List<String> ids = WebappRegistry.getInstance().findWebApksWithPendingUpdate();
for (String id : ids) {
WebappDataStorage storage = WebappRegistry.getInstance().getWebappDataStorage(id);
WeakReference<BaseCustomTabActivity<?>> activity =
WeakReference<BaseCustomTabActivity> activity =
WebappLocator.findRunningWebappActivityWithId(storage.getId());
if (activity == null || activity.get() == null) {
mStorageToUpdate = storage;
......
......@@ -157,11 +157,11 @@ class WebappActionsNotificationManager implements PauseResumeWithNativeObserver
int tabId =
IntentUtils.safeGetIntExtra(intent, IntentHandler.EXTRA_TAB_ID, Tab.INVALID_TAB_ID);
WeakReference<BaseCustomTabActivity<?>> customTabActivityRef =
WeakReference<BaseCustomTabActivity> customTabActivityRef =
WebappLocator.findWebappActivityWithTabId(tabId);
if (customTabActivityRef == null) return false;
BaseCustomTabActivity<?> customTabActivity = customTabActivityRef.get();
BaseCustomTabActivity customTabActivity = customTabActivityRef.get();
if (customTabActivity == null) return false;
if (ACTION_SHARE.equals(intent.getAction())) {
......
......@@ -14,28 +14,18 @@ import androidx.browser.customtabs.CustomTabsIntent;
import org.chromium.base.IntentUtils;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeApplication;
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
import org.chromium.chrome.browser.customtabs.BaseCustomTabActivity;
import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler.IntentIgnoringCriterion;
import org.chromium.chrome.browser.customtabs.content.TabObserverRegistrar;
import org.chromium.chrome.browser.customtabs.dependency_injection.BaseCustomTabActivityModule;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
import org.chromium.chrome.browser.webapps.dependency_injection.WebappActivityComponent;
import org.chromium.webapk.lib.common.WebApkConstants;
/**
* Displays a webapp in a nearly UI-less Chrome (InfoBars still appear).
*/
public class WebappActivity extends BaseCustomTabActivity<WebappActivityComponent> {
public class WebappActivity extends BaseCustomTabActivity {
public static final String WEBAPP_SCHEME = "webapp";
private static final String TAG = "WebappActivity";
private static BrowserServicesIntentDataProvider sIntentDataProviderOverride;
private TabObserverRegistrar mTabObserverRegistrar;
@Override
protected BrowserServicesIntentDataProvider buildIntentDataProvider(
Intent intent, @CustomTabsIntent.ColorScheme int colorScheme) {
......@@ -68,26 +58,6 @@ public class WebappActivity extends BaseCustomTabActivity<WebappActivityComponen
&& !webApkPackageName.startsWith(WebApkConstants.WEBAPK_PACKAGE_PREFIX);
}
@Override
protected WebappActivityComponent createComponent(ChromeActivityCommonsModule commonsModule) {
IntentIgnoringCriterion intentIgnoringCriterion =
(intent) -> mIntentHandler.shouldIgnoreIntent(intent);
BaseCustomTabActivityModule baseCustomTabModule =
new BaseCustomTabActivityModule(mIntentDataProvider, getStartupTabPreloader(),
mNightModeStateController, intentIgnoringCriterion);
WebappActivityComponent component =
ChromeApplication.getComponent().createWebappActivityComponent(
commonsModule, baseCustomTabModule);
onComponentCreated(component);
mTabObserverRegistrar = component.resolveTabObserverRegistrar();
mNavigationController.setFinishHandler((reason) -> { handleFinishAndClose(); });
return component;
}
@Override
public void onStopWithNative() {
super.onStopWithNative();
......
......@@ -104,7 +104,7 @@ public class WebappLauncherActivity extends Activity {
* @return True if a live WebappActivity was found, false otherwise.
*/
public static boolean bringWebappToFront(int tabId) {
WeakReference<BaseCustomTabActivity<?>> customTabActivity =
WeakReference<BaseCustomTabActivity> customTabActivity =
WebappLocator.findWebappActivityWithTabId(tabId);
if (customTabActivity == null || customTabActivity.get() == null) return false;
customTabActivity.get().getWebContentsDelegate().activateContents();
......
......@@ -18,13 +18,13 @@ import java.lang.ref.WeakReference;
*/
public class WebappLocator {
/** Returns the running WebappActivity with the given tab id. Returns null if there is none. */
public static WeakReference<BaseCustomTabActivity<?>> findWebappActivityWithTabId(int tabId) {
public static WeakReference<BaseCustomTabActivity> findWebappActivityWithTabId(int tabId) {
if (tabId == Tab.INVALID_TAB_ID) return null;
for (Activity activity : ApplicationStatus.getRunningActivities()) {
if (!(activity instanceof WebappActivity)) continue;
BaseCustomTabActivity<?> customTabActivity = (BaseCustomTabActivity<?>) activity;
BaseCustomTabActivity customTabActivity = (BaseCustomTabActivity) activity;
Tab tab = customTabActivity.getActivityTab();
if (tab != null && tab.getId() == tabId) {
return new WeakReference<>(customTabActivity);
......@@ -34,13 +34,13 @@ public class WebappLocator {
}
/** Returns the WebappActivity with the given {@link webappId}. */
public static WeakReference<BaseCustomTabActivity<?>> findRunningWebappActivityWithId(
public static WeakReference<BaseCustomTabActivity> findRunningWebappActivityWithId(
String webappId) {
for (Activity activity : ApplicationStatus.getRunningActivities()) {
if (!(activity instanceof WebappActivity)) {
continue;
}
BaseCustomTabActivity<?> customTabActivity = (BaseCustomTabActivity<?>) activity;
BaseCustomTabActivity customTabActivity = (BaseCustomTabActivity) activity;
WebappExtras webappExtras = customTabActivity.getIntentDataProvider().getWebappExtras();
if (webappExtras != null && TextUtils.equals(webappId, webappExtras.id)) {
return new WeakReference<>(customTabActivity);
......
// 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.customtabs.dependency_injection.BaseCustomTabActivityComponent;
import org.chromium.chrome.browser.customtabs.dependency_injection.BaseCustomTabActivityModule;
import org.chromium.chrome.browser.dependency_injection.ActivityScope;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
import dagger.Subcomponent;
/**
* Activity-scoped component associated with
* {@link org.chromium.chrome.browser.webapps.WebappActivity}.
*/
@Subcomponent(modules = {ChromeActivityCommonsModule.class, BaseCustomTabActivityModule.class})
@ActivityScope
public interface WebappActivityComponent extends BaseCustomTabActivityComponent {}
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