summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
author Andrey Yepin <ayepin@google.com> 2023-10-16 17:10:50 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-10-16 17:10:50 +0000
commit6f76017966b3110d3a83ca1a91fadf56beed5615 (patch)
treeaf0dad713c1ec3e85e7ddc5472f1d955af179466 /java/src
parent46d1d7b6d4ac7dc04dd0bef4f2dfdb7cfc5300a7 (diff)
parentcf8c54400d2d94d3f3a32e1ef0cc48fa576c75b4 (diff)
Merge "Inject TargetDataLoader into ChooserActivity" into main
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/inject/FrameworkModule.kt7
-rw-r--r--java/src/com/android/intentresolver/v2/ChooserActivity.java4
-rw-r--r--java/src/com/android/intentresolver/v2/icons/TargetDataLoaderModule.kt40
3 files changed, 46 insertions, 5 deletions
diff --git a/java/src/com/android/intentresolver/inject/FrameworkModule.kt b/java/src/com/android/intentresolver/inject/FrameworkModule.kt
index 39a2faf9..2f6cc6a0 100644
--- a/java/src/com/android/intentresolver/inject/FrameworkModule.kt
+++ b/java/src/com/android/intentresolver/inject/FrameworkModule.kt
@@ -21,7 +21,6 @@ import android.app.admin.DevicePolicyManager
import android.content.ClipboardManager
import android.content.Context
import android.content.pm.LauncherApps
-import android.content.pm.PackageManager
import android.content.pm.ShortcutManager
import android.os.UserManager
import android.view.WindowManager
@@ -39,7 +38,9 @@ private fun <T> Context.requireSystemService(serviceClass: Class<T>): T {
@InstallIn(SingletonComponent::class)
object FrameworkModule {
- @Provides fun contentResolver(@ApplicationContext ctx: Context) = ctx.contentResolver!!
+ @Provides
+ fun contentResolver(@ApplicationContext ctx: Context) =
+ requireNotNull(ctx.contentResolver) { "ContentResolver is expected but missing" }
@Provides
fun activityManager(@ApplicationContext ctx: Context) =
@@ -59,7 +60,7 @@ object FrameworkModule {
@Provides
fun packageManager(@ApplicationContext ctx: Context) =
- ctx.requireSystemService(PackageManager::class.java)
+ requireNotNull(ctx.packageManager) { "PackageManager is expected but missing" }
@Provides
fun shortcutManager(@ApplicationContext ctx: Context) =
diff --git a/java/src/com/android/intentresolver/v2/ChooserActivity.java b/java/src/com/android/intentresolver/v2/ChooserActivity.java
index e49cc91e..a3177028 100644
--- a/java/src/com/android/intentresolver/v2/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/v2/ChooserActivity.java
@@ -97,7 +97,6 @@ import com.android.intentresolver.contentpreview.PreviewViewModel;
import com.android.intentresolver.emptystate.EmptyState;
import com.android.intentresolver.emptystate.EmptyStateProvider;
import com.android.intentresolver.grid.ChooserGridAdapter;
-import com.android.intentresolver.icons.DefaultTargetDataLoader;
import com.android.intentresolver.icons.TargetDataLoader;
import com.android.intentresolver.logging.EventLog;
import com.android.intentresolver.measurements.Tracer;
@@ -194,6 +193,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
@Inject public EventLog mEventLog;
@Inject @ImageEditor public Optional<ComponentName> mImageEditor;
@Inject @NearbyShare public Optional<ComponentName> mNearbyShare;
+ @Inject public TargetDataLoader mTargetDataLoader;
/* TODO: this is `nullable` because we have to defer the assignment til onCreate(). We make the
* only assignment there, and expect it to be ready by the time we ever use it --
@@ -287,7 +287,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
mChooserRequest.getInitialIntents(),
/* resolutionList= */ null,
/* supportsAlwaysUseOption= */ false,
- new DefaultTargetDataLoader(this, getLifecycle(), false),
+ mTargetDataLoader,
/* safeForwardingMode= */ true);
getEventLog().logSharesheetTriggered();
diff --git a/java/src/com/android/intentresolver/v2/icons/TargetDataLoaderModule.kt b/java/src/com/android/intentresolver/v2/icons/TargetDataLoaderModule.kt
new file mode 100644
index 00000000..4e8783f8
--- /dev/null
+++ b/java/src/com/android/intentresolver/v2/icons/TargetDataLoaderModule.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.intentresolver.v2.icons
+
+import android.content.Context
+import androidx.lifecycle.Lifecycle
+import com.android.intentresolver.icons.DefaultTargetDataLoader
+import com.android.intentresolver.icons.TargetDataLoader
+import com.android.intentresolver.inject.ActivityOwned
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.android.components.ActivityComponent
+import dagger.hilt.android.qualifiers.ActivityContext
+import dagger.hilt.android.scopes.ActivityScoped
+
+@Module
+@InstallIn(ActivityComponent::class)
+object TargetDataLoaderModule {
+ @Provides
+ @ActivityScoped
+ fun targetDataLoader(
+ @ActivityContext context: Context,
+ @ActivityOwned lifecycle: Lifecycle,
+ ): TargetDataLoader = DefaultTargetDataLoader(context, lifecycle, isAudioCaptureDevice = false)
+}