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