blob: 4ff5b7c03a8ffcff5df9ee4f4f00bbc225cb4160 [file] [log] [blame]
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License
*/
package android.app.backup;
import android.content.Context;
import android.os.ParcelFileDescriptor;
import java.io.File;
import java.io.IOException;
/**
* Useful for spying in {@link BackupAgent} instances since their {@link BackupAgent#onBind()} is
* final and always points to the original instance, instead of the spy.
*
* <p>To use, construct a spy of the desired {@link BackupAgent}, spying on the methods of interest.
* Then, where you need to pass the agent, use {@link ForwardingBackupAgent#forward(BackupAgent)}
* with the spy.
*/
public class ForwardingBackupAgent extends BackupAgent {
/** Returns a {@link BackupAgent} that forwards method calls to {@code backupAgent}. */
public static BackupAgent forward(BackupAgent backupAgent) {
return new ForwardingBackupAgent(backupAgent);
}
private final BackupAgent mBackupAgent;
private ForwardingBackupAgent(BackupAgent backupAgent) {
mBackupAgent = backupAgent;
}
@Override
public void onCreate() {
mBackupAgent.onCreate();
}
@Override
public void onDestroy() {
mBackupAgent.onDestroy();
}
@Override
public void onBackup(
ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)
throws IOException {
mBackupAgent.onBackup(oldState, data, newState);
}
@Override
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)
throws IOException {
mBackupAgent.onRestore(data, appVersionCode, newState);
}
@Override
public void onRestore(BackupDataInput data, long appVersionCode, ParcelFileDescriptor newState)
throws IOException {
mBackupAgent.onRestore(data, appVersionCode, newState);
}
@Override
public void onFullBackup(FullBackupDataOutput data) throws IOException {
mBackupAgent.onFullBackup(data);
}
@Override
public void onQuotaExceeded(long backupDataBytes, long quotaBytes) {
mBackupAgent.onQuotaExceeded(backupDataBytes, quotaBytes);
}
@Override
public void onRestoreFile(
ParcelFileDescriptor data, long size, File destination, int type, long mode, long mtime)
throws IOException {
mBackupAgent.onRestoreFile(data, size, destination, type, mode, mtime);
}
@Override
protected void onRestoreFile(
ParcelFileDescriptor data,
long size,
int type,
String domain,
String path,
long mode,
long mtime)
throws IOException {
mBackupAgent.onRestoreFile(data, size, type, domain, path, mode, mtime);
}
@Override
public void onRestoreFinished() {
mBackupAgent.onRestoreFinished();
}
@Override
public void attach(Context context) {
mBackupAgent.attach(context);
}
}