diff options
author | Ruslan Tkhakokhov <rthakohov@google.com> | 2019-10-16 13:46:29 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-10-16 13:46:29 +0000 |
commit | b2f5699e845bac2eff8905d608347ffe1cb90450 (patch) | |
tree | e5e00f4fca01fdcc519f55f9468ff04288218423 /packages/LocalTransport | |
parent | c8ae06554b34d6c4556e2455d78b308fc156b205 (diff) | |
parent | 004e85f798dc88265edffebeba66da4efaeb2735 (diff) |
Merge "Route EncryptedLocalTransport KV backup/restore through encryption code"
Diffstat (limited to 'packages/LocalTransport')
-rw-r--r-- | packages/LocalTransport/src/com/android/localtransport/LocalTransport.java | 53 | ||||
-rw-r--r-- | packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java | 4 |
2 files changed, 32 insertions, 25 deletions
diff --git a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java index be3bcc774cd1..50f858eb04c1 100644 --- a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java +++ b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java @@ -72,19 +72,19 @@ public class LocalTransport extends BackupTransport { // Size quotas at reasonable values, similar to the current cloud-storage limits private static final long FULL_BACKUP_SIZE_QUOTA = 25 * 1024 * 1024; - private static final long KEY_VALUE_BACKUP_SIZE_QUOTA = 5 * 1024 * 1024; + protected static final long KEY_VALUE_BACKUP_SIZE_QUOTA = 5 * 1024 * 1024; private Context mContext; private File mDataDir; private File mCurrentSetDir; - private File mCurrentSetIncrementalDir; + protected File mCurrentSetIncrementalDir; private File mCurrentSetFullDir; - private PackageInfo[] mRestorePackages = null; - private int mRestorePackage = -1; // Index into mRestorePackages - private int mRestoreType; + protected PackageInfo[] mRestorePackages = null; + protected int mRestorePackage = -1; // Index into mRestorePackages + protected int mRestoreType; private File mRestoreSetDir; - private File mRestoreSetIncrementalDir; + protected File mRestoreSetIncrementalDir; private File mRestoreSetFullDir; // Additional bookkeeping for full backup @@ -116,7 +116,7 @@ public class LocalTransport extends BackupTransport { makeDataDirs(); } - LocalTransportParameters getParameters() { + public LocalTransportParameters getParameters() { return mParameters; } @@ -545,14 +545,14 @@ public class LocalTransport extends BackupTransport { int bytesLeft = numBytes; while (bytesLeft > 0) { try { - int nRead = mSocketInputStream.read(mFullBackupBuffer, 0, bytesLeft); - if (nRead < 0) { - // Something went wrong if we expect data but saw EOD - Log.w(TAG, "Unexpected EOD; failing backup"); - return TRANSPORT_ERROR; - } - mFullBackupOutputStream.write(mFullBackupBuffer, 0, nRead); - bytesLeft -= nRead; + int nRead = mSocketInputStream.read(mFullBackupBuffer, 0, bytesLeft); + if (nRead < 0) { + // Something went wrong if we expect data but saw EOD + Log.w(TAG, "Unexpected EOD; failing backup"); + return TRANSPORT_ERROR; + } + mFullBackupOutputStream.write(mFullBackupBuffer, 0, nRead); + bytesLeft -= nRead; } catch (IOException e) { Log.e(TAG, "Error handling backup data for " + mFullTargetPackage); return TRANSPORT_ERROR; @@ -628,20 +628,15 @@ public class LocalTransport extends BackupTransport { } if (mRestorePackages == null) throw new IllegalStateException("startRestore not called"); - boolean found = false; + boolean found; while (++mRestorePackage < mRestorePackages.length) { String name = mRestorePackages[mRestorePackage].packageName; // If we have key/value data for this package, deliver that // skip packages where we have a data dir but no actual contents - String[] contents = (new File(mRestoreSetIncrementalDir, name)).list(); - if (contents != null && contents.length > 0) { - if (DEBUG) { - Log.v(TAG, " nextRestorePackage(TYPE_KEY_VALUE) @ " - + mRestorePackage + " = " + name); - } + found = hasRestoreDataForPackage(name); + if (found) { mRestoreType = RestoreDescription.TYPE_KEY_VALUE; - found = true; } if (!found) { @@ -672,6 +667,18 @@ public class LocalTransport extends BackupTransport { return RestoreDescription.NO_MORE_PACKAGES; } + protected boolean hasRestoreDataForPackage(String packageName) { + String[] contents = (new File(mRestoreSetIncrementalDir, packageName)).list(); + if (contents != null && contents.length > 0) { + if (DEBUG) { + Log.v(TAG, " nextRestorePackage(TYPE_KEY_VALUE) @ " + + mRestorePackage + " = " + packageName); + } + return true; + } + return false; + } + @Override public int getRestoreData(ParcelFileDescriptor outFd) { if (mRestorePackages == null) throw new IllegalStateException("startRestore not called"); diff --git a/packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java b/packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java index 784be224f367..8b4db92910f5 100644 --- a/packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java +++ b/packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java @@ -22,7 +22,7 @@ import android.os.Handler; import android.provider.Settings; import android.util.KeyValueListParser; -class LocalTransportParameters extends KeyValueSettingObserver { +public class LocalTransportParameters extends KeyValueSettingObserver { private static final String TAG = "LocalTransportParams"; private static final String SETTING = Settings.Secure.BACKUP_LOCAL_TRANSPORT_PARAMETERS; private static final String KEY_FAKE_ENCRYPTION_FLAG = "fake_encryption_flag"; @@ -31,7 +31,7 @@ class LocalTransportParameters extends KeyValueSettingObserver { private boolean mFakeEncryptionFlag; private boolean mIsNonIncrementalOnly; - LocalTransportParameters(Handler handler, ContentResolver resolver) { + public LocalTransportParameters(Handler handler, ContentResolver resolver) { super(handler, resolver, Settings.Secure.getUriFor(SETTING)); } |