summaryrefslogtreecommitdiff
path: root/Android.bp
AgeCommit message (Collapse)Author
2025-02-07Revert^2 "Remove apex_available value in IntentResolver" am: c4a2845cf3 am: ↵ Colin Cross
1cf477558f Original change: https://android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/3483054 Change-Id: I64dc3efb71c892a54b84b5367464cfa7e72db13f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2025-02-07Revert "Remove apex_available value in IntentResolver" am: 1f1bc01d9f am: ↵ Chaitanya Cheemala (xWF)
1cf6ee362f Original change: https://android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/3481356 Change-Id: Id7f2620b6cb0ee696a71669af5c61bd72041af94 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2025-02-07Revert^2 "Remove apex_available value in IntentResolver" Colin Cross
1f1bc01d9f5bf27d36065dabf1f7ec134e1e3290 Change-Id: Idc01d43893e3d982d7fb3a028ba109cc54a8d1aa
2025-02-07Revert "Remove apex_available value in IntentResolver" Chaitanya Cheemala (xWF)
Revert submission 3477737-move_apex_shortcut Reason for revert: Likely culprit for b/394990888 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted. Reverted changes: /q/submissionid:3477737-move_apex_shortcut Change-Id: I1501b4a26a4fc20a9b2bc8bad92c54ad697c7d9c
2025-02-06Remove apex_available value in IntentResolver am: ab260a486f am: 290ea41efb Colin Cross
Original change: https://android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/3478039 Change-Id: Ie2665e2c5c6743ff454127a48b083cd3e8b0ecfe Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2025-02-05Remove apex_available value in IntentResolver Colin Cross
com.android.intentresolver doesn't exist, but the value wasn't being checked because no apexes depended on the module, triggering a shortcut that skipped the apex_available check. Bug: 394664568 Test: builds Change-Id: I2eff312d13e11574c2e755ce5d02b4092196f7ed
2025-01-14Allow text toggle for shares from sysui. Matt Casey
Criteria will need to be refined in a follow-up CL, but getting the parts in place behind a flag here. Preview UI change is minimal. Test has some duplicated boilerplate but choosing not to refactor that because the UI itself is a better refactor candidate but outside the scope of this CL. Bug: 242791070 Test: atest ChooserRequestTest Test: atest FilesPlusTExtContentPreviewUiTest Test: manual end-to-end test with feature flag on. Flag: com.android.systemui.shared.screenshot_context_url Change-Id: I6eaca454a88e8b8c8a196d825c7ac3daee437109
2024-12-13An experimental interactive Chooser session implementation Andrey Yepin
Bug: 378493324 Test: manual testing with a test app Test: atest IntentResolver-tests-unit Test: atest IntentResolver-tests-activity Flag: com.android.intentresolver.interactive_session Change-Id: I15b303dd3912c63538930d39b7743e290adb480c
2024-10-09Add Launcher hover effect Andrey Yepin
Use Launcher iconlib's FastBitmapDrawable for chooser item icons to enable the Launcher pointer hover effect. Add a custom ChooserTargetItemView to dispatch hover events. Modify the chooser item layout to use the new view and replace image view margins with paddings to accommodate scaled-up icons on hover. Bug: 295175912 Test: atest IntentResolver-tests-unit Test: manual testing for icons hover effect including the case of disabled icons when no selections is made in Shareousel Flag: com.android.intentresolver.target_hover_and_keyboard_focus_states Change-Id: I9bc468895b72dc6770b8c4c7eeac7673b4d6a8b4
2024-05-30Enable optimized_shrink_resources r8 flag for IntentResolver Morgan Law
Bug: 333602171 Change-Id: I9f9261ba823c08ba0f624c4daf35fcd4db911c45
2024-04-23Update lint baseline for IntentResolver-core Peter Kalauskas
Flag: NONE Bug: 334172345 Test: m out/soong/.intermediates/packages/modules/IntentResolver/IntentResolver-core/android_common/<hash>/lint/lint-baseline.xml Change-Id: I855f057120c771bf9fa0e926f811632067405e21
2024-03-26Migrate Test Targets to New Android Ownership Model Mark Renouf
See: go/new-android-ownership-model Bug: 304529413 Test: N/A Change-Id: Ib5a952d8e6896056e32e751bcd2f76c5557322e7
2024-03-12Enable stricter Dagger validations Mark Renouf
These are going to become errors in a future Dagger release. Bug: 26028269 Test: compile Flag: NA Change-Id: I8ccb34832249cb7f5fa7c683d998af4a8ff43281
2024-02-08Shareousel composables and view-model definitions Steve Elliott
Bug: 302691505 Flag: ACONFIG android.service.chooser.chooser_payload_toggling DEVELOPMENT Test: N/A - code isn't live Change-Id: Ibf197591b238a286b12290ccc33d69ab3efd56d8
2023-11-28Splits tests Mark Renouf
This splits the monolithic 'tests' target into multiple types based on classification. See the corresponding README.md for descriptions. The target 'IntentResolverUnitTests' is replaced by: IntentResolver-tests-unit IntentResolver-tests-activity IntentResolver-tests-integration IntentResolver-tests-shared To run everything, use: atest IntentResolver-tests-* To run TreeHugger presubmits: atest --test-mapping pacakges/modules/IntentResolver Equivalently for postsubmit: atest --test-mapping pacakges/modules/IntentResolver:postsubmit Bug: 300157408 Test: atest IntentResolver-tests-* Change-Id: I9d499284f070a4bfa3e7c1b7c3bbfaa8adb3379b
2023-10-10Inject ComponentNames for image editor and nearby share Mark Renouf
Adds a SecureSettings fake Adds test coverage for new modules Removes another overload from ChooserActivityWrapper Uses @BindValue in tests to alter the configured editor component Test: atest --test-mapping packages/modules/IntentResolver Bug: 300157408 Bug: 302113519 Change-Id: Ie7d5fe12ad0d8e7fd074154641de35fe89d50ce6
2023-09-11Remove SysUiFlags, provide injectable FeatureFlags Mark Renouf
Bug: 296633726 Test: atest IntentResolverUnitTests Change-Id: I523c9af094da30307904003c417dc50c6cb4a44b
2023-09-11Enable dependency injection using Hilt Mark Renouf
This includes modifications to initialization of ChooserActivity to avoid violating scoping and order of initialization. Bug: 299610743 Test: atest IntentResolverUnitTests Test: atest CtsSharesheetDeviceTest Change-Id: I6570bda272eff44b3a64eab9df38049beb9c9fcc
2023-09-09Enables optimizations on IntentResolver app target Mark Renouf
Enable optimization, bytecode and resource shrinking. This reduces installed file size by nearly 1MB (30%). Bug: 299156789 Test: Full build and manual test Test: atest IntentResolverUnittests Test: atest CtsSharesheetTestCases Change-Id: I55c39c8643831e198dc818e466f68c12de74ec36
2023-09-06Adds AConfig flag infrastructure to IntentResolver Mark Renouf
Build: Inlcudes Some general build hygeine and simplification Creates an aconfig flag declaration and java library Add java_defaults rules for library and app for common settings Tests: Added direct dep on JUnit (was indirectly pulled in) Remove source dependency (on main code) from the test app target Remove optimization and dexopt from the debug app target Test: All existing tests pass; atest IntentResolverUnitTests Test: Setup using ASfP (Android studio for platform) Bug: 296633726 Change-Id: I8046f76aa20957342ddddabc8861c0a8fe25e0fb
2023-08-30Revert "Creates application-level and activity-level dagger graphs" Mark Renouf
This reverts commit 114b886b4aaf3341b4072f184c96cc71d4763f76. and dependent commit 35a34bcaf236597703208cf0472cb268b42abb1c. Change-Id: Ied8c43ed7c596624e045cb8e7b4e7f1c9ba66c58
2023-08-08Adds Dagger support for ViewModel scope Mark Renouf
Dependencies may now be bound to ViewModelScope which survives across Activity configuration restarts. ChooserViewModel is available in ChooserActivity. ViewModel components should be provided by ViewModelComponent to wire up the core parts of the app. A @ViewModel CoroutineScope is also available to inject from within ViewModelScope. * Injects [Resolver|Chooser](Wrapper)Activity in tests * Injects Intent args (Bundle) into ViewModel * Injects Referrer (Uri) into ViewModel Adjusts module structure slightly to accomodate the current state. Further restructuring will be done to simplify the test modules & components required. Test: atest IntentResolverUnitTests Change-Id: Ia249cf07796a9993f2cd021930c52faadb046ca8
2023-07-13IntentResolver: prepare IntentResolver-core for client usage Christian Göllner
- Creates "lib" AndroidManifest.xml containing the required permissions - Adds proguard configuration file Bug: 265905535 Change-Id: Ie24cd32c1816d349a3ba59ff206d9fc210f54a21
2023-06-23Creates application-level and activity-level dagger graphs Govinda Wasserman
Provides Activities and BroadcastReceivers with the ability to use injection in their constructors. Adds ChooserActivity, ResolverActivity, IntentForwarderActivity, and ChooserActivityReEnabler to the dagger graph. Test: Existing tests still pass BUG: 242615621 Change-Id: I0ce3bb225ceab59243833535c3776d9d64672d7d
2023-03-21Maintain previews aspect ratio Andrey Epin
Content preview preserves previews apspect raio (limiting between 0.4 and 2.5). ScrollableImagePreviewView now makes an initial pass over provided URIs to determine preview aspect ratio; previews that successfully loaded are progressively added to the dislay list. Previews that failed to load counted in the "+N" item at the list end. Previews are displayed in the order they are loaded (concurrently) to facilitate the fastest preview display. Preivew item height and spacings are change accroding to the latest specs. Bug: 271613784 Test: manual testing Change-Id: I430f1e7fb39c97da91bdc25914a0cb804a2b6ffa
2023-01-31Merge "Feature flags support in Chooser" into tm-qpr-dev am: 1ec46f3799 Andrey Epin
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/21144679 Change-Id: I75bb6f539318d23a2abc169b3e4865019f6feb45 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-01-30Feature flags support in Chooser Andrey Epin
A minimalistic replica of the SysUI feature flag infrastructure so the app could both reuse some of the existing flag infrastructure (local flag flipping) and have features controlled remotely (through DeviceConfig). A re-introduction of reverted ag/20796272 with the fixed release build variant. Bug: 262578843 Test: Manual tests with some injected debug code and local flag flipping Test: Smoke tests both build variants Change-Id: Ie536172020bcb7e6cd96f44c228a6941004858f8
2023-01-30Revert "Feature flags support in Chooser" am: 6e24587897 Oli Thompson
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/21141059 Change-Id: I0633236fcc385da7488fae41642f4d3dd38ea52e Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-01-30Revert "Feature flags support in Chooser" Oli Thompson
This reverts commit 33bb96bf4da9ad037d1184c644fd9c26db569ded. Reason for revert: DroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/quarterdeck?branch=git_master&target=bramble-user&lkgb=9536619&lkbb=9537444&fkbb=9536627 , bug b/267135531 BUG: b/267135531 Change-Id: I73f5b6c66e27dd0e5a628034604e80523f2acf99
2023-01-28Feature flags support in Chooser am: 33bb96bf4d Andrey Epin
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/20796272 Change-Id: Iaf5b26f302206fd9b8333617dc70d32e970efb26 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-01-27Feature flags support in Chooser Andrey Epin
A minimalistic replica of the SysUI feature flag infrastructure so the app could both reuse some of the existing flag infrastructure (local flag flipping) and have features controlled remotely (through DeviceConfig). Bug: 262578843 Test: Manual tests with some injected debug code and local flag flipping Change-Id: If4be0cfce17e98b978966ea5172f85c5d406f833
2023-01-04Merge "Introduce an image preview view" into tm-qpr-dev am: 50e07cf4d4 TreeHugger Robot
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/20822634 Change-Id: I9c10ffd7c9983a0352b6a730ec82789e049b6f27 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-12-28Introduce an image preview view Andrey Epin
A preparation step for image preview UI update. A new view, ImagePreviewView, that encapsulates image preview grid UI is created. The view has a generalized interface for image loading: it accepts a list of image URIs and a suspend function that would perform actual image loading. The image loading is still delegated to ChooserContentPreviewCoordinator class that has the following collateral changes: - all UI logic is moved out of the class either into the new view or into ChooserContentPreviewUI; - mOnSingleImageSuccessCallback is removed and replaced with a separate callback (see description below). ChooserActivity used ChooserContentPreviewCoordinator#mOnSingleImageSuccess as a signal to start lisneting for the shared element transition animation (SETA) target readiness. With all image preview UI logic now being encapsulated in the new ImagePreviewView view, the new view triggers a SETA target readiness callback instead, if configured. As ChooserActivity explicitely resumes SETA for a non-image preview, ChooserContentPreviewCoordinator always triggers image callback and the new view always notify about SETA target readiness, we should be fine with remplacing the after-image-loaded callback. Flag: IntentResolver package entirely behind the CHOOSER_UNBUNDLED which is in teamfood Bug: 262280076 Test: manual tests for all previe types, multi- and single profile and SETA (share a shcreenshot) tests. Test: delay image loading and test that in all cases SETA is not get stuck. Test: atest IntentResolverUnitTests Change-Id: I081ab98c2bcb24cd2ad96b508ab559d7775aeaf4
2022-12-05Remove usages of java_api_finder am: cc64c57aa4 Cole Faust
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/20643189 Change-Id: I3aa5f28792718b4c60e7f05824aeaa716f1dbc53 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-12-05Remove usages of java_api_finder Cole Faust
This errorprone checker is no longer used. Bug: 260268418 Test: Presubmits Change-Id: Iff11442aa375bf466b9acdcac4d398927f72ad19 (cherry picked from commit 5d0ac03699756fd8b0bbeda7701ed4af625b8c4d)
2022-11-10Clarify/simplify ContentPreviewCoordinator lifecycle Joshua Trask
This is *not* an obviously-safe "pure" refactor; there are a few notable logic changes(*), but they should cause no observable behavior changes in practice. The simplified lifecycle (deferred assignment -> pre-initialization) shows that this component has essential responsibilities to `ChooserActivity` in ensuring that asynchronous tasks are shut down when the activity is destroyed. Minor refactoring in this CL shows that the component is otherwise injectable as a delegate in our preview-loading "factories," to be extracted in another upcoming cleanup CL; a new (temporarily-homed) interface in this CL makes that delegation API explicit. I extracted the implementation to an outer class to chip away at the `ChooserActivity` monolith; to draw attention to the coordinator's business-logic responsibilities in defining success/failure conditions (in addition to the UI responsibilities that ayepin@ suggests could be separated from the rest of the coordinator component); and to provide a clearer line to cut away if we (hopefully) eventually decide to move off of this particular processing model altogether. For more discussion see comments on ag/20390247, summarized below. * [Logic changes] 1. We now guarantee at most one `ContentPreviewCoordinator` instance. This is unlikely to differ from the earlier behavior, but we would've had no checks before a potential re-assignment. If one were to occur, we would've lost track of any pending tasks that the previous instance(s) were responsible for cancelling. (By comparison, after this CL, multiple instances would instead queue their requests in a shared coordinator and influence each other's "batch" timeout logic -- it's debatable whether that's correct, but it's ultimately insignificant either way). 2. Even if we never re-assigned any extra coordinator instances, the model prior to this CL was effectively "lazy initialization" of the coordinator, but we now initialize a coordinator "eagerly" to simplify the lifecycle. While the earlier model was technically "lazy," it was still computed during the `onCreate()` flow, so this doesn't make much difference -- except notably, we'll now initialize a coordinator for every Sharesheet session, even if we don't end up building a preview UI. The coordinator class is lightweight if it's never used, so this doesn't seem like a problem. 3. The `findViewById()` queries in `ContentPreviewCoordinator` now have a broader root for their search so that they can work for both kinds of previews ("sticky" and "list item"), and we can share the one eagerly-initialized instance. We can always change the API if we need more specificity later, but for now it seems like we can make this change with no repercussions for our app behavior. For more detail see ag/20390247, but essentially: a. The IDs of the views we search for are explicitly named for the purpose of content previews and won't plausibly be used for anything else. Thus, b. The broadened queries could only be ambiguous if we were to display more than one content preview in our hierarchy. But: c. We show at most one content preview: either the "sticky" preview in the `ChooserActivity` root layout, or the "list item" preview that's built into the list *when we have only one profile to show*, and never both (gated on the result of `shouldShowTabs()`). Test: atest IntentResolverUnitTests Bug: 202167050 Change-Id: I0dd6e48ee92845ce68d6dcf8e84e272b11caf496
2022-10-20Delegate AppPredictor creation to a factory class Andrey Epin
A scaffolding chnage that delegates AppPredictor instance creation to a new factory class. As we always create an AppPredictor instance for each available profile, the creation logic is changed from lazy to eager. As a collateral change, remvoe some obsolete flags. Test: manual test Test: atest IntentResolverUnitTests Change-Id: I0cce89bce1fb39d39792263a3a490a074304afe3
2022-10-18Re-enable r8 optimization in IntentResolver Joshua Trask
The previous "un-kept symbol" problem (with ChooserGridLayoutAdapter) was inadvertently fixed by ag/20120577 (confirmed by going back to check `apkdiffstats` before-and-after to note that the old crash is due to a method that was only "un-kept" in the old version that still shared framework RecyclerView). Manual review of other un-kept symbols under `com.android.intentresolver.*` all seemed reasonable in this new CL. For more info, see discussion on b/249159065. Bug: 249159065, 249081140 Test: manual, and `atest IntentResolverUnitTests` Change-Id: Ia6cf5dd80ba3ec16038225ccdac5203782c3db1f
2022-10-11Change ResolverActivity base class to FragmentActivity Andrey Epin
Change ResolverActivity's base class to FragmentMnager to make lifecycle and view model related functionality available. Only a few Activity's methods used by either ResolverActivity or ChooserActivity are changed in the FragmentActivity hierarchy (except for lifecycle methods e.g. onCreate): - setContentView: adds support for view lifecycle; - setEnterSharedElemenCallabck: adds support for older SDK versions, no-op in our case; - getFragmentManager(): deprecated by FragmetnActivity, switched over to getSupportFragmentManager(). Test: manual general functinality test, pinning (ChooserTargetActionDialogFragment) Test: atest IntentResolverUnitTests Change-Id: If3b80c63facb9de04343409cf64db758700ec147
2022-10-11Switch off sharing framework's "widgets" Joshua Trask
This forks the ResolverDrawerLayout, which appears to be custom and specific to our app. Any other dependencies from the framework package com.android.internal.widget were old copies of androidx libraries, and the "unbundled" IntentResolver is able to take dependencies on the real versions instead. No dependencies into that framework package remain after this CL. These changes were excluded from ag/20001357 (as described in go/chooser-fork-cl) in order to isolate any possible regressions (and also to split up the review burden for the original fork CL). There are no behavior changes *expected* from this CL, but any edge-case discrepancies are hopefully improvements due to bugfixes or other refinements that were put into the androidx libraries after the framework copy was cut. The APIs themselves are supposed to be drop-in compatible. Test: atest IntentResolverUnitTests Bug: 248566504 Change-Id: I8e02fd580d395446066fc2bb239a9bef833ef059
2022-09-23Fork framework chooser code to IntentResolver path Joshua Trask
This copies Chooser classes and (as needed) their transitive dependencies, while making minor mechanical changes to fix up references for the new package. This is a large CL, especially since we don't track the history of these files across projects (framework vs. "unbundled"), and the meaningful changes could easily get lost in the noise; reviewers should see accompanying notes at go/chooser-fork-cl. Test: locally re-enabled and ran UnbundledChooserActivityTest (as updated in this CL to match the framework version), then re-disabled before uploading. See notes for more info. Change-Id: I6708e3563d18a9e31894dd36dcd65e9a5815abcf
2022-02-02Copy sharesheet style information into unbundled branch Matt Casey
This restores the semitransparent background and entrance/exit animations. A bunch of the style stuff is private so it couldn't be referenced, subsequent CLs will resolve these (left them commented out for now). Bug: 202165481 Test: Visual verification Change-Id: Icd75afde8e0ab3afa2e238c49c526100da86febb
2021-11-18Derive unbundled Chooser from system version. Joshua Trask
This is a shortcut to bootstrap the unbundling work by providing an architectural equivalent to the next "phase" of unbundling while we continue investigating (i.e., in in this version, the unbundled ChooserActivity is responsible for showing the Sharesheet UI, and then it launches the user's selection via the startActivityAsCaller API). For more information about: * The "unbundling" project: go/sharesheet-unbundling * The architecture of this next (third) unbundling phase: go/sharesheet-unbundling-phases * The motivation for starting with this temporary inheritance-based implementation: b/202165481 Test: Manually tested (in combination with system-side change ag/16285975). I had to disable the auto-selection logic to see any UI (b/206831012), but I was able to get a sharesheet activity from userspace, where I selected a target that then got launched. This is *not* at parity, but it's a baseline we can use when we investigate the remaining issues. Bug: 202165481 Change-Id: Ia2b89cc0e2735c8be7ad4cfc46c626a93e7fdee3
2021-11-08Preliminary "delegate chooser" unbundling. Joshua Trask
Migrate the "delegate chooser" activity from SysUI to the new Sharesheet (IntentResolver) package. Set up basic project structure, tests, etc. This CL involves a lot of unfamiliar boilerplate that I've tried to copy from neighboring projects. Please feel free to recommend additional reviewers for any complexities I may have overlooked. The rest of this CL description will detail: 1. Unbundling/"delegate chooser" background 2. Scope: what's included in this change 3. Scope: what's not included in this change 4. Key considerations for code reviewers [1. Unbundling/"delegate chooser" background] The "delegate chooser" activity will eventually replace the system `ChooserActivity` as the new "unbundled" Sharesheet implementation. In order to validate the new architecture, an earlier exploration added a "trampoline" chooser implementation in SysUI. This implementation presents no UI of its own, but instead handles the fulfillment of the user's selection from the system Sharesheet. In upcoming experiments, we expect to have the unbundled implementation replicate the original UI of the system `ChooserActivity` so that the new version can take over earlier in the flow, and ultimately replace the system implementation altogether. For more information, see go/sharesheet-unbundling. [2. Scope: what's included in this change] This CL replicates SysUI's "trampoline" delegate implementation into the newly-created directory for the unbundled module. The main purpose of this CL is to set up the basic boilerplate in that directory (owners, etc). I stopped at the first meaningful milestone that I could confirm worked correctly -- the unbundled unit tests pass with atest. Note that (other than the package names) the Java code itself is unchanged from the earlier SysUI implementation. [3. Scope: what's not included in this change] Before the longer-term improvements outlined in go/sharesheet-unbundling, there are a few fundamental unbundling steps that are remaining after this CL. They were omitted in this first pass since we already have a working milestone and intend to focus the current review on project/directory boilerplate. Specifically: A. There is no experiment that would cause users to exercise the new delegation path (b/202166034). If there are any issues with the implementation at this point, we wouldn't expect them to be visible to users. B. There may(?) be other steps required to integrate the new "unbundled" module into the Android build (e.g. makepush?). This CL is sufficient to run the unit tests in the new unbundled directory, but no manual testing was done to confirm the end-user behavior. C. This doesn't include any APEX boilerplate (manifests, keys). That may not be important yet since we don't have any immediate plans to launch as a mainline module, or it may come up as part of doing the integration work for (B). D. The old SysUI delegate implementation is left in tact, but should be cleaned up as we switch over to the new architecture. [4. Key considerations for code reviewers] This change is mostly boilerplate cribbed from neighboring projects. Following is a short list of decisions I made that could deserve a second look: A. The package name: com.android.intentresolver B. (omitted for lint, but this was resolved in a discussion with OSPO) C. The versioning scheme. I used a YYYY-MM versionName as in ExtServices, but for now just have versionCode="0" until we have a numeric scheme. D. AndroidManifest attributes, mostly copied from SysUI. E. SDK versions / "platform_apis" attribute. I had to try a few things to get this working. It seems OK now, but there may be a better/more elegant approach. If we do need to support specific earlier versions, we should confirm that those versions had the startActivityAsCaller API available. Either way, there's some cruft in this CL that should be cleaned up once we confirm the approach. Bug: 202164690, 202165476 Test: `atest IntentResolverUnitTests` Change-Id: If53eee98ac92685810bbb84feb9cb1030a161502