summaryrefslogtreecommitdiffstats
path: root/services/backup
diff options
context:
space:
mode:
authorJessica Wagantall <jwagantall@cyngn.com>2016-07-07 14:19:06 -0700
committerJessica Wagantall <jwagantall@cyngn.com>2016-07-07 14:19:21 -0700
commitb6bddad1b6a0dc4f26651a1c44d8bfb57bd33fb2 (patch)
tree03bd38e3137ec8d21381bca069eda726a4f6c44b /services/backup
parent2ab71c1e6f60b0ab76208a1fd5963bac12f4aee8 (diff)
parent9b8c6d2df35455ce9e67907edded1e4a2ecb9e28 (diff)
downloadframeworks_base-b6bddad1b6a0dc4f26651a1c44d8bfb57bd33fb2.zip
frameworks_base-b6bddad1b6a0dc4f26651a1c44d8bfb57bd33fb2.tar.gz
frameworks_base-b6bddad1b6a0dc4f26651a1c44d8bfb57bd33fb2.tar.bz2
Merge remote-tracking branch 'remotes/android-6.0.1_r52' into HEAD
Ticket: CYNGNOS-3020 Change-Id: Ia14b6d0120de0b458c7c249a11041ff121389cfa
Diffstat (limited to 'services/backup')
-rw-r--r--services/backup/java/com/android/server/backup/BackupManagerService.java33
1 files changed, 26 insertions, 7 deletions
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 1629a37..3e57d31 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -80,7 +80,9 @@ import android.os.storage.StorageManager;
import android.provider.Settings;
import android.system.ErrnoException;
import android.system.Os;
+import android.text.TextUtils;
import android.util.ArrayMap;
+import android.util.ArraySet;
import android.util.AtomicFile;
import android.util.EventLog;
import android.util.Log;
@@ -93,6 +95,7 @@ import com.android.internal.backup.IBackupTransport;
import com.android.internal.backup.IObbBackupService;
import com.android.server.AppWidgetBackupBridge;
import com.android.server.EventLogTags;
+import com.android.server.SystemConfig;
import com.android.server.SystemService;
import com.android.server.backup.PackageManagerBackupAgent.Metadata;
@@ -300,6 +303,7 @@ public class BackupManagerService {
volatile boolean mClearingData;
// Transport bookkeeping
+ final ArraySet<ComponentName> mTransportWhitelist;
final Intent mTransportServiceIntent = new Intent(SERVICE_ACTION_TRANSPORT_HOST);
final ArrayMap<String,String> mTransportNames
= new ArrayMap<String,String>(); // component name -> registration name
@@ -1084,11 +1088,15 @@ public class BackupManagerService {
// Set up our transport options and initialize the default transport
// TODO: Don't create transports that we don't need to?
- mCurrentTransport = Settings.Secure.getString(context.getContentResolver(),
+ SystemConfig systemConfig = SystemConfig.getInstance();
+ mTransportWhitelist = systemConfig.getBackupTransportWhitelist();
+
+ String transport = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.BACKUP_TRANSPORT);
- if ("".equals(mCurrentTransport)) {
- mCurrentTransport = null;
+ if (TextUtils.isEmpty(transport)) {
+ transport = null;
}
+ mCurrentTransport = transport;
if (DEBUG) Slog.v(TAG, "Starting with transport " + mCurrentTransport);
// Find all transport hosts and bind to their services
@@ -1099,11 +1107,11 @@ public class BackupManagerService {
}
if (hosts != null) {
for (int i = 0; i < hosts.size(); i++) {
- final ServiceInfo transport = hosts.get(i).serviceInfo;
+ final ServiceInfo transportService = hosts.get(i).serviceInfo;
if (MORE_DEBUG) {
- Slog.v(TAG, " " + transport.packageName + "/" + transport.name);
+ Slog.v(TAG, " " + transportService.packageName + "/" + transportService.name);
}
- tryBindTransport(transport);
+ tryBindTransport(transportService);
}
}
@@ -1983,7 +1991,12 @@ public class BackupManagerService {
// Actually bind; presumes that we have already validated the transport service
boolean bindTransport(ServiceInfo transport) {
ComponentName svcName = new ComponentName(transport.packageName, transport.name);
- if (MORE_DEBUG) {
+ if (!mTransportWhitelist.contains(svcName)) {
+ Slog.w(TAG, "Proposed transport " + svcName + " not whitelisted; ignoring");
+ return false;
+ }
+
+ if (DEBUG) {
Slog.i(TAG, "Binding to transport host " + svcName);
}
Intent intent = new Intent(mTransportServiceIntent);
@@ -9654,6 +9667,12 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
+ " (now = " + System.currentTimeMillis() + ')');
pw.println(" next scheduled: " + KeyValueBackupJob.nextScheduled());
+ pw.println("Transport whitelist:");
+ for (ComponentName transport : mTransportWhitelist) {
+ pw.print(" ");
+ pw.println(transport.flattenToShortString());
+ }
+
pw.println("Available transports:");
final String[] transports = listAllTransports();
if (transports != null) {