From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sun, 15 Dec 2019 19:40:37 +0100 Subject: Use dummy DFM installer License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- components/module_installer/android/BUILD.gn | 2 - .../engine/SplitCompatEngine.java | 77 +------------------ .../engine/SplitCompatEngineFacade.java | 29 ++----- .../module_installer/logger/Logger.java | 16 +--- .../logger/PlayCoreLogger.java | 50 ++---------- .../logger/SplitAvailabilityLogger.java | 40 ---------- .../logger/SplitInstallStatusLogger.java | 30 +------- .../module_installer/util/ModuleUtil.java | 5 -- .../util/SplitCompatInitializer.java | 6 -- 9 files changed, 19 insertions(+), 236 deletions(-) diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn --- a/components/module_installer/android/BUILD.gn +++ b/components/module_installer/android/BUILD.gn @@ -21,13 +21,11 @@ android_library("module_installer_java") { "java/src/org/chromium/components/module_installer/logger/Logger.java", "java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java", "java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java", - "java/src/org/chromium/components/module_installer/logger/SplitInstallFailureLogger.java", "java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java", "java/src/org/chromium/components/module_installer/observer/ActivityObserver.java", "java/src/org/chromium/components/module_installer/observer/ActivityObserverFacade.java", "java/src/org/chromium/components/module_installer/observer/InstallerObserver.java", "java/src/org/chromium/components/module_installer/util/ActivityObserverUtil.java", - "java/src/org/chromium/components/module_installer/util/CrashKeyRecorder.java", "java/src/org/chromium/components/module_installer/util/ModuleUtil.java", "java/src/org/chromium/components/module_installer/util/SplitCompatInitializer.java", "java/src/org/chromium/components/module_installer/util/Timer.java", diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java @@ -8,11 +8,6 @@ import android.app.Activity; import androidx.annotation.VisibleForTesting; -import com.google.android.play.core.splitinstall.SplitInstallException; -import com.google.android.play.core.splitinstall.SplitInstallRequest; -import com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener; -import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; - import org.chromium.base.ThreadUtils; import java.util.ArrayList; @@ -25,7 +20,6 @@ import java.util.Set; /** Install engine that uses Play Core and SplitCompat to install modules. */ class SplitCompatEngine implements InstallEngine { private final SplitCompatEngineFacade mFacade; - private final SplitInstallStateUpdatedListener mUpdateListener = getStatusUpdateListener(); private static final Map> sSessions = new HashMap<>(); public SplitCompatEngine() { @@ -43,83 +37,20 @@ class SplitCompatEngine implements InstallEngine { @Override public boolean isInstalled(String moduleName) { - Set installedModules = mFacade.getSplitManager().getInstalledModules(); - return installedModules.contains(moduleName); + return false; } @Override public void installDeferred(String moduleName) { - mFacade.getSplitManager().deferredInstall(Collections.singletonList(moduleName)); mFacade.getLogger().logRequestDeferredStart(moduleName); } @Override public void install(String moduleName, InstallListener listener) { ThreadUtils.assertOnUiThread(); - - List listeners = sSessions.get(moduleName); - if (listeners != null) { - listeners.add(listener); - return; - } - - registerUpdateListener(); - - listeners = new ArrayList<>(); - listeners.add(listener); - sSessions.put(moduleName, listeners); - - SplitInstallRequest request = mFacade.createSplitInstallRequest(moduleName); - - mFacade.getSplitManager() - .startInstall(request) - .addOnFailureListener( - ex -> { - int errorCode = - ex instanceof SplitInstallException - ? ((SplitInstallException) ex).getErrorCode() - : mFacade.getLogger().getUnknownRequestErrorCode(); - - // TODO(fredmello): look into potential issues with mixing split error - // code with our logger codes - fix accordingly. - mFacade.getLogger().logRequestFailure(moduleName, errorCode); - notifyListeners(moduleName, false); - }); - - mFacade.getLogger().logRequestStart(moduleName); - } - - private SplitInstallStateUpdatedListener getStatusUpdateListener() { - return state -> { - assert !state.moduleNames().isEmpty(); - - int status = state.status(); - List modules = state.moduleNames(); - - if (status == SplitInstallSessionStatus.INSTALLED) { - mFacade.updateCrashKeys(); - } - - for (String moduleName : modules) { - switch (status) { - case SplitInstallSessionStatus.INSTALLED: - notifyListeners(moduleName, true); - break; - case SplitInstallSessionStatus.FAILED: - notifyListeners(moduleName, false); - mFacade.getLogger().logStatusFailure(moduleName, state.errorCode()); - break; - } - mFacade.getLogger().logStatus(moduleName, status); - } - }; } private void notifyListeners(String moduleName, Boolean success) { - for (InstallListener listener : sSessions.get(moduleName)) { - notifyListener(listener, success); - } - sSessions.remove(moduleName); unregisterUpdateListener(); @@ -134,15 +65,9 @@ class SplitCompatEngine implements InstallEngine { } private void registerUpdateListener() { - if (sSessions.size() == 0) { - mFacade.getSplitManager().registerListener(mUpdateListener); - } } private void unregisterUpdateListener() { - if (sSessions.size() == 0) { - mFacade.getSplitManager().unregisterListener(mUpdateListener); - } } @VisibleForTesting diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngineFacade.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngineFacade.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngineFacade.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngineFacade.java @@ -6,32 +6,28 @@ package org.chromium.components.module_installer.engine; import android.app.Activity; -import com.google.android.play.core.splitcompat.SplitCompat; +/*import com.google.android.play.core.splitcompat.SplitCompat; import com.google.android.play.core.splitinstall.SplitInstallManager; import com.google.android.play.core.splitinstall.SplitInstallManagerFactory; -import com.google.android.play.core.splitinstall.SplitInstallRequest; +import com.google.android.play.core.splitinstall.SplitInstallRequest;*/ import org.chromium.base.ContextUtils; import org.chromium.components.module_installer.logger.Logger; import org.chromium.components.module_installer.logger.PlayCoreLogger; -import org.chromium.components.module_installer.util.ModuleUtil; +//import org.chromium.components.module_installer.util.ModuleUtil; /** * PlayCore SplitCompatEngine Context. Class used to segregate external dependencies that * cannot be easily mocked and simplify the engine's design. */ class SplitCompatEngineFacade { - private final SplitInstallManager mSplitManager; private final Logger mLogger; public SplitCompatEngineFacade() { - this( - SplitInstallManagerFactory.create(ContextUtils.getApplicationContext()), - new PlayCoreLogger()); + this(new PlayCoreLogger()); } - public SplitCompatEngineFacade(SplitInstallManager manager, Logger umaLogger) { - mSplitManager = manager; + public SplitCompatEngineFacade(Logger umaLogger) { mLogger = umaLogger; } @@ -39,25 +35,14 @@ class SplitCompatEngineFacade { return mLogger; } - public SplitInstallManager getSplitManager() { - return mSplitManager; - } - public void installActivity(Activity activity) { - // Note that SplitCompat (install) needs to be called on the Application Context prior - // to calling this method - this is guaranteed by the behavior of SplitCompatEngine. - SplitCompat.installActivity(activity); } public void notifyObservers() { - ModuleUtil.notifyModuleInstalled(); - } - - public SplitInstallRequest createSplitInstallRequest(String moduleName) { - return SplitInstallRequest.newBuilder().addModule(moduleName).build(); + //ModuleUtil.notifyModuleInstalled(); } public void updateCrashKeys() { - ModuleUtil.updateCrashKeys(); + //ModuleUtil.updateCrashKeys(); } } diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/Logger.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/Logger.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/Logger.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/Logger.java @@ -4,9 +4,6 @@ package org.chromium.components.module_installer.logger; -import com.google.android.play.core.splitinstall.model.SplitInstallErrorCode; -import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; - /** Logger for SplitCompat Engine. */ public interface Logger { /** @@ -15,7 +12,7 @@ public interface Logger { * @param moduleName The module name. * @param errorCode The error code. */ - void logRequestFailure(String moduleName, @SplitInstallErrorCode int errorCode); + void logRequestFailure(String moduleName, int errorCode); /** * Logs exceptions that happen during the installation process. @@ -23,7 +20,7 @@ public interface Logger { * @param moduleName The module name. * @param errorCode The error code. */ - void logStatusFailure(String moduleName, @SplitInstallErrorCode int errorCode); + void logStatusFailure(String moduleName, int errorCode); /** * Logs the status count and duration during a module installation process. @@ -31,7 +28,7 @@ public interface Logger { * @param moduleName The module name * @param status The status code */ - void logStatus(String moduleName, @SplitInstallSessionStatus int status); + void logStatus(String moduleName, int status); /** * Logs the request start time. @@ -46,11 +43,4 @@ public interface Logger { * @param moduleName The module name. */ void logRequestDeferredStart(String moduleName); - - /** - * Gets the error code for an unknown error thrown at module request time. - * - * @return The error code. - */ - int getUnknownRequestErrorCode(); } diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java @@ -4,74 +4,38 @@ package org.chromium.components.module_installer.logger; -import com.google.android.play.core.splitinstall.model.SplitInstallErrorCode; -import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; - /** Concrete Logger for SplitCompat Installers (proxy to specific loggers). */ public class PlayCoreLogger implements Logger { - private final SplitInstallFailureLogger mFailureLogger; - private final SplitInstallStatusLogger mStatusLogger; - private final SplitAvailabilityLogger mAvailabilityLogger; - public PlayCoreLogger() { this( - new SplitInstallFailureLogger(), - new SplitInstallStatusLogger(), - new SplitAvailabilityLogger()); + null, + null, + null); } public PlayCoreLogger( - SplitInstallFailureLogger failureLogger, + Object failureLogger, SplitInstallStatusLogger statusLogger, SplitAvailabilityLogger availabilityLogger) { - mFailureLogger = failureLogger; - mStatusLogger = statusLogger; - mAvailabilityLogger = availabilityLogger; } @Override - public void logRequestFailure(String moduleName, @SplitInstallErrorCode int errorCode) { - mFailureLogger.logRequestFailure(moduleName, errorCode); + public void logRequestFailure(String moduleName, int errorCode) { } @Override - public void logStatusFailure(String moduleName, @SplitInstallErrorCode int errorCode) { - mFailureLogger.logStatusFailure(moduleName, errorCode); + public void logStatusFailure(String moduleName, int errorCode) { } @Override - public void logStatus(String moduleName, @SplitInstallSessionStatus int status) { - mStatusLogger.logStatusChange(moduleName, status); - - if (status == SplitInstallSessionStatus.INSTALLED) { - mAvailabilityLogger.storeModuleInstalled(moduleName, status); - mAvailabilityLogger.logInstallTimes(moduleName); - - // Keep old behavior where we log a 'success' bit with all other failures. - mFailureLogger.logStatusSuccess(moduleName); - } else if (status == SplitInstallSessionStatus.CANCELED) { - // Keep old behavior where we log a 'canceled' bit with all other failures. - mFailureLogger.logStatusCanceled(moduleName); - } else if (status == SplitInstallSessionStatus.DOWNLOADED) { - // Keep old behavior where we log a 'no split compat' bit with all other failures. - mFailureLogger.logStatusNoSplitCompat(moduleName); - } + public void logStatus(String moduleName, int status) { } @Override public void logRequestStart(String moduleName) { - mStatusLogger.logRequestStart(moduleName); - mAvailabilityLogger.storeRequestStart(moduleName); } @Override public void logRequestDeferredStart(String moduleName) { - mStatusLogger.logRequestDeferredStart(moduleName); - mAvailabilityLogger.storeRequestDeferredStart(moduleName); - } - - @Override - public int getUnknownRequestErrorCode() { - return SplitInstallFailureLogger.UNKNOWN_REQUEST_ERROR; } } diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java @@ -9,10 +9,6 @@ import android.content.SharedPreferences; import android.os.SystemClock; import android.util.SparseLongArray; -import com.google.android.play.core.splitinstall.SplitInstallManager; -import com.google.android.play.core.splitinstall.SplitInstallManagerFactory; -import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; - import org.chromium.base.ContextUtils; import org.chromium.base.metrics.RecordHistogram; @@ -50,21 +46,6 @@ public class SplitAvailabilityLogger { Set requestedModules = new HashSet<>(); requestedModules.addAll(prefs.getStringSet(ONDEMAND_REQ_PREV, new HashSet<>())); requestedModules.addAll(prefs.getStringSet(DEFERRED_REQ_PREV, new HashSet<>())); - - Context context = ContextUtils.getApplicationContext(); - SplitInstallManager manager = SplitInstallManagerFactory.create(context); - Set installedModules = manager.getInstalledModules(); - - for (String name : requestedModules) { - recordAvailabilityStatus( - name, installedModules.contains(name) ? INSTALLED_REQUESTED : REQUESTED); - } - - for (String name : installedModules) { - if (!requestedModules.contains(name)) { - recordAvailabilityStatus(name, INSTALLED_UNREQUESTED); - } - } } private static void recordAvailabilityStatus(String moduleName, int status) { @@ -78,26 +59,6 @@ public class SplitAvailabilityLogger { * @param moduleName The module name. */ public void logInstallTimes(String moduleName) { - recordInstallTime( - moduleName, - "", - SplitInstallSessionStatus.UNKNOWN, - SplitInstallSessionStatus.INSTALLED); - recordInstallTime( - moduleName, - ".PendingDownload", - SplitInstallSessionStatus.UNKNOWN, - SplitInstallSessionStatus.DOWNLOADING); - recordInstallTime( - moduleName, - ".Download", - SplitInstallSessionStatus.DOWNLOADING, - SplitInstallSessionStatus.INSTALLING); - recordInstallTime( - moduleName, - ".Installing", - SplitInstallSessionStatus.INSTALLING, - SplitInstallSessionStatus.INSTALLED); } /** @@ -184,7 +145,6 @@ public class SplitAvailabilityLogger { public InstallTimes(boolean isCached) { mIsCached = isCached; - mInstallTimes.put(SplitInstallSessionStatus.UNKNOWN, SystemClock.uptimeMillis()); } } } diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/logger/SplitInstallStatusLogger.java @@ -4,8 +4,6 @@ package org.chromium.components.module_installer.logger; -import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus; - import org.chromium.base.metrics.RecordHistogram; class SplitInstallStatusLogger { @@ -28,33 +26,7 @@ class SplitInstallStatusLogger { // Keep this one at the end and increment appropriately when adding new status. private static final int COUNT = 12; - private int getHistogramCode(@SplitInstallSessionStatus int code) { - switch (code) { - case SplitInstallSessionStatus.PENDING: - return PENDING; - case SplitInstallSessionStatus.DOWNLOADING: - return DOWNLOADING; - case SplitInstallSessionStatus.DOWNLOADED: - return DOWNLOADED; - case SplitInstallSessionStatus.INSTALLING: - return INSTALLING; - case SplitInstallSessionStatus.INSTALLED: - return INSTALLED; - case SplitInstallSessionStatus.FAILED: - return FAILED; - case SplitInstallSessionStatus.CANCELING: - return CANCELING; - case SplitInstallSessionStatus.CANCELED: - return CANCELED; - case SplitInstallSessionStatus.REQUIRES_USER_CONFIRMATION: - return REQUIRES_USER_CONFIRMATION; - } - - return UNKNOWN_CODE; - } - - public void logStatusChange(String moduleName, @SplitInstallSessionStatus int status) { - recordInstallStatus(moduleName, getHistogramCode(status)); + public void logStatusChange(String moduleName, int status) { } public void logRequestStart(String moduleName) { diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java @@ -23,11 +23,6 @@ public class ModuleUtil { /** Updates the CrashKey report containing modules currently present. */ public static void updateCrashKeys() { - if (!BundleUtils.isBundle()) return; - - try (Timer timer = new Timer()) { - CrashKeyRecorder.updateCrashKeys(); - } } /** Initializes the PlayCore SplitCompat framework. */ diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/SplitCompatInitializer.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/SplitCompatInitializer.java --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/SplitCompatInitializer.java +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/SplitCompatInitializer.java @@ -4,8 +4,6 @@ package org.chromium.components.module_installer.util; -import com.google.android.play.core.splitcompat.SplitCompat; - import org.chromium.base.ContextUtils; import org.chromium.base.StrictModeContext; import org.chromium.base.ThreadUtils; @@ -21,10 +19,6 @@ class SplitCompatInitializer { return; } - // SplitCompat.install may copy modules into Chrome's internal folder or clean them up. - try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) { - SplitCompat.install(ContextUtils.getApplicationContext()); - } sIsInitialized = true; } --