1
0
Fork 0
Commit graph

317 commits

Author SHA1 Message Date
Chirayu Desai
6cb3b30b84
restore: Runtime-registered broadcasts receivers must specify export behavior
See: https://developer.android.com/about/versions/14/behavior-changes-14#runtime-receivers-exported
Change-Id: I6f80a060370a0b202c277924ea8cbf565bc29d6e
2023-10-10 12:08:19 -03:00
Steve Soltys
29bd71bcc9 Intercept and assert on application data in e2e test 2023-09-21 06:51:43 +00:00
Steve Soltys
f1238977d0 Add end-to-end emulator test running on CI 2023-09-14 18:11:45 +00:00
Torsten Grote
1e69831244 Improving support for missing MANAGE_DOCUMENTS permission 2023-09-14 17:23:08 +00:00
t-m-w
208dbd6a60 Support a lack of MANAGE_DOCUMENTS permission
When `android.permission.MANAGE_DOCUMENTS` is not granted, Seedvault
prompts to select a storage location. Do not insist on resolving the
storage's actual root, as it will likely (or perhaps always) fail.
Use a fake storage root as is done for USB and app-based options.

Known issues:
* Selected location is assumed not to be USB and not to require
  network access in its storage options.

Change-Id: I357b4c68673d71c087be41e9c94c2841c1d6658e
2023-09-14 17:22:50 +00:00
Michael Bestas
90c8a3fb12 Remove androidx.annotation.VisibleForTesting.PRIVATE usage
VisibleForTesting defaults to private anyway, fixes build in 13 QPR3.

Change-Id: Icdbbd63f1f0fde2148491feefbc7221e91590881
2023-06-14 15:37:50 +05:30
Torsten Grote
9ae32a9bac Redesign About dialog 2023-03-10 00:07:24 +05:30
Chirayu Desai
23abc02d69 Disable screenshots on more recovery code screens
* Basically try to cover all screens that may have a recovery code

Fixes: 
Change-Id: If0143b71596ff470a04982d8f87b7a622d362309
2023-01-20 23:21:16 +05:30
Chirayu Desai
ebed17ee58 Mark Nextcloud as not recommended
* We've had a love/hate relationship with the combination of
  SAF + Nextcloud app + Nextcloud server
* SAF is quite limiting, and that causes it's own issues
* On top of that, Nextcloud app has it's own issues. We've
  even sent patches for some things, but there's only so much one can do
  https://github.com/nextcloud/android/pulls?q=is%3Apr+author%3Agrote
* With the DAVx5 WebDAV support, it seems to work better.
* However, most recently a server side change broke things entirely, with either apps
  https://github.com/seedvault-app/seedvault/issues/490#issuecomment-1368032414
* Due of all of this, it just leads to a bad backup experience.
  As such, let's just say this is not recommended at all entirely
* Hopefully in the future we'll be able to support more options

Change-Id: I0b46dd11df7c31606131bf311583fe4777536463
2023-01-11 19:19:41 +05:30
t-m-w
5d0aca1b49 Warn before turning off backups
Let the user know that turning off backups will require a new backup
set to be created.

Requires: https://github.com/seedvault-app/seedvault/pull/496

Change-Id: I22a1cebd272ac43cab6c68b99ace5919d6a7a9f5
2023-01-06 20:09:38 +05:30
Torsten Grote
87a800438b Always start a new RestoreSet when initializing the device
This avoids deleting the current backup when the user disables backups (or the system decides to do a random re-init).
2023-01-06 20:09:16 +05:30
Torsten Grote
4b9e2bb9f3 Show foreground notification right away when doing manual backup 2023-01-06 00:02:58 +05:30
Torsten Grote
271b9a560f Remove some code warnings 2022-11-16 19:19:56 +05:30
Torsten Grote
1a7fc5f028 Add expert option to save logs 2022-11-16 19:19:56 +05:30
Torsten Grote
374ba8b64f Remove permission requirement in a better way for debug builds
and reformat some SettingsFragment details
2022-11-12 03:38:14 +05:30
Chirayu Desai
c6a77904a6
RecoveryCode: Allow screenshots on debug builds ()
* We already pre-fill the code on debug builds to make testing easier
* Allow screenshots too so we don't have to note down the code right away
  when testing

Change-Id: Ie9cc3080616b78a6e5f9b427c080f10c146a036d
2022-10-14 16:30:18 -03:00
Torsten Grote
dfc9aeee28
Expect BackupObserver to be called with null packages 2022-09-08 17:45:17 -03:00
Torsten Grote
848ed51de4
Expect ApplicationInfo#splitSourceDirs to be null
Also handle errors like these a bit better
2022-09-08 17:40:41 -03:00
Torsten Grote
82f23b7800
Set minSdk to 32 and remove code for old SDKs
We can't go to 33 yet, because roboelectric doesn't support that
2022-08-23 11:44:18 -03:00
Aayush Gupta
65fa49132e settings: AppListRetriever: Switch to lowercase() method
W: 'toLowerCase(Locale): String' is deprecated. Use lowercase() instead.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2022-08-23 18:30:43 +05:30
Torsten Grote
3aa1b9f03d
Merge pull request from t-m-w/do-not-restore-storage-provider
Exclude storage provider from restore
2022-08-15 17:29:01 -03:00
t-m-w
7901aec408 Exclude storage provider from restore and update affected unit tests,
additionally adding a test to ensure the storage provider is excluded.

Otherwise, when the storage provider (i.e. DAVx5 or Nextcloud) is installed,
it will be terminated, and the restoration process will be interrupted.

Change-Id: Ic1be201b673d718b416009ff61f5d975c89b6a62
2022-07-11 16:58:52 -04:00
Torsten Grote
49c9425166 Expose app status information to screen readers
This is for backup, restore and re-install status.
2022-07-08 20:11:38 +05:30
José Rebelo
976e898656 Mark background backup notification as ongoing 2022-06-07 03:15:07 +05:30
Michael W
19ed570a4e Tell user about non enabled backup
* Pressing "Backup now" should not just ignore you when it's not actually
  enabled
* Add a toast message telling you it's not enabled

Fixes: 
Change-Id: I5d698a244652e094b0acfc42cdea017a0af9a20b
2022-06-07 03:14:55 +05:30
Michael W
4576c6d332 Seedvault: Redesign SUW activities for 12
* New SetupWizard uses external/setupdesign (sud) and
  external/setupcompat (suc) to achieve the desired looks
* It prevents proper previews when included in any app, though, so
  we better try achieving the same by manually styling the activities
  for 12
* This patch mimics the design by applying styles similar to the ones
  from sud, sometimes reusing parts taken from there

Change-Id: Iccf588e5239aeb00645f97b095910986f32c52d0
2022-05-26 12:35:48 +02:00
Torsten Grote
d598aac81e Clean up system USB storage feature a bit 2022-04-29 23:43:09 +05:30
Torsten Grote
81d5281a94 Save restore storage only when it had backups
Incidentally this gets rid of the need to pass an implementation-specific Uri to the StoragePlugin.
2022-04-29 23:43:09 +05:30
Oliver Scott
d7910a84b4 Save storage unconditionally on location set
The storage plugin cannot find USB backups for secondary users if it is not saved before checking if backups exist
2022-04-29 23:43:09 +05:30
Oliver Scott
dd57828697 Allow secondary user backup to USB
By default, Android exposes USB devices only to the main user.
In order to query, read and write to it, the signature permission INTERACT_ACROSS_USERS_FULL (optional) is granted to create Seedvault's context as the system user.

Issue: calyxos#437
Issue: https://github.com/seedvault-app/seedvault/issues/77
Change-Id: I0b1b4c8c5aeeb226419ff94e15f631ebe1db66df
2022-04-29 23:43:09 +05:30
Torsten Grote
17a83eaab3 Always add a storage option placeholder for DavX5 2022-01-13 06:32:05 +05:30
Torsten Grote
4ee7605b50 Refactor StorageRoots to be more generic to prepare for non-SAF storage plugins
and to make it easier to add placeholders for storage options
2022-01-13 06:32:05 +05:30
Michael Bestas
08610e1332 Don't hide navigation bar in setup wizard
Also:
Remove back button from recovery code input page
Convert root back button to skip button

Change-Id: I0bca13b53ac3898f2ab3b8503aaf7d2bc51a983a
2022-01-05 01:45:01 +05:30
Torsten Grote
7d4fd105bf Fix finishing RequireProvisioningActivity when provisioning is aborted
On Android 11 this worked fine, but on Android 12 onStart() happens before activity results get delivered. We finish the activity when receiving a cancelled result. However, when onStart() gets called before we know the result, we relaunch an activity required for provisioning again instead of finishing.
2022-01-04 21:46:42 +05:30
Torsten Grote
b0c6eeb9f7 Clean up stuck notifications when service gets killed 2021-10-13 17:16:16 +05:30
Torsten Grote
c7880b8a8b Don't crash when no store app is installed 2021-10-13 16:25:41 +05:30
Torsten Grote
c5a295d31c Allow storage backups to launch foreground service from background 2021-10-13 16:25:41 +05:30
Torsten Grote
75d4c7d05c Don't use setUnlockedDeviceRequired() on the backup key
as importing it with Android 12 GSI fails. This key is only used to restore old backups anyway and the new one doesn't use this restriction.
2021-10-13 16:25:41 +05:30
Torsten Grote
579919d5e7 Code style and lint after Android 12 version bumps 2021-10-13 16:25:41 +05:30
Torsten Grote
e80d89f0a2 Use our transport flags when creating RestoreSets
This hopefully prevents apps skipping restore that require end-to-end encrypted backup transports.

3762670bb7
2021-10-13 16:25:41 +05:30
Torsten Grote
7f4b565d2a First version bumps for Android 12 2021-10-13 16:25:41 +05:30
Torsten Grote
b029b0b029 Improve behavior of @pm@ backups when we can't do backups
Before, we were faking a backup and just returned true, but remembering that next time, we need to do a fresh non-incremental @pm@ backup.
Now, we backup to local cache, but don't upload it. On next run, when we can do backups again, we will upload the updated cache. This simplifies things and reduces the special logic required.
2021-10-13 16:15:20 +05:30
Torsten Grote
36c35d6f98 Force backup initialization when we have no cached metadata
as it can happen after clearing app data
2021-10-13 16:15:20 +05:30
Torsten Grote
c59a006a00 Remove @pm@ optimization from BackupNotificationManager
as it shouldn't be needed anymore
2021-10-13 16:15:20 +05:30
Torsten Grote
b8b6882484 Don't try to clear data of NO_DATA system apps
This speeds up the backup quite a bit since there's many such apps
2021-10-13 16:15:20 +05:30
Torsten Grote
79777a7b6f Close K/V DB after restoring records
also don't log stack trace when not finding backup type
2021-10-13 16:15:20 +05:30
Torsten Grote
ef5d1c3bc8 Port auto restore optimization from legacy v0 code to new v1 code 2021-10-13 16:15:20 +05:30
Torsten Grote
3c5e4120c7 Refactor Storage Plugin API 2021-10-13 16:15:20 +05:30
Torsten Grote
50066f0317 Let ApkBackup and ApkRestore use the new storage plugin API 2021-10-13 16:15:20 +05:30
Torsten Grote
183e34afd2 Remove legacy backup plugin code 2021-10-13 16:15:20 +05:30