Files
cromite/build/patches/Use-dummy-DFM-installer.patch

522 lines
23 KiB
Diff

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<String, List<InstallListener>> sSessions = new HashMap<>();
public SplitCompatEngine() {
@@ -43,83 +37,20 @@ class SplitCompatEngine implements InstallEngine {
@Override
public boolean isInstalled(String moduleName) {
- Set<String> 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<InstallListener> 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<String> 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<String> 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<String> 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;
}
--