From 8ea89dd1b1a192710340d58eae28a003f63c804c Mon Sep 17 00:00:00 2001 From: Andrey Epin Date: Sun, 24 Sep 2023 11:49:28 -0700 Subject: Replace array of strings with a class Bug: 285314844 Test: presubmits, funtionalityf smoke tests Change-Id: Ic2226af153850c6855c08ca20063fcc65c8b958e --- .../intentresolver/ResolverListAdapter.java | 7 ++++--- .../icons/DefaultTargetDataLoader.kt | 6 +++--- .../com/android/intentresolver/icons/LabelInfo.kt | 19 +++++++++++++++++++ .../intentresolver/icons/LoadLabelTask.java | 22 ++++++++++------------ .../intentresolver/icons/TargetDataLoader.kt | 2 +- .../intentresolver/ResolverWrapperActivity.java | 3 ++- .../intentresolver/v2/ResolverWrapperActivity.java | 3 ++- 7 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 java/src/com/android/intentresolver/icons/LabelInfo.kt (limited to 'java') diff --git a/java/src/com/android/intentresolver/ResolverListAdapter.java b/java/src/com/android/intentresolver/ResolverListAdapter.java index d1e8c15b..ab669f92 100644 --- a/java/src/com/android/intentresolver/ResolverListAdapter.java +++ b/java/src/com/android/intentresolver/ResolverListAdapter.java @@ -47,6 +47,7 @@ import androidx.annotation.WorkerThread; import com.android.intentresolver.chooser.DisplayResolveInfo; import com.android.intentresolver.chooser.TargetInfo; +import com.android.intentresolver.icons.LabelInfo; import com.android.intentresolver.icons.TargetDataLoader; import com.android.internal.annotations.VisibleForTesting; @@ -762,12 +763,12 @@ public class ResolverListAdapter extends BaseAdapter { } protected final void onLabelLoaded( - DisplayResolveInfo displayResolveInfo, CharSequence[] result) { + DisplayResolveInfo displayResolveInfo, LabelInfo result) { if (displayResolveInfo.hasDisplayLabel()) { return; } - displayResolveInfo.setDisplayLabel(result[0]); - displayResolveInfo.setExtendedInfo(result[1]); + displayResolveInfo.setDisplayLabel(result.getLabel()); + displayResolveInfo.setExtendedInfo(result.getSubLabel()); notifyDataSetChanged(); } diff --git a/java/src/com/android/intentresolver/icons/DefaultTargetDataLoader.kt b/java/src/com/android/intentresolver/icons/DefaultTargetDataLoader.kt index 646ca8e1..054fbe71 100644 --- a/java/src/com/android/intentresolver/icons/DefaultTargetDataLoader.kt +++ b/java/src/com/android/intentresolver/icons/DefaultTargetDataLoader.kt @@ -94,7 +94,7 @@ class DefaultTargetDataLoader( .executeOnExecutor(executor) } - override fun loadLabel(info: DisplayResolveInfo, callback: Consumer>) { + override fun loadLabel(info: DisplayResolveInfo, callback: Consumer) { val taskId = nextTaskId.getAndIncrement() LoadLabelTask(context, info, isAudioCaptureDevice, presentationFactory) { result -> removeTask(taskId) @@ -108,8 +108,8 @@ class DefaultTargetDataLoader( if (!info.hasDisplayLabel()) { val result = LoadLabelTask.loadLabel(context, info, isAudioCaptureDevice, presentationFactory) - info.displayLabel = result[0] - info.extendedInfo = result[1] + info.displayLabel = result.label + info.extendedInfo = result.subLabel } } diff --git a/java/src/com/android/intentresolver/icons/LabelInfo.kt b/java/src/com/android/intentresolver/icons/LabelInfo.kt new file mode 100644 index 00000000..a9c4cd77 --- /dev/null +++ b/java/src/com/android/intentresolver/icons/LabelInfo.kt @@ -0,0 +1,19 @@ +/* + * 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.icons + +class LabelInfo(val label: CharSequence?, val subLabel: CharSequence?) diff --git a/java/src/com/android/intentresolver/icons/LoadLabelTask.java b/java/src/com/android/intentresolver/icons/LoadLabelTask.java index b9a9d89d..6d443f78 100644 --- a/java/src/com/android/intentresolver/icons/LoadLabelTask.java +++ b/java/src/com/android/intentresolver/icons/LoadLabelTask.java @@ -28,16 +28,16 @@ import com.android.intentresolver.chooser.DisplayResolveInfo; import java.util.function.Consumer; -class LoadLabelTask extends AsyncTask { +class LoadLabelTask extends AsyncTask { private final Context mContext; private final DisplayResolveInfo mDisplayResolveInfo; private final boolean mIsAudioCaptureDevice; protected final TargetPresentationGetter.Factory mPresentationFactory; - private final Consumer mCallback; + private final Consumer mCallback; LoadLabelTask(Context context, DisplayResolveInfo dri, boolean isAudioCaptureDevice, TargetPresentationGetter.Factory presentationFactory, - Consumer callback) { + Consumer callback) { mContext = context; mDisplayResolveInfo = dri; mIsAudioCaptureDevice = isAudioCaptureDevice; @@ -46,7 +46,7 @@ class LoadLabelTask extends AsyncTask { } @Override - protected CharSequence[] doInBackground(Void... voids) { + protected LabelInfo doInBackground(Void... voids) { try { Trace.beginSection("app-label"); return loadLabel( @@ -56,7 +56,7 @@ class LoadLabelTask extends AsyncTask { } } - static CharSequence[] loadLabel( + static LabelInfo loadLabel( Context context, DisplayResolveInfo displayResolveInfo, boolean isAudioCaptureDevice, @@ -79,21 +79,19 @@ class LoadLabelTask extends AsyncTask { if (!hasRecordPermission) { // Doesn't have record permission, so warn the user - return new CharSequence[]{ + return new LabelInfo( pg.getLabel(), - context.getString(R.string.usb_device_resolve_prompt_warn) - }; + context.getString(R.string.usb_device_resolve_prompt_warn)); } } - return new CharSequence[]{ + return new LabelInfo( pg.getLabel(), - pg.getSubLabel() - }; + pg.getSubLabel()); } @Override - protected void onPostExecute(CharSequence[] result) { + protected void onPostExecute(LabelInfo result) { mCallback.accept(result); } } diff --git a/java/src/com/android/intentresolver/icons/TargetDataLoader.kt b/java/src/com/android/intentresolver/icons/TargetDataLoader.kt index 6186a5ab..07c62177 100644 --- a/java/src/com/android/intentresolver/icons/TargetDataLoader.kt +++ b/java/src/com/android/intentresolver/icons/TargetDataLoader.kt @@ -39,7 +39,7 @@ abstract class TargetDataLoader { ) /** Load target label */ - abstract fun loadLabel(info: DisplayResolveInfo, callback: Consumer>) + abstract fun loadLabel(info: DisplayResolveInfo, callback: Consumer) /** Loads DisplayResolveInfo's display label synchronously, if needed */ abstract fun getOrLoadLabel(info: DisplayResolveInfo) diff --git a/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java b/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java index fbcfcd35..7ffb90ce 100644 --- a/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java +++ b/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java @@ -38,6 +38,7 @@ import com.android.intentresolver.chooser.DisplayResolveInfo; import com.android.intentresolver.chooser.SelectableTargetInfo; import com.android.intentresolver.chooser.TargetInfo; import com.android.intentresolver.emptystate.CrossProfileIntentsChecker; +import com.android.intentresolver.icons.LabelInfo; import com.android.intentresolver.icons.TargetDataLoader; import java.util.List; @@ -263,7 +264,7 @@ public class ResolverWrapperActivity extends ResolverActivity { @Override public void loadLabel( @NonNull DisplayResolveInfo info, - @NonNull Consumer callback) { + @NonNull Consumer callback) { mLabelIdlingResource.increment(); mTargetDataLoader.loadLabel( info, diff --git a/java/tests/src/com/android/intentresolver/v2/ResolverWrapperActivity.java b/java/tests/src/com/android/intentresolver/v2/ResolverWrapperActivity.java index 610d031e..0fb77457 100644 --- a/java/tests/src/com/android/intentresolver/v2/ResolverWrapperActivity.java +++ b/java/tests/src/com/android/intentresolver/v2/ResolverWrapperActivity.java @@ -42,6 +42,7 @@ import com.android.intentresolver.chooser.DisplayResolveInfo; import com.android.intentresolver.chooser.SelectableTargetInfo; import com.android.intentresolver.chooser.TargetInfo; import com.android.intentresolver.emptystate.CrossProfileIntentsChecker; +import com.android.intentresolver.icons.LabelInfo; import com.android.intentresolver.icons.TargetDataLoader; import java.util.List; @@ -267,7 +268,7 @@ public class ResolverWrapperActivity extends ResolverActivity { @Override public void loadLabel( @NonNull DisplayResolveInfo info, - @NonNull Consumer callback) { + @NonNull Consumer callback) { mLabelIdlingResource.increment(); mTargetDataLoader.loadLabel( info, -- cgit v1.2.3-59-g8ed1b