Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 172bb616 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove transport dir name from TransportClient"

parents d9757a7d 516ac957
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -1606,9 +1606,15 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
            return BackupManager.ERROR_BACKUP_NOT_ALLOWED;
        }

        TransportClient transportClient =
                mTransportManager.getCurrentTransportClient("BMS.requestBackup()");
        if (transportClient == null) {
        final TransportClient transportClient;
        final String transportDirName;
        try {
            transportDirName =
                    mTransportManager.getTransportDirName(
                            mTransportManager.getCurrentTransportName());
            transportClient =
                    mTransportManager.getCurrentTransportClientOrThrow("BMS.requestBackup()");
        } catch (TransportNotRegisteredException e) {
            BackupObserverUtils.sendBackupFinished(observer, BackupManager.ERROR_TRANSPORT_ABORTED);
            monitor = BackupManagerMonitorUtils.monitorEvent(monitor,
                    BackupManagerMonitor.LOG_EVENT_ID_TRANSPORT_IS_NULL,
@@ -1653,12 +1659,11 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
                    + " k/v backups");
        }

        String dirName = transportClient.getTransportDirName();
        boolean nonIncrementalBackup = (flags & BackupManager.FLAG_NON_INCREMENTAL_BACKUP) != 0;

        Message msg = mBackupHandler.obtainMessage(MSG_REQUEST_BACKUP);
        msg.obj = new BackupParams(transportClient, dirName, kvBackupList, fullBackupList, observer,
                monitor, listener, true, nonIncrementalBackup);
        msg.obj = new BackupParams(transportClient, transportDirName, kvBackupList, fullBackupList,
                observer, monitor, listener, true, nonIncrementalBackup);
        mBackupHandler.sendMessage(msg);
        return BackupManager.SUCCESS;
    }
+55 −7
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import com.android.server.EventLogTags;
import com.android.server.backup.transport.TransportClient;
import com.android.server.backup.transport.TransportClientManager;
import com.android.server.backup.transport.TransportConnectionListener;
import com.android.server.backup.transport.TransportNotAvailableException;
import com.android.server.backup.transport.TransportNotRegisteredException;

import java.util.ArrayList;
@@ -301,6 +302,18 @@ public class TransportManager {
        }
    }

    /**
     * Retrieve the transport dir name of {@code transportComponent}.
     * @throws TransportNotRegisteredException if the transport is not registered.
     */
    public String getTransportDirName(ComponentName transportComponent)
            throws TransportNotRegisteredException {
        synchronized (mTransportLock) {
            return getRegisteredTransportDescriptionOrThrowLocked(transportComponent)
                    .transportDirName;
        }
    }

    /**
     * Execute {@code transportConsumer} for each registered transport passing the transport name.
     * This is called with an internal lock held, ensuring that the transport will remain registered
@@ -370,7 +383,6 @@ public class TransportManager {
        return description;
    }


    @GuardedBy("mTransportLock")
    @Nullable
    private Map.Entry<ComponentName, TransportDescription> getRegisteredTransportEntryLocked(
@@ -385,17 +397,35 @@ public class TransportManager {
        return null;
    }

    @GuardedBy("mTransportLock")
    private TransportDescription getRegisteredTransportDescriptionOrThrowLocked(
            ComponentName transportComponent) throws TransportNotRegisteredException {
        TransportDescription description =
                mRegisteredTransportsDescriptionMap.get(transportComponent);
        if (description == null) {
            throw new TransportNotRegisteredException(transportComponent);
        }
        return description;
    }

    @Nullable
    public TransportClient getTransportClient(String transportName, String caller) {
        try {
            return getTransportClientOrThrow(transportName, caller);
        } catch (TransportNotRegisteredException e) {
            Slog.w(TAG, "Transport " + transportName + " not registered");
            return null;
        }
    }

    public TransportClient getTransportClientOrThrow(String transportName, String caller)
            throws TransportNotRegisteredException {
        synchronized (mTransportLock) {
            ComponentName component = getRegisteredTransportComponentLocked(transportName);
            if (component == null) {
                Slog.w(TAG, "Transport " + transportName + " not registered");
                return null;
                throw new TransportNotRegisteredException(transportName);
            }
            TransportDescription description = mRegisteredTransportsDescriptionMap.get(component);
            return mTransportClientManager.getTransportClient(
                    component, description.transportDirName, caller);
            return mTransportClientManager.getTransportClient(component, caller);
        }
    }

@@ -415,8 +445,26 @@ public class TransportManager {
     */
    @Nullable
    public TransportClient getCurrentTransportClient(String caller) {
        synchronized (mTransportLock) {
            return getTransportClient(mCurrentTransportName, caller);
        }
    }

    /**
     * Returns a {@link TransportClient} for the current transport or throws if not registered.
     *
     * @param caller A {@link String} identifying the caller for logging/debugging purposes. Check
     *     {@link TransportClient#connectAsync(TransportConnectionListener, String)} for more
     *     details.
     * @return A {@link TransportClient}.
     * @throws TransportNotRegisteredException if the transport is not registered.
     */
    public TransportClient getCurrentTransportClientOrThrow(String caller)
            throws TransportNotRegisteredException {
        synchronized (mTransportLock) {
            return getTransportClientOrThrow(mCurrentTransportName, caller);
        }
    }

    /**
     * Disposes of the {@link TransportClient}.
+6 −2
Original line number Diff line number Diff line
@@ -23,12 +23,14 @@ import android.util.Slog;

import com.android.internal.backup.IBackupTransport;
import com.android.server.backup.RefactoredBackupManagerService;
import com.android.server.backup.TransportManager;
import com.android.server.backup.transport.TransportClient;

import java.io.File;

public class PerformClearTask implements Runnable {
    private final RefactoredBackupManagerService mBackupManagerService;
    private final TransportManager mTransportManager;
    private final TransportClient mTransportClient;
    private final PackageInfo mPackage;
    private final OnTaskFinishedListener mListener;
@@ -37,6 +39,7 @@ public class PerformClearTask implements Runnable {
            TransportClient transportClient, PackageInfo packageInfo,
            OnTaskFinishedListener listener) {
        mBackupManagerService = backupManagerService;
        mTransportManager = backupManagerService.getTransportManager();
        mTransportClient = transportClient;
        mPackage = packageInfo;
        mListener = listener;
@@ -47,8 +50,9 @@ public class PerformClearTask implements Runnable {
        IBackupTransport transport = null;
        try {
            // Clear the on-device backup state to ensure a full backup next time
            File stateDir = new File(mBackupManagerService.getBaseStateDir(),
                    mTransportClient.getTransportDirName());
            String transportDirName =
                    mTransportManager.getTransportDirName(mTransportClient.getTransportComponent());
            File stateDir = new File(mBackupManagerService.getBaseStateDir(), transportDirName);
            File stateFile = new File(stateDir, mPackage.packageName);
            stateFile.delete();

+3 −1
Original line number Diff line number Diff line
@@ -122,7 +122,9 @@ public class PerformInitializeTask implements Runnable {
                transportClientsToDisposeOf.add(transportClient);

                Slog.i(TAG, "Initializing (wiping) backup transport storage: " + transportName);
                String transportDirName = transportClient.getTransportDirName();
                String transportDirName =
                        mTransportManager.getTransportDirName(
                                transportClient.getTransportComponent());
                EventLog.writeEvent(EventLogTags.BACKUP_START, transportDirName);
                long startRealtime = SystemClock.elapsedRealtime();

+6 −2
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ import com.android.server.backup.BackupUtils;
import com.android.server.backup.PackageManagerBackupAgent;
import com.android.server.backup.PackageManagerBackupAgent.Metadata;
import com.android.server.backup.RefactoredBackupManagerService;
import com.android.server.backup.TransportManager;
import com.android.server.backup.internal.OnTaskFinishedListener;
import com.android.server.backup.transport.TransportClient;
import com.android.server.backup.utils.AppBackupUtils;
@@ -78,6 +79,7 @@ import java.util.List;
public class PerformUnifiedRestoreTask implements BackupRestoreTask {

    private RefactoredBackupManagerService backupManagerService;
    private final TransportManager mTransportManager;
    // Transport client we're working with to do the restore
    private final TransportClient mTransportClient;

@@ -164,6 +166,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask {
            int pmToken, boolean isFullSystemRestore, String[] filterSet,
            OnTaskFinishedListener listener) {
        this.backupManagerService = backupManagerService;
        mTransportManager = backupManagerService.getTransportManager();
        mEphemeralOpToken = backupManagerService.generateRandomIntegerToken();
        mState = UnifiedRestoreState.INITIAL;
        mStartRealtime = SystemClock.elapsedRealtime();
@@ -349,8 +352,9 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask {
        }

        try {
            String transportDir = mTransportClient.getTransportDirName();
            mStateDir = new File(backupManagerService.getBaseStateDir(), transportDir);
            String transportDirName =
                    mTransportManager.getTransportDirName(mTransportClient.getTransportComponent());
            mStateDir = new File(backupManagerService.getBaseStateDir(), transportDirName);

            // Fetch the current metadata from the dataset first
            PackageInfo pmPackage = new PackageInfo();
Loading