Commit Graph

94 Commits

Author SHA1 Message Date
Winson Chung 94e8ad0731 Add multi-instance state to item infos
- Add legacy resource for supported multi-instance apps that
  matches the current SystemUI resource of the same name, and will
  be removed as apps migrate to the V manifest property to declare
  multi-instance support
- Load the multi-instance state from PackageManager when the db is
  first loaded or when packages are updated
- The multi-instance check is then used to determine if an app pair
  can be saved (ie. whether the action can be shown)

Bug: 323112914
Test: atest NexusLauncherTests

Change-Id: I565b4bee4ab5f7040910306b1fd60a4fc3bf9a1c
2024-05-09 18:43:38 +00:00
Sunny Goyal 993893895c Converting ModelTask to an interface instead of an abstract class
This allows extensibility and better use of lambdas

Bug: 338282246
Test: Presubmit
Flag: None

Change-Id: Ia41067f0068b3b631eeb4faf877dc77f8587e1f6
2024-05-01 15:43:26 -07:00
Sunny Goyal 10fa016352 Fixing MainThreadInitializedObject
> Making SafeCloseable implementation mandatory, to prevent leaks during test and preview
> Removing getNoCreate method and defining executeIfCreated to avoid null pointer exceptions
> Fixing sandbox value leaking into main, by Checking sandbox against App context
> Converting sanbox to an interface instead a class

Bug: 335280439
Test: Presubmit
Flag: None
Change-Id: I951dcde871898e745ff6490a1c4f8fd1512888f5
2024-04-22 17:04:33 -07:00
Winson Chung 6a6de2dfc3 Migrate WorkspaceItemInfo non-resizeable flag to runtime status flag
- This aligns with other app-level state that is read at runtime

Bug: 323112914
Test: atest NexusLauncherTests
Change-Id: I1e29583d1c0302646718473c8958d604c1a202a5
2024-04-14 06:20:54 +00:00
Randy Pfohl 819b835519 Revert "Revert "abtracting Activity from recentsView through rec..."
Revert submission 26911513-revert-26414135-RecentsViewContainer-MEROZZOKJQ

Reason for revert: Fix for issue has been found and will be included in this revert.

Reverted changes: /q/submissionid:26911513-revert-26414135-RecentsViewContainer-MEROZZOKJQ

Change-Id: I517e7d2fc0d82d250a6ed40862dd31c194d0a302
2024-04-11 08:58:08 -07:00
Priyanka Advani 3c71346147 Revert "abtracting Activity from recentsView through recentsview..."
Revert submission 26414135-RecentsViewContainer

Reason for revert: Probable culprit for b/333767026. Will be verifying through ABTD for confirmation and before submitting the revert.

Reverted changes: /q/submissionid:26414135-RecentsViewContainer

Change-Id: I25775cd6531355f1dc042ddb7a8d442ee0b36e58
2024-04-10 21:31:07 +00:00
randypfohl 547d6fc472 abtracting Activity from recentsView through recentsviewcontainer and basecontainerinterface interfaces
This change will let us move from activity to other parent views for recent views.

Summary: In prep for new recentsview containers outside of activity we needed to decouple recentsview from activity and state.
This change will let us move from activity to other parent views for recent views.

Test: Built and tested locally for 1p and 3p launchers on tablet, and portrait modes. Verified working functionality.

Bug: 292269949

Flag: NONE

Change-Id: I5c72745f438d466362ece988c35a97d829e9c1b4
2024-04-10 09:14:28 -07:00
Sunny Goyal 8e1f37181d Merge "Allowing base class for ResourceBasedOverride to have Context based constructors" into main 2024-04-05 23:20:38 +00:00
Sunny Goyal 9d28eee769 Allowing base class for ResourceBasedOverride to have Context based constructors
Bug: 330920490
Flag: None
Test: Presubmit
Change-Id: Ib4d1ef80133596a114a4fb32ea8ae918852a77f5
2024-04-05 12:56:36 -07:00
Shamali P 7ae51788da Update the WidgetPickerActivity to display recommendations for hub host
- Accepts a ui_surface param of format "widgets{_hub}" and existing
widgets on the surface to be excluded from predictions
- Refactored the widgets prediction update task to extract reusable
logic that maps the predictions to widget items and reused it.

http://screencast/cast/NjE1MTA5MDI0NzU2NTMxMnwzMGE3NTMwNi1hZg

Bug: 326092660
Test: WidgetsPredictionHelperTest and see screencast above.
Flag: N/A
Change-Id: I6ceeb752c167893bab4ed496cedc5e8081e1b950
2024-04-01 20:16:37 +00:00
Jeremy Sim 742630c2f8 Reparent folders and app pairs
Previously, app pairs and folders shared a common data model, FolderInfo. Now we need to separate them, so a new type, CollectionInfo, will serve as the parent of both types.

Bug: 315731527
Fixes: 326664798
Flag: ACONFIG com.android.wm.shell.enable_app_pairs TRUNKFOOD
Test: Manual, unit tests to follow
Change-Id: Ia8c429cf6e6a376f2554ae1866549ef0bcab2a22
2024-03-29 15:39:28 -07:00
Willie Koomson 2471805414 Handle widgets added with tap-to-add in AppEventProducer
Widgets added with tap-to-add do not emit an ITEM_DROP_COMPELTED event,
so this change updates AppEventProducer to check for
WIDGET_ADD_BUTTON_TAP event so that it can emit an ACTION_PIN
event for these widgets as well.

Also moves the stats logging for tap to add to after
Launcher.addPendingItem is called, so that the PendingAddItem's container
is set to CONTAINER_DESKTOP.

Bug: 323886237
Test: manual, add widget and confirm event is produced through logging,
 and widget no longer appears in suggestions
Flag: ACONFIG com.android.launcher3.enable_widget_tap_to_add STAGING
Change-Id: Iaf46a408d05f61864a79f87b23160364b6513323
2024-03-20 22:07:02 +00:00
Shamali P 57c1eedbc6 Update prediction task to provide categorized suggestions.
Also adds a helper in popup data provider to provide categorized
suggestions. Used in follow up CL to update the UI.

Bug: 318410881
Test: WidgetsPredictionUpdateTaskTest and manual with follow up changes
Flag: ACONFIG com.android.launcher3.enable_categorized_widget_recommendations DEVELOPMENT
Change-Id: Ie80e8ba7bbe874f7c4b0e579446edf571036555e
2024-02-06 18:14:49 +00:00
Andy Wickham af7ff56792 Merge changes from topics "awickham-api-cleanup", "keyboard-on-back" into main
* changes:
  Cleanup API checks for P, Q, and R.
  Add a WindowInsetsAnimationCallback to listen to IME changes.
  Update minSdk to 30.
2024-01-25 22:06:40 +00:00
Himanshu Gupta f591ce5f17 Restricting Accessibility flows for Private Profile.
Adding PS apps to the home screen is restricted.
This CL prevents the same from accessibility drags.

Bug: 289223923
Flag: ACONFIG com.android.launcher3.Flags.private_space_restrict_accessibility_drag DEVELOPEMENT
Test: Ran Launcher3 Tests.
Change-Id: I3e2b7b196b96a4d2ba34d8ece5fd6e0463f17253
2024-01-25 04:19:20 +00:00
Andy Wickham b922dccbf5 Cleanup API checks for P, Q, and R.
Test: Build with gradle
Flag: NA
Change-Id: I3ef17090741d14bebd76cf09cf3dc5ac4f11e686
2024-01-24 14:58:08 -08:00
Anushree Ganjam cbfa8043c8 Merge "Add "Don't suggest app" shortcut to suggested apps." into main 2024-01-17 22:25:17 +00:00
Sunny Goyal 6449a21062 Fixing some launcher model tests
> Removing static mocks and using Sandbox context instead
> Removing inheritence in LauncherModel and converting LauncherApps.Callbacks
  to a separate class. decMaker sometimes fails because of API changes in
  LauncherApps.Callbacks

Bug: 319877828
Test: atest LoaderTaskTest
Flag: N/A
Change-Id: If78b5d83595627a355b284f52d887d75fef53014
2024-01-12 12:30:52 -08:00
Anushree Ganjam 5e9b71e055 Add "Don't suggest app" shortcut to suggested apps.
This works for suggested apps in both Home and AA+. When enable_shortcut_dont_suggest_app is true, the secondary drop target "Don't Suggest app" is removed instead "Don't suggest app" is added to shortcuts.

Video: https://b.corp.google.com/issues/319250810#comment5

Home: https://screenshot.googleplex.com/d7Wts48X6EmFAYg.png
Private space app suggested: https://screenshot.googleplex.com/BukzCRTvkzbpwQ3.png

AA+: https://screenshot.googleplex.com/ADMCHnQ378jvJEE.png
Private space app suggested : https://screenshot.googleplex.com/AYga8Km3646AqMt.png

Bug: 319250810
Flag: aconfig com.android.launcher.enable_shortcut_dont_suggest_app DEVELOPMENT
Test: Manual.

Change-Id: Ia7df749a1c7d806bd9d74124be138384c3050119
2024-01-12 10:33:24 -08:00
Hyunyoung Song 0c2204dcbe Merge "Fixing UserHandle for AppTarget Event from Launcher." into main 2024-01-02 18:22:18 +00:00
Tony Wickham 1a8cf0a9f6 Log app launches via taskbar drag and drop
- This also goes through the app predictions pipeline to update
  hotseat predictions

Fixes: 316940471
Test: Drag apps to split screen, ensure taskbar predictions update
      (also verify by logging AppPredictor#notifyAppTargetEvent)
Flag: None
Change-Id: I844414ecb56b4e36a2c94d913c1fb37abf056593
2023-12-18 23:30:59 +00:00
Himanshu Gupta 314afce4f9 Fixing UserHandle for AppTarget Event from Launcher.
Currently, every non-foreground user AppTarget Event
is assigned the first userhandle present in the list
of UserProfiles cached with Launcher.
This causes issues when more than one profile is
present, as then appevents from either profiles are
indistinguishable.
This chane fixes that, based upon the recent fixes to
make Launcher and ItemInfo user profile aware.

Bug: 314124511
Test: Manual by clicking diff app targets
Flag: ACONFIG com.android.launcher3.Flags.enable_private_space TEAMFOOD
Change-Id: I188c828eeeff9b617ddf9a75bccea9b9ab38e506
2023-12-18 19:10:23 +00:00
Stefan Andonian 2171d09fe6 Remove some direct usage of getDevicePrefs()
Bug: 261635315
Test: Manually did testing on device.
Change-Id: I47c88bdc031d330f6efa573411ab5dbf154ec8a2
2023-10-11 23:06:41 +00:00
Jeremy Sim 6ac8949fc4 App Pairs: App pairs now save with automatic default name and custom split ratios
[App Pairs 4/?]

This patch includes:
- Ability to save and launch app pairs with custom 0.3, 0.7, or 0.5 split ratios
- App pairs now save with default name "App1 | App2"
- Grid migration, prediction, and other misc. flows should now work with app pairs

Flag: ENABLE_APP_PAIRS (set to false)
Bug: 274189428
Test: AppPairsControllerTest.java
Change-Id: I46dd3e30f8de03dd3e6d086c8ff9fc52e7e7fd2b
2023-10-03 10:38:03 -07:00
Fengjiang Li ff15fbffec Recreate hotseat predictor whenever we query it due to workspace change
Fix: b/289013842
Test: unit test, also verified moving icons will recreate hotseat predictor
Change-Id: I1f19b17654b87156132a4e4dee26e12312589dba
2023-07-12 10:11:12 -07:00
Stefan Andonian eac832aedd Merge "Load Delegate Items in correct order when loading Launcher Data." into udc-dev 2023-04-10 18:26:25 +00:00
Stefan Andonian e4609a27bd Load Delegate Items in correct order when loading Launcher Data.
Bug: 251502424
Test: Loaded and bound the workspace properly.
Change-Id: Ia6d609ffa21c5036cb48e464d3e8d4fa561cb008
2023-04-10 15:46:12 +00:00
Sunny Goyal 895392e923 Removing some obsolete features:ENABLE_MINIMAL_DEVICE, ENABLE_DATABASE_RESTORE
Bug: 270392984
Bug: 270392706
Test: Presubmit
Flag: N/A
Change-Id: I58c3e76de521e702fb44ccfc14c9b5a731b1d511
2023-04-07 13:59:08 -07:00
Brian Isganitis fdd044e16e Expose IS_RUNNING_IN_TEST_HARNESS as static method.
This variable is now mutable, making the uppercase format misleading.
For instance, users might assume they can use this value in other
immutable properties, when they really should be accessing the latest
value every time they need it.

Context: https://source.android.com/docs/setup/contribute/code-style#follow-field-naming-conventions

Test: Manual
Bug: 271160958
Change-Id: Iaaa51d9153cb8a7d686c72e1210b1948029dcfd5
2023-03-03 00:17:33 +00:00
Stefan Andonian 05ca3a8089 Refactor Workspace Loading / Processing code.
There are no behavioral changes (other than we no longer are recycling
objects while processing workspace items), but this refactor will setup
the next change to load the first workspace page before other workspace
pages.

Bug: 251502424
Test: Workspace, app widgets, and containers loaded properly.
Change-Id: I437aab40000d841d7fcc4380d05ab4a8f5d5c2ad
2023-02-15 17:36:27 +00:00
Alex Chau e5c1edb31b Clear PredictorState targets when it's re-registered
- After SUW, registerPredictor is called for hotseat, and then BaseLauncherBinder will call bindExtraContainerItems with empty items. A subsequent registerPredictor will then be triggered by LoadTask, but handleUpdate will skip the update due to no diff in PredictorState targets. As a result, HotseatPredictionController always have no items after SUW
- Clearing PredictorState when it's re-registerted will allow the respective prediction controller to receive new prediction items that comes with the registration.

Fix: 265340241
Test: Factory reset, pass SUW, prediction items are in hotseat
Test: Reboot, prediction items are in hotseat
Change-Id: Ie6e219028e7fde42854459d34806a04052dc41ba
2023-01-31 19:24:31 +00:00
Sunny Goyal a992ac9e8d Moving all intent receiver register calls to a single place
This is eventually allow us to move all register to background thread
Also creating a single ScreenOn tracked which is used at multiple places

Bug: 264465756
Test: Verified on device
Change-Id: Ibadf9ca43218e578954420d97a733adfa0a94fc7
Merged-In: Ib410e5bf02773cefde5bf0a0a1f2f1c108718d24
2023-01-22 05:24:48 +00:00
TreeHugger Robot 3a801de233 Merge "Fix ConcurrentModificationExceptions during binding." into tm-qpr-dev 2022-11-18 01:44:01 +00:00
Stefan Andonian a04de842d1 Fix ConcurrentModificationExceptions during binding.
The same lists of extra items stored in BgModelData are also stored in
UI components. This is causing ConcurrentModificationExceptions. The
solution is to clone these lists or mark them as immutable before storing
them in their respective components.

Bug: 206918543
Test: Verified that crash no longer occurs after fix.
Change-Id: I571a2c451af58137aa7513b372b6a8ecf9bd3ff6
2022-11-17 20:46:51 +00:00
Stefan Andonian 146701ca3e Move SharedPreferences code to its own class.
Bug: 251502424
Test: Code compiled correctly.
Change-Id: Iea0d6ab2999504117546ee0f7adc0c7b8b45c065
2022-11-17 17:22:47 +00:00
Sunny Goyal 47d4d81b4f Cleaning Utilities.java
> Removing some unused methods
> Moving some specialized methods to corresponding classes
> Removing GridProvider check as it is released

Bug: 257555083
Test: Presubmit
Change-Id: Ib0f8c673d018071d3f4b7d9247e0a35718ab009c
Merged-In: Ib0f8c673d018071d3f4b7d9247e0a35718ab009c
2022-11-17 01:06:16 +00:00
Sunny Goyal 3c7054f0d2 Updating widget prediction handling:
When handling widget prediction, first match the full provider names
Only if no widgets are found, match any widget in the package

Bug: 256202399
Test: atest WidgetsPredicationUpdateTaskTest
Change-Id: I5337618d935f8b926803aeefede46059545de72d
2022-11-02 02:24:21 +00:00
Pinyao Ting 777c13eb00 Explicit Nullbility in Launcher (Part 5)
This CL addresses the nullbility in LauncherModel and update tasks.

Bug: 242895652
Test: manual
Change-Id: Ied635c944c3656f0d493b295f772aa0329b354b9
2022-09-16 17:17:16 -07:00
Holly Sun 03caf49826 Update container for ItemInfo.
See https://docs.google.com/document/d/1eAxQ9p263FI8-ZdkOsiQoarhpwm9aOdncqfJUD42o1Q/edit?resourcekey=0-GJyyDut-Tfy29akzHyoz0Q for the debugging process.
Test: see video https://drive.google.com/file/d/1qpD7070v0qOaBEuYS0WoZauawyhL54MQ/view
Fix: 234848972

Change-Id: I2ed5d24d11ab2081c6faa5d040d72a9d1646e5ca
2022-09-01 12:10:31 -07:00
Sunny Goyal f0ff70a2a5 Adding support for easily extending Launcher DragAndDrop support
Bug: 232165524
Test: Verified locally
Change-Id: I3b4f37bc9914de55330662edd678e6fdd0eafece
2022-05-11 21:34:08 +00:00
Becky Qiu 6183c4dd74 [Toast] Create one search tapl tests for opening qsb and calculator app.
Test design doc: https://docs.google.com/document/d/1aPtMvegzn4hdwC0CNuIkfkalqG7v0FNCfyoO7qIOfN4/edit?usp=sharing&resourcekey=0-71oNHp1KKOdDKxr7Vd4dGQ

Bug: 225935921
Bug: 225935929
Test: ran test in android studio
Change-Id: I74197a9d81fc75a44269ab3bc1bba910de5e17fe
2022-05-05 18:47:34 -07:00
Tracy Zhou c2538d748a Add originalView of the menu to SystemShortcut
Split from home animation needs to originate from the app icon instead of the menu item icon. This can be useful for other animations in the future.

Bug: 226395821
Test: N/A
Change-Id: If45d80e347ba275bd550b6acd6ad81b319e753a3
2022-04-11 17:13:35 -07:00
Stefan Andonian 510a818521 Show an 'Undo' snackbar when users dismiss a predicted hotseat item.
Bug: 200841778
Test: Hard-coded the flag to be true, and verified that the snack bar
is shown with the correct text. Also verified that talkback announces
"Item Removed" properly and that the correct log event is produced by
the AppEventProducer which AiAi needs to process the user action.

Change-Id: Ifbb9cf7aecf26cd4bcebf48d4fb07fb3d5af46bb
2022-04-06 17:22:40 +00:00
kholoud mohamed e210b47c20 RESTRICT AUTOMERGE Moved enteprise resource updatability to Launcher3
Bug: 217388602
Bug: 218875965
Test: atest EnterpriseResourcesTests
Test: manual
Change-Id: I095a1da30766e4b4eab33f42b034601b3322eb3d
2022-03-15 17:24:04 +00:00
TreeHugger Robot fb1e592020 Merge "Prediction icons in Taskbar were updating when dragging icon in the same place" 2022-02-08 19:54:08 +00:00
Sebastian Franco 5a6e08c3cd Prediction icons in Taskbar were updating when dragging icon in the same place
When dragging an icon in the Taskbar and dropping
it in the same spot it triggers new predictions when
it shouldn't. Basically, it was thinking that the icon
was moved outside of the taskbar which should trigger
new predictions. To fix it, it simply required to change
the order of the events, sending the UNPIN event before
the PIN event.

Bug: 202922907
Test: Have at least two prediction icons in the Taskbar, drag an app icon in the Taskbar, and drop it in the same place the prediction icon shouldn't change
Change-Id: I6079ff6eb69d7b1cb3c22bebc84511c0abd61cec
2022-02-07 19:10:55 +00:00
Thiru Ramasamy 441461c95c [OneSearch] Deprecate CorrectedDeviceSearchResultContainer with SearchAttributes.
Loggin query_corrected signal as field is more scalable than separate CorrectedDeviceSearchResultContainer for future usecases.

Test: Manual - http://gpaste/6343087535161344
Bug: 199495917
Change-Id: I6b3a410f4d977db2a058f337d1684f78763acbd2
2022-02-04 11:51:59 -08:00
kholoud mohamed c76b2035aa Allow overriding enterprise related strings in Launcher
Test: manual
Bug: 188414133
Bug: 211422509
Bug: 188410712
Change-Id: I75858cdcf2057e7c270da5893cd9a90c6753f182
2022-01-28 16:33:03 +00:00
Brian Isganitis f7c2adf861 Avoid race condition with hotseat predictions.
Make sure that the ArrayList cannot be cleared on the model thread while
it is being used on the UI thread to render a launcher preview.

Test: Manual
Fix: 210123588
Change-Id: I5a47cb3f28f5ac9e400f6ae535e410c345e14ee1
2021-12-22 01:08:46 +00:00
Thiru Ramasamy f7ebfb9a7f Log launcher settings whenever launcher layout is logged using pull atom.
* Whenever launcher setting is changed, only log the changed setting instead of all

Bug: 181703659
Test: wwdebug && wwlogcat AND statsd_testdrive 10108

Change-Id: I9c6b7a17d653038a91f885df455e5ebbb401b49a
2021-12-09 06:13:44 +00:00