Commit 97a0fbce authored by Clark DuVall's avatar Clark DuVall Committed by Commit Bot

Convert ChromeBackupAgent to split compat

Review from Patchset 1 to get the right diffs on the changes in
ChromeBackupAgentImpl.

Bug: 1126301
Change-Id: I441e3dc4cf098212d6170db7f3913ef2edbc2066
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2461221Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815445}
parent 0fb73c35
......@@ -2069,8 +2069,10 @@ android_library("base_module_java") {
sources = [
"java/src/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java",
"java/src/org/chromium/chrome/browser/ChromeBackgroundService.java",
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
"java/src/org/chromium/chrome/browser/base/SplitChromeApplication.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatApplication.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatGcmListenerService.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatGcmTaskService.java",
......@@ -3066,7 +3068,7 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java",
"java/src/org/chromium/chrome/browser/AppHooks.java",
"java/src/org/chromium/chrome/browser/ApplicationLifetime.java",
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
"java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java",
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
"java/src/org/chromium/chrome/browser/DevToolsServer.java",
"java/src/org/chromium/chrome/browser/IntentHandler.java",
......
......@@ -16,7 +16,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java",
"java/src/org/chromium/chrome/browser/ChromeApplication.java",
"java/src/org/chromium/chrome/browser/ChromeBackgroundServiceImpl.java",
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
"java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java",
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
"java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
"java/src/org/chromium/chrome/browser/ChromeInactivityTracker.java",
......
......@@ -50,7 +50,7 @@ public class ChromeBackupWatcher {
}
sharedPrefs.addObserver((key) -> {
// Update the backup if any of the backed up Android preferences change.
for (String pref : ChromeBackupAgent.BACKUP_ANDROID_BOOL_PREFS) {
for (String pref : ChromeBackupAgentImpl.BACKUP_ANDROID_BOOL_PREFS) {
if (key.equals(pref)) {
onBackupPrefsChanged();
return;
......
// Copyright 2020 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.base;
import android.app.backup.BackupAgent;
import android.app.backup.BackupDataInput;
import android.app.backup.BackupDataOutput;
import android.content.Context;
import android.os.ParcelFileDescriptor;
import java.io.IOException;
/**
* BackupAgent base class which will call through to the given {@link Impl}. This class must be
* present in the base module, while the Impl can be in the chrome module.
*/
public class SplitCompatBackupAgent extends BackupAgent {
private String mBackupAgentClassName;
private Impl mImpl;
public SplitCompatBackupAgent(String backupAgentClassName) {
mBackupAgentClassName = backupAgentClassName;
}
@Override
protected void attachBaseContext(Context context) {
context = SplitCompatUtils.createChromeContext(context);
mImpl = (Impl) SplitCompatUtils.newInstance(context, mBackupAgentClassName);
mImpl.setBackupAgent(this);
super.attachBaseContext(context);
}
@Override
public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
ParcelFileDescriptor newState) throws IOException {
mImpl.onBackup(oldState, data, newState);
}
@Override
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)
throws IOException {
mImpl.onRestore(data, appVersionCode, newState);
}
/**
* Holds the implementation of backup agent logic. Will be called by {@link
* SplitCompatBackupAgent}.
*/
public abstract static class Impl {
private SplitCompatBackupAgent mBackupAgent;
protected final void setBackupAgent(SplitCompatBackupAgent backupAgent) {
mBackupAgent = backupAgent;
}
protected final BackupAgent getBackupAgent() {
return mBackupAgent;
}
public abstract void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
ParcelFileDescriptor newState) throws IOException;
public abstract void onRestore(BackupDataInput data, int appVersionCode,
ParcelFileDescriptor newState) throws IOException;
}
}
......@@ -32,7 +32,7 @@ import org.chromium.chrome.browser.AfterStartupTaskUtils;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.ChromeActivitySessionTracker;
import org.chromium.chrome.browser.ChromeApplication;
import org.chromium.chrome.browser.ChromeBackupAgent;
import org.chromium.chrome.browser.ChromeBackupAgentImpl;
import org.chromium.chrome.browser.DefaultBrowserInfo;
import org.chromium.chrome.browser.DeferredStartupHandler;
import org.chromium.chrome.browser.DevToolsServer;
......@@ -360,7 +360,7 @@ public class ProcessInitializationHandler {
@Override
public void run() {
// Record the saved restore state in a histogram
ChromeBackupAgent.recordRestoreHistogram();
ChromeBackupAgentImpl.recordRestoreHistogram();
}
});
......
......@@ -41,34 +41,35 @@ public class RestoreHistogramTest {
@SmallTest
public void testHistogramWriter() {
LibraryLoader.getInstance().ensureInitialized();
MetricsUtils.HistogramDelta noRestoreDelta =
new MetricsUtils.HistogramDelta(ChromeBackupAgent.HISTOGRAM_ANDROID_RESTORE_RESULT,
ChromeBackupAgent.RestoreStatus.NO_RESTORE);
MetricsUtils.HistogramDelta restoreCompletedDelta =
new MetricsUtils.HistogramDelta(ChromeBackupAgent.HISTOGRAM_ANDROID_RESTORE_RESULT,
ChromeBackupAgent.RestoreStatus.RESTORE_COMPLETED);
MetricsUtils.HistogramDelta restoreStatusRecorded =
new MetricsUtils.HistogramDelta(ChromeBackupAgent.HISTOGRAM_ANDROID_RESTORE_RESULT,
ChromeBackupAgent.RestoreStatus.RESTORE_STATUS_RECORDED);
MetricsUtils.HistogramDelta noRestoreDelta = new MetricsUtils.HistogramDelta(
ChromeBackupAgentImpl.HISTOGRAM_ANDROID_RESTORE_RESULT,
ChromeBackupAgentImpl.RestoreStatus.NO_RESTORE);
MetricsUtils.HistogramDelta restoreCompletedDelta = new MetricsUtils.HistogramDelta(
ChromeBackupAgentImpl.HISTOGRAM_ANDROID_RESTORE_RESULT,
ChromeBackupAgentImpl.RestoreStatus.RESTORE_COMPLETED);
MetricsUtils.HistogramDelta restoreStatusRecorded = new MetricsUtils.HistogramDelta(
ChromeBackupAgentImpl.HISTOGRAM_ANDROID_RESTORE_RESULT,
ChromeBackupAgentImpl.RestoreStatus.RESTORE_STATUS_RECORDED);
// Check behavior with no preference set
ChromeBackupAgent.recordRestoreHistogram();
ChromeBackupAgentImpl.recordRestoreHistogram();
Assert.assertEquals(1, noRestoreDelta.getDelta());
Assert.assertEquals(0, restoreCompletedDelta.getDelta());
Assert.assertEquals(ChromeBackupAgent.RestoreStatus.RESTORE_STATUS_RECORDED,
ChromeBackupAgent.getRestoreStatus());
Assert.assertEquals(ChromeBackupAgentImpl.RestoreStatus.RESTORE_STATUS_RECORDED,
ChromeBackupAgentImpl.getRestoreStatus());
// Check behavior with a restore status
ChromeBackupAgent.setRestoreStatus(ChromeBackupAgent.RestoreStatus.RESTORE_COMPLETED);
ChromeBackupAgent.recordRestoreHistogram();
ChromeBackupAgentImpl.setRestoreStatus(
ChromeBackupAgentImpl.RestoreStatus.RESTORE_COMPLETED);
ChromeBackupAgentImpl.recordRestoreHistogram();
Assert.assertEquals(1, noRestoreDelta.getDelta());
Assert.assertEquals(1, restoreCompletedDelta.getDelta());
Assert.assertEquals(ChromeBackupAgent.RestoreStatus.RESTORE_STATUS_RECORDED,
ChromeBackupAgent.getRestoreStatus());
Assert.assertEquals(ChromeBackupAgentImpl.RestoreStatus.RESTORE_STATUS_RECORDED,
ChromeBackupAgentImpl.getRestoreStatus());
// Second call should record nothing (note this assumes it doesn't record something totally
// random)
ChromeBackupAgent.recordRestoreHistogram();
ChromeBackupAgentImpl.recordRestoreHistogram();
Assert.assertEquals(0, restoreStatusRecorded.getDelta());
}
......@@ -82,9 +83,9 @@ public class RestoreHistogramTest {
@SmallTest
public void testWritingHistogramAtStartup() throws InterruptedException {
LibraryLoader.getInstance().ensureInitialized();
MetricsUtils.HistogramDelta noRestoreDelta =
new MetricsUtils.HistogramDelta(ChromeBackupAgent.HISTOGRAM_ANDROID_RESTORE_RESULT,
ChromeBackupAgent.RestoreStatus.NO_RESTORE);
MetricsUtils.HistogramDelta noRestoreDelta = new MetricsUtils.HistogramDelta(
ChromeBackupAgentImpl.HISTOGRAM_ANDROID_RESTORE_RESULT,
ChromeBackupAgentImpl.RestoreStatus.NO_RESTORE);
// Histogram should be written the first time the activity is started.
mActivityTestRule.startMainActivityOnBlankPage();
......
......@@ -8,7 +8,7 @@
#include "base/android/jni_array.h"
#include "base/stl_util.h"
#include "chrome/android/chrome_jni_headers/ChromeBackupAgent_jni.h"
#include "chrome/android/chrome_jni_headers/ChromeBackupAgentImpl_jni.h"
#include "chrome/browser/android/chrome_backup_agent.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_pref_names.h"
......@@ -33,7 +33,7 @@ const char* backed_up_preferences_[] = {
} // namespace
static base::android::ScopedJavaLocalRef<jobjectArray>
JNI_ChromeBackupAgent_GetBoolBackupNames(
JNI_ChromeBackupAgentImpl_GetBoolBackupNames(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& jcaller) {
return base::android::ToJavaArrayOfStrings(env,
......@@ -41,7 +41,7 @@ JNI_ChromeBackupAgent_GetBoolBackupNames(
}
static base::android::ScopedJavaLocalRef<jbooleanArray>
JNI_ChromeBackupAgent_GetBoolBackupValues(
JNI_ChromeBackupAgentImpl_GetBoolBackupValues(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& jcaller) {
PrefService* prefs = ProfileManager::GetLastUsedProfile()->GetPrefs();
......@@ -56,7 +56,7 @@ JNI_ChromeBackupAgent_GetBoolBackupValues(
return base::android::ScopedJavaLocalRef<jbooleanArray>(env, array);
}
static void JNI_ChromeBackupAgent_SetBoolBackupPrefs(
static void JNI_ChromeBackupAgentImpl_SetBoolBackupPrefs(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& jcaller,
const base::android::JavaParamRef<jobjectArray>& names,
......@@ -87,13 +87,13 @@ std::vector<std::string> GetBackupPrefNames() {
base::android::ScopedJavaLocalRef<jobjectArray> GetBoolBackupNamesForTesting(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& jcaller) {
return JNI_ChromeBackupAgent_GetBoolBackupNames(env, jcaller);
return JNI_ChromeBackupAgentImpl_GetBoolBackupNames(env, jcaller);
}
base::android::ScopedJavaLocalRef<jbooleanArray> GetBoolBackupValuesForTesting(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& jcaller) {
return JNI_ChromeBackupAgent_GetBoolBackupValues(env, jcaller);
return JNI_ChromeBackupAgentImpl_GetBoolBackupValues(env, jcaller);
}
void SetBoolBackupPrefsForTesting(
......@@ -101,7 +101,7 @@ void SetBoolBackupPrefsForTesting(
const base::android::JavaParamRef<jobject>& jcaller,
const base::android::JavaParamRef<jobjectArray>& names,
const base::android::JavaParamRef<jbooleanArray>& values) {
JNI_ChromeBackupAgent_SetBoolBackupPrefs(env, jcaller, names, values);
JNI_ChromeBackupAgentImpl_SetBoolBackupPrefs(env, jcaller, names, values);
}
} // namespace android
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