Commit Graph

155 Commits

Author SHA1 Message Date
Arc Wang
25880d0d0e Fix incorrect storage size in Storage Settings
From Android S, Storage Settings queries file sizes
from MediaProvider, it's not necessary to count size
data from getExternalStorageStats when calculating
size data.

Bug: 185542752
Test: make RunSettingsRoboTests ROBOTEST_FILTER=testMeasurementCompletedUpdatesPreferences
      manual
      1. Connect device to PC via USB File transfer.
      2. Copy large files from PC to device.
      3. Observe size information in Storage Settings.
Change-Id: I43cbec764e97f5003a4ec981717c9f213a21b614
2021-07-02 10:57:57 +08:00
Arc Wang
248970aad7 Fix negative size when size is greater than 2,147,483,647
Java integer max is 2,147,483,647, it's about 2GB.
Use getLong to get size from provider instead of getInt.

Bug: 190721008
Test: manual visual
      Copy video files more than 2,147,483,647 bytes
      and observe Videos size information.
Change-Id: Ic804db43554fdd580627faebecfe30d9ad2a9120
2021-06-18 11:30:18 +08:00
TreeHugger Robot
03d4644673 Merge "Storage Settings hides categories when loading" into sc-dev 2021-06-04 11:09:01 +00:00
Arc Wang
1beae1bf91 Set storage volume spinner invsible when only 1 volume
Bug: 189390166
Test: atest StorageSelectionPreferenceControllerTest
Change-Id: I93e5fbf50153580ec60c146959d21e61f556c18c
2021-06-04 07:25:30 +00:00
Arc Wang
51b3e7a093 Storage Settings hides categories when loading
To hide sorting animation.

- Storage Settings always loads cache and updates UI, then
  loads storage size and updates UI.
  Remove the chche design because storage category preferences
  will hide during loading, it no meaning to load from cache
  and update UI.

- Hides loading circle before storage category preferences
  become visible, it prevents flickers.

- Remove Calculating... summary of StorageItemPreference.

- Private storage category preferences and secondary user
  preference become visible at
  StorageItemPreferenceController#onLoadFinished.

Bug: 188731179
Bug: 185547228
Bug: 188615591
Test: atest com.android.settings.deviceinfo
      atest com.android.settings.deviceinfo.storage
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo.storage
      manual visual
Change-Id: I3ebef5829ef4f806add07f58fa02520804768be5
2021-06-04 11:50:12 +08:00
Arc Wang
96b6106f2f Reduce flickers when launching Storage Settings
This change remove unnecessary UI dpdate of
StorageItemPreferenceController.

- For StorageItemPreferenceController:
  Remove UI update at #displayPreference since onLoadFinished will update.
  Don't update order at #setVolume since onLoadFinished will update.

- StorageDashboardFragment & StorageCategoryFragment update
  StorageItemPreferenceController only when both StorageInfo
  and StorageResult are loaded.

Bug: 185547228
Test: atest com.android.settings.deviceinfo
      atest com.android.settings.deviceinfo.storage
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo.storage
      manual visual
      Click each file category to count files size is the same as
      displayed in Storage Settings.
      manual visual
Change-Id: Id449003827a3e340e7a90f706152100b5568f834
2021-05-31 12:48:02 +00:00
Arc Wang
8fde6ca821 Shows trash category in Storage Settings
If there is APP which supports VIEW_TRASH intent,
use it to show trash files. Otherwise popup a dialog
to guide users to empty trash files.

Bug: 189109564
Test: manual visual
      Observe size information are the same as files in Files APP.
      Observe if empty trash button empty trash files.
      Observe if Trash category update summary and order after emptying
      trash files.
Change-Id: Ia3c46dcb1b4fadcdfb865f7dd315c27f8f98cb2c
2021-05-27 17:50:11 +08:00
Arc Wang
044c91cc70 Query storage size instead of calculate size of installed APP
From android S, Storage Settings show files of images/videos/audios
category instead of installed APP of each category. So it's
necessary to change the way to calculate size information.

This change also
- StorageItemPreference shows changing storage size units instead
  of fixed GB. It helps UX for categories of only small size files.
- Query media provider for size of Documents and others.
- Query media provider for size of Trash.

Bug: 170918505
Bug: 177892478
Bug: 179871408
Bug: 184379946
Bug: 186077224
Bug: 187128447
Test: atest com.android.settings.deviceinfo
      atest com.android.settings.deviceinfo.storage
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo.storage
      manual visual
      Click each file category to count files size is the same as
      displayed in Storage Settings.
Change-Id: I37c7b3a4b5860323cb55581b23a90f583f4af216
2021-05-25 23:44:21 +08:00
Arc Wang
07dc4fe79a Shows "This device" for default internal storage
Bug: 188492974
Test: atest StorageEntryTest
Change-Id: I7278ff604f22acafd47cef2f5d613a2bf9f0e371
2021-05-18 16:23:25 +08:00
Arc Wang
6062b6491d Rename audios to audio
Bug: 186635176
Test: build pass
Change-Id: I0d909f639fe36edf2e5088c7ec219cceee4e963a
2021-05-17 14:11:17 +08:00
Arc Wang
c0b5ba5225 Storage Settings shift profile selection tab position
In this change, Storage Settings main UI is composed by 3 fragments.

StorageDashboardFragment only shows when there is only personal profile for
current user.

ProfileSelectStorageFragment (controls preferences above profile tab) and
StorageDashboardNoHeaderFragment (controls preferences below profile tab)
only show when current user has installed work profile.

Bug: 174964885
Test: atest com.android.settings.deviceinfo
      atest com.android.settings.deviceinfo.storage
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo.storage
Change-Id: I50dea2fbcae39a1488e648f3ca615f54840e19d5
2021-05-17 14:07:24 +08:00
Arc Wang
76cf622e9b Fix Storage Settings progress bar summary jank problem
Only updates progress bar summary for a selected StorageEntry.
(Ignore updateState callback from DashboardFragment)

Bug: 187145219
Test: manual visual
Change-Id: I4a760ae6a0921c99348c0fce54251b2667bf29ae
2021-05-12 23:57:01 +08:00
TreeHugger Robot
0b43270035 Merge "Implements profile selection tab in Storage Settings" into sc-dev 2021-05-12 07:48:43 +00:00
TreeHugger Robot
2853e766f5 Merge "Set storage volume spinner not clickable when only 1 volume" into sc-dev 2021-05-12 03:10:53 +00:00
Arc Wang
543068210f Implements profile selection tab in Storage Settings
- StorageDashboardFragment and StorageItemPreferenceController works only
  for one profile per instance.
- StorageAsyncLoader loads for all users(profiles) and regards each user independent.
- SecondaryUserController will not load personal profile user in work profile tab.
- Cleanup some unused profile related files.

Bug: 174964885
Test: atest com.android.settings.deviceinfo
      atest com.android.settings.deviceinfo.storage
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo.storage
Change-Id: I8361c29bc240c519c7261b19522c41439479c1c2
Merged-In: I8361c29bc240c519c7261b19522c41439479c1c2
2021-05-11 20:00:08 +08:00
Hai Zhang
6bf47f6274 Don't add SettingsLib to static_libs in Settings unit test.
Adding them results in duplicate classes and causes conflict for the R
classes and resource loading.

Meanwhile, correctly removing the SettingsLibSettingsSpinner resulted
in the test failing to find the getSelectedItem() method which is
unused inside Settings app. This is an inherent issue when unit
testing an optimized (and shrunk) app, and since there's no other way
for the test to get the current selected item, this change simply
changes the Settings code to invoke getSelectedItem() as well. This
has exactly the same effect because SettingsSpinnerPreference updates
its mPosition right before calling the OnItemSelectedListener in its
implementation.

Bug: 183340630
Bug: 177638625
Bug: 183342958
Test: atest SettingsSliderPreferenceControllerTest
Test: atest PrivateVolumeForgetTest
Change-Id: Ia26ca923369b41291614fb9bd50dfbd2aac2f0fa
2021-05-11 03:33:08 -07:00
Arc Wang
65d3f45606 Set storage volume spinner not clickable when only 1 volume
Bug: 187801712
Test: manual
      Click the spinner when there is only default volume.
      Click the spinner when there is USB drive connected.
Change-Id: Ifbd26c96f467757ffcfef750bd80533834123f82
2021-05-11 18:06:47 +08:00
Arc Wang
e64f01ccfc Cleanup Storage Settings
There is AOSP built in file browser for image/video/audio
file category, this change cleanup APP based category
for image/video/audio.

Bug: 183078080
Test: atest com.android.settings.deviceinfo
      atest com.android.settings.deviceinfo.storage
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo
      make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo.storage
Change-Id: I925fc9296b8c2df5bd793668f66a12beb7744469
2021-05-04 22:21:53 +08:00
Arc Wang
4cd89bb082 Storage Settings Apps category shows image/video/audio APPs
There is AOSP built in file browser for image/video/audio
file category, all APPs except games should be included in
Apps category.

- Shows image/video/audio APPs in APPs category.
- Count Image/Video/Audio APPs storage size to Apps storage size.
- Remove APP size & cache size for Images/Videos/Audios category.

Bug: 170918505
Test: atest StorageAsyncLoaderTest.java
Change-Id: I07e0a3a66a13f36b9e0cbde289d8ba90df4ae295
2021-05-03 20:17:58 +08:00
Arc Wang
2e04e81da8 Update storage usage progress bar summary text
Shows a simplified version, e.g., 24GB used / 64 GB total

Bug: 174964885
Test: manual visual
Change-Id: Ia7a12d0cf7444ebb172ef2c23209196e01eadac0
2021-04-19 12:08:16 +08:00
Arc Wang
7a43ffde90 Update storage usage progress bar summary text
Shows a simplified version, e.g., 24GB / 32% used of 64 GB

Bug: 174964885
Test: manual visual
Change-Id: I39cdc5efa1d562c339525fa23456c71b726b9e1a
2021-04-16 21:46:19 +08:00
Arc Wang
192fd24f26 Cleanup Storage Settings
Bug: 183078080
Test: make
      make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.deviceinfo
      make RunSettingsRoboTests
      ROBOTEST_FILTER=com.android.settings.deviceinfo.storage
      atest com.android.settings.deviceinfo
      atest com.android.settings.deviceinfo.storage
Change-Id: I901f5f7999ea94dafb72a2517a11e2ff1fd51b42
2021-04-14 21:37:46 +08:00
Arc Wang
741c1e4298 Pop up soft keyboard when rename dialog shows
Request focus for the EditText.

Bug: 184710864
Test: manual
      At Storage Settings, select USB drive -> option menu
      -> Rename. Observe if soft keyboard pops up.
Change-Id: Ia73829ee505c94a255306bd817d01b6bc1b80e26
2021-04-07 20:34:12 +08:00
Arc Wang
a1fb47beb8 Fix com.android.settings.deviceinfo.storage.StorageEntryTest
StorageEntry#isStub() is unused and not built in apk.
Remove the method to fix test fail.

Bug: 184045592
Test: atest com.android.settings.deviceinfo.storage
Change-Id: I89d73c45111918c2ff01174d6fbb47f8c59f6968
2021-03-31 10:05:09 +08:00
Arc Wang
78bafc988a Check config to decide if Smart Storage toggle should exist
Bug: 174964885
Test: AutomaticStorageManagementSwitchPreferenceControllerTest
Change-Id: I3090e3d1b01b18b3d0f68396671c8791321cc480
2021-03-30 07:58:37 +00:00
Arc Wang
c626380689 Show "Files" category for public storage in Storage Settings
Users can click this preference to see public storage files
in external file browsers.

Bug: 170918505
Test: make RunSettingsRoboTests ROBOTEST_FILTER=StorageItemPreferenceControllerTest
      manual
      Select private storage and public storage and observe UI
Change-Id: If3f0d59b2ebf941d70e81e60c4c2015b80e7cf33
2021-03-30 15:51:49 +08:00
Arc Wang
2b00ecdda9 Storage category UX changes in Storage Settings
- Change category types.
- Use Intent.ACTION_VIEW to show content of each category.
- Sort order of each category by storage size.

Bug: 170918505
Test: make RunSettingsRoboTests ROBOTEST_FILTER=StorageItemPreferenceTest
      make RunSettingsRoboTests ROBOTEST_FILTER=StorageItemPreferenceControllerTest
      manual
      Click each category in Storage Settings.
Change-Id: Ib7beb1779a0fcbfd7b8ec52446707b105fcebff5
2021-03-25 20:27:50 +08:00
Arc Wang
40396d532f Only show storage category stats preferences for private volumes
Hide it because there is no framework API to get storage
category stats of public volumes.

Bug: 174964885
Test: manual
      Observe storage settings UI of a USB flash drive.
Change-Id: I7272cd18c186793f86548a87b5cb88bb957ff8d5
2021-03-22 16:28:59 +08:00
Arc Wang
c22749530b Add option menu in StorageDashboardFragment
Add option menu for each kind of storage

1. Unsupported disk: Format.
2. Missing volume record: Forget.
3. Unmounted storage: Mount.
4. Default internal storage: Migrate.
5. Private volume: Rename / Unmount / Format as portable / Migrate.
6. Publuc volume: Rename / Unmount / Format / Format as internal.

Bug: 174964885
Test: atest VolumeOptionMenuControllerTest
Change-Id: I85fa117ff0a49ec7a53ba36580591c7ce7f5a8dc
Merged-In: I85fa117ff0a49ec7a53ba36580591c7ce7f5a8dc
2021-03-19 18:08:48 +08:00
Arc Wang
d496a737ce Revamp Storage Settings header part
1. Add new object StorageEntry to encapsulate VolumeInfo and
   unsupported DiskInfo and missing VolumeRecord.
2. Replaces StorageSummaryDonutPreference with UsageProgressBarPreference.
3. Add storage select spinner.
4. Add a "Free up storage" preference to replace "Manage storage" button.

Bug: 174964885
Test: atest com.android.settings.deviceinfo.storage
      atest com.android.settings.deviceinfo
      manual
      Insert an USB drive, select the drive in StorageDashboardFragment
      and observe UI.
Change-Id: I83877f76869414de4fb2788b6b18fe507aa5cfcf
Merged-In: I83877f76869414de4fb2788b6b18fe507aa5cfcf
2021-03-19 18:08:38 +08:00
Weng Su
6c430b370d [Provider Model] Modify the class name to GenericSwitchController
- The generic class can be used for multiple controllers

Bug: 174022082
Test:
- atest -c AirplaneSafeNetworksPreferenceControllerTest
- make RunSettingsRoboTests
ROBOTEST_FILTER=AllInOneTetherPreferenceControllerTest
- make RunSettingsRoboTests
ROBOTEST_FILTER=AutomaticStorageManagementSwitchPreferenceControllerTest
- make RunSettingsRoboTests
ROBOTEST_FILTER=WifiPrimarySwitchPreferenceControllerTest

Change-Id: I7d50ae3e6228005eb6dfb0a6c1a2f870c41330f2
2020-12-03 17:40:37 +00:00
govenliu
b70ddb9df7 [Wi-Fi] WiFi Settings inclusive language fix plan phase 1
Replace WiFi related terms which contain Master wording.
Goal: Create a fixit for Android Platform to reduce the use of non-inclusive language for all code.

Bug: 161425297
Test: make RunSettingsRoboTests -j or
make RunSettingsRoboTests ROBOTEST_FILTER=DashboardFragmentTest
make RunSettingsRoboTests ROBOTEST_FILTER=WirelessDebuggingPreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=AutomaticStorageManagementSwitchPreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=AllInOneTetherPreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=TopLevelNetworkEntryPreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=PrimarySwitchPreferenceTest
make RunSettingsRoboTests ROBOTEST_FILTER=WifiPrimarySwitchPreferenceControllerTest
make RunSettingsRoboTests ROBOTEST_FILTER=WifiTetherPreferenceControllerTest

Change-Id: I9395c50e092e124016609f88f7c8151554a0d874
2020-07-21 20:56:22 +08:00
Jason Chiu
bee14256df Add metrics log for special cases
Support Wifi toggle, Smart storage toggle, Manage storage, Face unlock,
Pixel Imprint

Bug: 137559984
Test: robotest
Change-Id: I3e2e666a8bee1e54d6bd13349b5bedb48fbc42df
2020-05-12 18:06:22 +08:00
Raff Tsai
a2e77a0e85 Fix no action in Settings storage
- Pass wrong user id in view holder

Fixes: 149028747
Test: 1. Add new user, and change th new user
      2. Take a camera shot under the new user
      3. go to Settings -> Storage -> photo & video -> Image
      4. Should open file brower

Change-Id: I0af532748ec19f62897911b1bb6ece9b21b844c3
2020-02-12 13:20:19 +08:00
Raff Tsai
3fbdf34a03 Remove settings_work_profile feature flag
Bug: 141601408
Test: robolectric
Change-Id: Ib7ef6794405fef6336690115680cf95b0e4c1542
2020-01-16 13:56:52 +08:00
Raff Tsai
4536fae5b7 Fix work tab app doesn't launch correct user intent
- Pass user.getIndentifier() to intent

Fixes: 147357696
Test: 1. go to Settings -> Storage -> Music&Audio
      2. switch to work tab
      3. tab "Audio files"
      4. should display work profile files

Change-Id: I0d2883c45eb7b883adbaf034c0a49c5e52ba82f6
2020-01-11 09:16:24 +08:00
Raff Tsai
44a39995f2 Merge work profile storage data together
- Storage UI used to have a work profile item. Now the item is
removed, all its size should merge to other item.

Fixes: 147127503
Test: Add work profile user, in Settings -> Storage page. Sum of
each item size should be similar to used size in the top of the page.

Change-Id: I9d4e2c8c53839da22fd0cdd5d2591a3245514191
2020-01-09 19:55:43 +08:00
Raff Tsai
1e5d8146b5 Change ProfileType definition
Bug: 141601408
Test: rebuild
Change-Id: Ia4d4fabe8a4daad4ce54c243748fa3c29bf944ba
2019-12-12 13:44:35 +08:00
Raff Tsai
910ea66615 Navigate to personal/work tab based on intent extra
Bug: 141601408
Test: Settings->Storage, click work tab, click Other apps. It should
navigate to Apps storage page and focus on WORK tab.
Change-Id: Ida91b279e771a2c7c960ce83b8e13310c87112e8
2019-12-04 11:42:23 +08:00
Raff Tsai
21c466ff5b Fix testcase error
Fixes: 144832138
Fixes: 144831580
Test: robolectric
Change-Id: I01efc467cf75b5beb2d2dd23188a8fa7d67f32ed
2019-11-21 01:06:10 +08:00
Raff Tsai
84327f6aa3 Add storage_summary_donut above ProfileSelectStorageFragment
- Modify ProfileSelectFragment to support add preference xml in the
top, and tabLayout below the preferences. Base preference layout is
dummy_preference_screen.xml which contains no preference.
ProfileSelectStorageFragment contains StorageSummaryDonutPreference
above the tabLayout.
- Make StorageSummaryDonutPreferenceController self workable without
StorageDashboardFragment dependence.
- Rename inactive_apps.xml to dummy_preference_screen.xml
- Move ShadowPrivateStorageInfo from LowStorageSliceTest

Bug: 141601408
Test: manual
Change-Id: Ide12840dc81bb104f328e230ecda5d35bba01d7a
2019-11-18 18:18:29 +08:00
Raff Tsai
539ab8ace4 Add work/personal profile tab for storage page
- Add ProfileSelectStorageFragment
- Check featureFlag in SecondaryUserController to decide show/hide
workprofile item StorageDashboardFragment

Bug: 141601408
Test: manual
Change-Id: I97762d3b1a4985e2b186b34fc37c7976c2f69224
2019-10-25 16:57:24 +08:00
Raff Tsai
afd494d335 Add personal/work tab for ManageApplications
- Add ProfileSelectManageApplications containing tabLayout
- Modify StorageItemPreferenceController to display only personal
or work profile data
- Add getTargetFragment in Utils to handle fragment selection

Bug: 141601408
Test: manual
Change-Id: Ie4db1ce2e77f60a82018e5a3e1f2fccb812502dc
2019-10-16 17:08:31 +08:00
Fan Zhang
7db118e367 Mass clean up: don't cast class when not needed.
Bug: none
Test: rebuild
Change-Id: Ie3f58a3d5ae99ade28a33dcac80c18de90d4d5b2
2019-02-14 12:26:09 -08:00
Fan Zhang
31b210017b Migrate all MetricsProto enums to SettingsEnums
Bug: 122855168
Test: rebuild
Change-Id: I962d9a71179f86b7cae9dc5e9a00e0aa1557dc76
2019-01-17 14:55:42 -08:00
Mill Chen
0432a46627 Add storage slice in Contextual Settings Homepage
- Add storage card that implements CustomSliceable in Contextual
Settings Homepage.
- Add test case for storage slice.

Bug: 117074909, 115971399
Test: visual, robotest, SliceBrowser
Change-Id: Idc7d47ba934c2556c124220545ecc73fb2beb7e2
2018-10-09 15:20:29 +08:00
Fan Zhang
23f8d59d02 Sort imports
Having consistent import order will reduce chance of merge
conflict between internal and external master

Test: rebuild
Change-Id: I0b1a170967ddcce7f388603fd521f6ed1eeba30b
2018-08-28 22:13:15 +00:00
tmfang
27c84de325 Settings Fragment Migration (Build pass app)
This patch focused on fixing compile errors and some runtime errors.

Test: We can't test it now. But we will have an integration test later.
Bug: 110259478
Change-Id: I16c471ddcd0fa1460c665b7f74d86fcace5ee67b
2018-07-11 18:24:51 -07:00
tmfang
99cc23d0da Settings Fragment Migration (Change imports)
This commit *only* changes imports and optimize imports.
We don't do anything else.

This patch can't compile pass and run test case.
We will update other patches to fix these problem.

Change list.

1. import android.app.Fragment; ->
   import androidx.fragment.app.Fragment;
2. import android.app.DialogFragment; ->
   import androidx.fragment.app.DialogFragment;
3. import android.app.ListFragment; ->
   import androidx.fragment.app.ListFragment;
4. import android.app.LoaderManager; ->
   import androidx.loader.app.LoaderManager;
5. import android.content.AsyncTaskLoader; ->
   import androidx.loader.content.AsyncTaskLoader;
6. import android.content.Loader; ->
   import androidx.loader.content.Loader;
7. import android.app.FragmentTransaction; ->
   import androidx.fragment.app.FragmentTransaction;
8. import android.app.FragmentManager; ->
   import androidx.fragment.app.FragmentManager;
9. import android.app.LoaderManager.LoaderCallbacks; ->
    import androidx.loader.app.LoaderManager.LoaderCallbacks;

Bug: 110259478
Test: Can't test it.
Change-Id: I0a3f98fff34a3494a839c3c42aeabcec3df2c8b3
2018-07-11 18:23:51 -07:00
Fan Zhang
c7162cd24d Reorder and clean up imports.
Test: rebuild
Change-Id: I178485c84ae7146f991fd77b6d7504b029942a68
2018-06-18 15:45:09 -07:00