diff options
| author | 2023-10-09 12:08:49 -0700 | |
|---|---|---|
| committer | 2023-10-11 12:52:00 -0700 | |
| commit | cf8c54400d2d94d3f3a32e1ef0cc48fa576c75b4 (patch) | |
| tree | edb3bd4aca8b29cbaf2c4edb71851d4d94b5d937 /java | |
| parent | 3b306cbbce743466212778fdda51cd1600b0711d (diff) | |
Inject TargetDataLoader into ChooserActivity
Bug: 285314844
Test: presubmits, funtionalityf smoke tests
Change-Id: Ib27b76be3ca81f25a866eb49d6cb5ea0ce27de0c
Diffstat (limited to 'java')
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 f13d87ce..6094e66a 100644 --- a/java/src/com/android/intentresolver/v2/ChooserActivity.java +++ b/java/src/com/android/intentresolver/v2/ChooserActivity.java @@ -99,7 +99,6 @@ import com.android.intentresolver.emptystate.EmptyStateProvider; import com.android.intentresolver.emptystate.NoCrossProfileEmptyStateProvider; import com.android.intentresolver.emptystate.NoCrossProfileEmptyStateProvider.DevicePolicyBlockerEmptyState; 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) +} |