Home | History | Annotate | Download | only in params
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License
     15  */
     16 
     17 package com.android.server.backup.params;
     18 
     19 import android.annotation.Nullable;
     20 import android.app.backup.IBackupManagerMonitor;
     21 import android.app.backup.IRestoreObserver;
     22 import android.content.pm.PackageInfo;
     23 
     24 import com.android.server.backup.internal.OnTaskFinishedListener;
     25 import com.android.server.backup.transport.TransportClient;
     26 
     27 public class RestoreParams {
     28     public final TransportClient transportClient;
     29     public final IRestoreObserver observer;
     30     public final IBackupManagerMonitor monitor;
     31     public final long token;
     32     @Nullable public final PackageInfo packageInfo;
     33     public final int pmToken; // in post-install restore, the PM's token for this transaction
     34     public final boolean isSystemRestore;
     35     @Nullable public final String[] filterSet;
     36     public final OnTaskFinishedListener listener;
     37 
     38     /**
     39      * No kill after restore.
     40      */
     41     public static RestoreParams createForSinglePackage(
     42             TransportClient transportClient,
     43             IRestoreObserver observer,
     44             IBackupManagerMonitor monitor,
     45             long token,
     46             PackageInfo packageInfo,
     47             OnTaskFinishedListener listener) {
     48         return new RestoreParams(
     49                 transportClient,
     50                 observer,
     51                 monitor,
     52                 token,
     53                 packageInfo,
     54                 /* pmToken */ 0,
     55                 /* isSystemRestore */ false,
     56                 /* filterSet */ null,
     57                 listener);
     58     }
     59 
     60     /**
     61      * Kill after restore.
     62      */
     63     public static RestoreParams createForRestoreAtInstall(
     64             TransportClient transportClient,
     65             IRestoreObserver observer,
     66             IBackupManagerMonitor monitor,
     67             long token,
     68             String packageName,
     69             int pmToken,
     70             OnTaskFinishedListener listener) {
     71         String[] filterSet = {packageName};
     72         return new RestoreParams(
     73                 transportClient,
     74                 observer,
     75                 monitor,
     76                 token,
     77                 /* packageInfo */ null,
     78                 pmToken,
     79                 /* isSystemRestore */ false,
     80                 filterSet,
     81                 listener);
     82     }
     83 
     84     /**
     85      * This is the form that Setup Wizard or similar restore UXes use.
     86      */
     87     public static RestoreParams createForRestoreAll(
     88             TransportClient transportClient,
     89             IRestoreObserver observer,
     90             IBackupManagerMonitor monitor,
     91             long token,
     92             OnTaskFinishedListener listener) {
     93         return new RestoreParams(
     94                 transportClient,
     95                 observer,
     96                 monitor,
     97                 token,
     98                 /* packageInfo */ null,
     99                 /* pmToken */ 0,
    100                 /* isSystemRestore */ true,
    101                 /* filterSet */ null,
    102                 listener);
    103     }
    104 
    105     /**
    106      * Caller specifies whether is considered a system-level restore.
    107      */
    108     public static RestoreParams createForRestoreSome(
    109             TransportClient transportClient,
    110             IRestoreObserver observer,
    111             IBackupManagerMonitor monitor,
    112             long token,
    113             String[] filterSet,
    114             boolean isSystemRestore,
    115             OnTaskFinishedListener listener) {
    116         return new RestoreParams(
    117                 transportClient,
    118                 observer,
    119                 monitor,
    120                 token,
    121                 /* packageInfo */ null,
    122                 /* pmToken */ 0,
    123                 isSystemRestore,
    124                 filterSet,
    125                 listener);
    126     }
    127 
    128     private RestoreParams(
    129             TransportClient transportClient,
    130             IRestoreObserver observer,
    131             IBackupManagerMonitor monitor,
    132             long token,
    133             @Nullable PackageInfo packageInfo,
    134             int pmToken,
    135             boolean isSystemRestore,
    136             @Nullable String[] filterSet,
    137             OnTaskFinishedListener listener) {
    138         this.transportClient = transportClient;
    139         this.observer = observer;
    140         this.monitor = monitor;
    141         this.token = token;
    142         this.packageInfo = packageInfo;
    143         this.pmToken = pmToken;
    144         this.isSystemRestore = isSystemRestore;
    145         this.filterSet = filterSet;
    146         this.listener = listener;
    147     }
    148 }
    149