Commit Graph

610 Commits

Author SHA1 Message Date
Ruslan Tkhakokhov
004e85f798 Route EncryptedLocalTransport KV backup/restore through encryption code
Bug: 142227548
Test: Verify the device boots successfully
      Verify EncryptedLocalTransport APK is present
      Verify manual backup/restore using bmgr for LocalTransport and EncryptedLocalTransport
      For LocalTransport (unencrypted) and EncryptedLocalTransport:
        atest CtsBackupTestCases
        atest CtsBackupHostTestCases
        atest GtsBackupTestCases
        atest GtsBackupHostTestCases


Change-Id: Iac3a8a50d7f761442a4b784cfba3a980e900dd7f
2019-10-16 08:58:01 +00:00
nathch
b85b36ac09 Move transport client code into its own lib
We will route backup through the BackupEncryption APK which will
implement an intermediate transport which will encrypt (or decrypt) the data when
sending it (receiving it) from the real transport.

Since both backup services and IntermediateTransport need to bind to
IBackupTransport, they both need the transport client code so we move that
into its own lib.

Bug: 139269919

Test: atest -v RunBackupFrameworksServicesRoboTests
Test: atest -v $(find frameworks/base/services/tests/servicestests/src/com/android/server/backup -name '\''*Test.java'\'')'
Test: atest -v CtsBackupTestCases CtsBackupHostTestCases
Change-Id: Id986162ac71adf8638e5797169ef70e0d3d58b0c
2019-09-22 17:23:17 +01:00
Al Sutton
e4accbe31f Capture all exceptions rather than just IO ones.
If an exception which isn't in the IOException hierarchy gets
thrown within this code it can bring down the system_server, so
we should capture and log any exception rather than letting it
propagate out and bring down system_server.

I decided not to capture all Throwables because they represent
more serious runtime errors that probably should bring down
system_server.

Fixes: 140472631
Test: m -j (compilation means we're OK).
Change-Id: Ibbd9612d1e9b42c100ce7fda0b7463ac3f10704e
2019-09-12 08:36:28 +01:00
Al Sutton
ad52c6bc3a Move backup encryption to separate APK
Test: atest -c --rebuild-module-info BackupEncryptionRoboTests
Change-Id: I5a8ac3a9c010bd3c516464dee333cef406c5dcfa
2019-09-06 10:22:33 +01:00
Bernardo Rufino
15bf74cf26 Merge Trampoline and BMS
Perform the merge by:
1. Moving lifecycle inside Trampoline without IDE support
(since we'll rename Trampoline in this CL as well, making the published binder
the same).
2. Move constants to Trampoline without IDE support as well (again, we'll
rename Trampoline).
3. Change the last usages of BMS constructor to use
Trampoline's. Now BMS is effectively empty.
4. Delete BMS.
5. Rename Trampoline to BMS with IDE support (renaming related classes
and variables that the IDE could find).
6. \o/

Split CL into Path Sets to ease review:
Base > PS2: Steps 1..4 (+121 -333)
PS2 > PS4: Step 5 (+214 -204)

Test: m -j
Test: adb shell dumpsys backup
Test: atest BackupManagerServiceTest BackupManagerServiceRoboTest
Bug: 135661048
Change-Id: Ia6cd340d3c5fcdb9c8f409035d032efeb090cd20
2019-08-16 14:54:18 +01:00
Bernardo Rufino
aa032460ca Move getServiceForUserIfCallerHasPermission() to Trampoline
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I7758e00635d385272b64bbc8d64dd0fd0ad600d2
2019-08-15 20:10:21 +01:00
Bernardo Rufino
0948c30a11 Move dump() to Trampoline
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I49bb231552eca269f4e694fe9ec91814f67822dc
2019-08-15 18:56:23 +01:00
Bernardo Rufino
f410de02e2 Move adb backup/restore operations to Trampoline
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I7f839a37780c5164878fd9640486c209f99620cc
2019-08-15 14:41:48 +01:00
Bernardo Rufino
a83c2e0865 Move restore operations to Trampoline
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I11d8912bca23eb9391e01016fab59346b0a6ac8c
2019-08-15 11:43:51 +01:00
Bernardo Rufino
b6bc6e2f4a Move backup operations to Trampoline
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: Ia44b7b839c2f871535e18d648be49277b46e3b11
2019-08-15 11:43:47 +01:00
Bernardo Rufino
7dedc861b6 Move settings operations to Trampoline
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I47e8072898555fd881ffa7b3d546e858fad01c6d
2019-08-15 10:25:45 +01:00
Bernardo Rufino
0c8b84e4a3 Move {get,set}AncestralSerialNumber() to Trampoline
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I48fd336dce36f39a7b0e7af5f0f9740ee2b4e246
2019-08-14 18:24:18 +01:00
Bernardo Rufino
470f8be8b4 Move updateTransportAttributes() to Trampoline
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I4527e24a35f8a65f87cb3d9d383485546b4b64e8
2019-08-14 16:02:29 +01:00
Bernardo Rufino
b188863fcc Move more transport operations to Trampoline
From BMS. Namely:
* selectBackupTransport()
* selectBackupTransportAsync()
* getConfigurationIntent()
* getDestinationString()
* getDataManagementIntent()
* getDataManagementLabel()

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I9dbc0c4dfa73bd9738ae658ff24f986000ffc54b
2019-08-14 15:53:51 +01:00
Bernardo Rufino
dd1fbf2b15 Move some transport operations to Trampoline
From BMS. Namely:
* initializeTransports()
* clearBackupData()
* getCurrentTransport()
* getCurrentTransportComponent()
* listAllTransports()
* listAllTransportComponents()

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: Ib81550b4da7615f3713c340beccd3f85eb08ca7f
2019-08-14 15:40:44 +01:00
Bernardo Rufino
ae1b0d8885 Move backup agent operations to Trampoline.
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I7e118631e293d8eb808cf47e857b9102eab60d37
2019-08-14 14:54:20 +01:00
Bernardo Rufino
1cc1768e7f Move isAbleToServeUser() to Trampoline
From BMS.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I222d11dffd29d4ce1f30c3d68837110a2058a8aa
2019-08-14 14:32:55 +01:00
Bernardo Rufino
9b55bfbd17 Move start and stop of sub-systems to Trampoline
From BMS. Moved mUserServices list creation from BMS to Trampoline.
BMS still uses it but the plan is to move gradually in multiple
CLs to eventually delete it. Both are dealing with the same instance
because of this. Start and stop of sub-system (uBMS) is now handled in
Trampoline. getUserServices() was also moved. BMS robolectric tests were moved
to Trampoline *robolectric* tests to simplify this CL. After we merge BMS and
Trampoline, we can look into moving tests away from Robolectric.

Test: atest BackupManagerServiceTest TrampolineRoboTest TrampolineTest
Bug: 135661048
Change-Id: I4e612d06fe006c12f215a94f210450a5e6316b75
2019-08-13 18:36:24 +01:00
TreeHugger Robot
99a06dbb3d Merge "Move ACTION_USER_REMOVED broadcast receiver to Trampoline" 2019-08-09 17:34:43 +00:00
Bernardo Rufino
7d04bfd788 Move ACTION_USER_REMOVED broadcast receiver to Trampoline
From BMS.

Test: Inflate user 11 then remove it, make sure directory /data/backup/11 is
      removed
Bug: 135661048
Change-Id: I482e7fb4c8ccd630ab812a396d3570be996c2a62
2019-08-09 12:26:34 +01:00
Bernardo Rufino
ce725e3019 Merge "Move transport whitelist to Trampoline" 2019-08-09 10:28:10 +00:00
Bernardo Rufino
e736756815 Merge "Move sInstance to Trampoline" 2019-08-09 10:23:28 +00:00
Bernardo Rufino
973194fa35 Move transport whitelist to Trampoline
From BMS.

Test: adb shell bmgr whitelist
Bug: 135661048
Change-Id: Ice0b49dc574cb1dfd7348a956e80abcd6c73cfa2
2019-08-08 18:59:46 +01:00
Bernardo Rufino
11b651c295 Move sInstance to Trampoline
Test: Trigger KV and Full-backup jobs
Test: adb shell bmgr backupnow <package>
Bug: 135661048
Change-Id: If569ad290f2f57a30e859367f3fac289cf23e85d
2019-08-08 14:44:55 +01:00
Chandan Nath
038f7d69b7 Merge "Add stop method to backup handler thread." 2019-08-07 10:56:48 +00:00
nathch
15bee2d83d Add stop method to backup handler thread.
This manually cherry picks ag/8713360 into master. I had to do a manual
cherry pick as the cherry pick from gerrit fails with:
"Could not perform action: Cannot create new patch set of change 8677635
because it is abandoned"

Currently we call .quit() on the underlying thread which will cause all
messages to stop being processed. This has the side effect that, because
the backup system is a state machine where the state transitions are
messages, the message to transition into a state where the WakeLock is
released may not occur when a user is torn down.

This change adds a stop method we can call instead of .quit() on the
thread which drops any remaining messages and then releases the
WakeLock.

We also wrap the wakelock acquire/release calls to prevent any acquire/release on
the underlying wakelock after a quit. For the acquire, this avoids a non-released
wakelock and for the release, this avoids a runtime exception which can happen
when we release a released wakelock

Test: atest CtsBackupTestCases CtsBackupHostTestCases
Test: m RunBackupFrameworksServicesRoboTests && atest RunBackupFrameworksServicesRoboTests
Bug: 136264323
Change-Id: Ic8742bf01a0ff71bd57dd73b01a423d3432bf7b2
2019-08-06 18:09:40 +01:00
Bernardo Rufino
d1df67ef43 Eagerly initialize BMS in Trampoline's constructor
After multi-user BMS became a lightweight class as well, so no need to
lazily initialize it. This lays the ground for unifying Trampoline and
BMS.

Test: atest TrampolineTest
Test: adb shell bmgr backupnow <package>
Bug: 135247112
Bug: 135661048
Change-Id: Ia7f69d2ed282c6dfe6443a601f27229d43802fe6
2019-08-05 14:35:40 +01:00
Al Sutton
d222a61756 Infer the activation state from the presence of a BackupManagerService.
The filesystem is checked when the BMS is created for a user so we
don't need to recheck it every time we perform a backup related
operation because wihout the BMS we shouldn't say the system is
read for the user to back up their data.

Change-Id: Iaaa7d7381182ba7e05173cc4f5d25ce61054e210
Test: atest CtsBackupTestCases CtsBackupHostTestCases TrampolineTest BackupManagerServiceTest
Fixes: 133584471
2019-07-18 15:38:20 +01:00
Al Sutton
66fa3fb2cc [Cleanup] Rename variable to match standards
Change-Id: I8098f338602f90f9597f8cc7f703fb0b9459680f
Test: m -j (Build will fail if there are references to the old name)
2019-07-17 15:47:06 +01:00
nathch
a4405523b1 replace "android" by PLATFORM_PACKAGE_NAME
Bug: 123624096

Test: atest -v CtsBackupTestCases CtsBackupHostTestCases
Change-Id: I73abf9b1a230d895daaa80ca8a5e4157f1d96438
2019-07-12 17:18:45 +01:00
TreeHugger Robot
c255afdd89 Merge "remove unused code from PerformAdbRestoreTask" 2019-07-08 14:28:38 +00:00
nathch
4c37ddb46b remove unused code from PerformAdbRestoreTask
Bug: 8483208

Test: atest -v CtsBackupTestCases
Change-Id: I31c3f291725807e6cb29a1362b2ab9556095b089
2019-07-08 11:14:37 +01:00
Bram Bonné
77feda8167 Merge "Ports over BackupStreamEncrypter and related classes." 2019-07-05 14:45:43 +00:00
Bram Bonné
bfb4faa823 Ports over BackupStreamEncrypter and related classes.
Additional changes apart from style and dependency fixes:
- Removes Guava dependencies.
- Uses Slog for logging.

Bug: 111386661
Test: atest RunFrameworksServicesRoboTests
Change-Id: I2f96fd9f2d2ec0d771c326c619eaca4ab4fa80c4
2019-07-05 11:36:01 +02:00
Chandan Nath
3c870a71e2 Merge "remove unused code" 2019-07-04 20:47:53 +00:00
nathch
eefaaa5573 remove unused code
1) FullRestoreEngine: mAllowObbs, mBytes are not used
2) PerformUnifiedRestoreTask: mSavedStateName is not used

also, use final,private where possible

Bug: 136738613

Test: atest -v CtsBackupTestCases CtsBackupHostTestCases
Change-Id: Ic65bbefdd47ba6f0c8ba9d117256972e15af2f8e
2019-07-04 15:08:13 +01:00
Bram Bonné
8b8c2d6882 Ports DecryptedChunkFileOutput and related classes.
Bug: 111386661
Test: atest RunFrameworksServicesRoboTests
Change-Id: I439d96855ceae2f614adaf0c6701f89c65864468
2019-07-02 17:21:21 +02:00
TreeHugger Robot
798a07f597 Merge "Readable constant in BackupManagerConstants" 2019-06-24 15:09:01 +00:00
Bernardo Rufino
3d460b95d1 Readable constant in BackupManagerConstants
Test: 1. adb shell dumpsys jobscheduler | grep -C 4 FullBackupJob
         Check Capabilities = NOT_METERED & INTERNET & NOT_RESTRICTED & TRUSTED
                              & VALIDATED
      2. adb shell dumpsys jobscheduler | grep -C 4 KeyValueBackupJob
         Check Capabilities = INTERNET & NOT_RESTRICTED & TRUSTED & VALIDATED

Change-Id: I4ca7c31995eb754beea602e94d664392e0959164
2019-06-20 09:59:18 +01:00
nathch
e0e4c82385 Unsubscribe listeners when stopping UserBackupManagerService and remove unused code
Unsubscribe listeners as otherwise they schedule work on a stopped handler thread
after the user backup manager service is stopped

Also cleanup by removing unused code:
a) mBackupThread from BackupManagerService
b) TAG from BackupAgentTimeoutParameters
c) getRunningFullBackupTask from UserBackupManagerService

Bug: 135261178
Bug: 135180752

Test: 1. atest -v RunBackupFrameworksServicesRoboTests
2. atest -v $(find frameworks/base/services/tests/servicestests/src/com/android/server/backup -name '\''*Test.java'\'')
3. atest -v CtsBackupTestCases
4. atest -v CtsBackupHostTestCases

Change-Id: Ie199dd49c336a2519c0f8e6c8dda12d8cba8350a
2019-06-17 18:02:10 +01:00
Al Sutton
db31ab6238 Set DEBUG_SCHEDULING to dalse by default
Change-Id: Id617362c7c1f097859d768179fcfa3fcda42dcb7
Test: atest CtsBackupTestCases CtsBackupHostTestCases GtsBackupTestCases GtsBackupHostTestCases
Fixes: 133822681
2019-06-03 17:18:16 +01:00
Ruslan Tkhakokhov
279a46bdbb Merge "Add dumpsys param to dump users running backup service" into qt-dev am: 1d6b6aea68
am: 1ee06b99eb

Change-Id: Ie6f181748929faabb950849a0edee1594e94b343
2019-05-10 16:52:56 -07:00
Ruslan Tkhakokhov
1ee06b99eb Merge "Add dumpsys param to dump users running backup service" into qt-dev
am: 1d6b6aea68

Change-Id: Icb7ff269427311f38219fc8088aea7c394ef5f96
2019-05-10 05:48:15 -07:00
Ruslan Tkhakokhov
e0399328c9 Add dumpsys param to dump users running backup service
This is required in CTS tests to know when UserBackupManagerService init is finished.

Bug: 131307343
Test: 1) atest RunBackupFrameworksServicesRoboTests
      2) atest CtsBackupTestCases
      3) atest CtsBackupHostTestCases
      4) atest GtsBackupTestCases
      5) atest GtsBackupHostTestCases

Change-Id: Ia220f32b5be793b3b36efb2985604e29b0015e53
2019-05-10 08:10:47 +00:00
Ruslan Tkhakokhov
a050ab3493 Merge "Restore can begin while clearing app data is in progress" into qt-dev am: c1da324980
am: b5a044d872

Change-Id: Ide10099cb4671e12e87f71e65813f1575fbe1798
2019-04-30 11:39:30 -07:00
Ruslan Tkhakokhov
b5a044d872 Merge "Restore can begin while clearing app data is in progress" into qt-dev
am: c1da324980

Change-Id: I3cb6ae4fda47ee82e608f3c7ab64ffedc5c65f1e
2019-04-30 10:06:23 -07:00
Ruslan Tkhakokhov
29621710fb Restore can begin while clearing app data is in progress
Increasing timeout should help as in the only recent instance where we
saw this bug, it just exceeded the timeout by a second. Mostly the clear
operation happens very fast. Plus no obvious other solution to this
without major changes to BMS.

Fixes: 130347754
Test: 1) atest CtsBackupTestCases
      2) atest CtsBackupHostTestCases
      3) atest GtsBackupTestCases
      4) atest GtsBackupHostTestCases

Change-Id: I462724f2ea9a9bddd3a876e7f69302c35d69a0cb
2019-04-26 11:40:40 +01:00
Al Sutton
9b6ae901eb Re-add the logging to track when a backup transport is used which hasn't been initialised.
Test: atest RunBackupFrameworksServicesRoboTests
Fixes: 110781477
Change-Id: I8645fb4eab24dc531b93e865003d894dc1877d99
2019-04-25 13:25:31 +01:00
TreeHugger Robot
54db33f025 Merge "Switch to HexEncoding from ByteStringUtils" 2019-04-19 03:11:24 +00:00
Ruslan Tkhakokhov
b9cba444d8 Merge "BroadcastReceiver in UserBackupManagerService can crash system_server" into qt-dev am: 451e2d843d
am: a92bb9fa57

Change-Id: Iff4ab17ffc0746a653859af6acf1bb8e9d384890
2019-04-17 09:17:30 -07:00