summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java')
-rw-r--r--core/java/com/android/internal/app/AbstractResolverComparator.java12
-rw-r--r--core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java17
-rw-r--r--core/java/com/android/internal/app/ChooserActivity.java7
-rw-r--r--core/java/com/android/internal/app/ChooserActivityLogger.java20
-rw-r--r--core/java/com/android/internal/app/ChooserListAdapter.java6
-rw-r--r--core/java/com/android/internal/app/ResolverListController.java2
-rw-r--r--core/java/com/android/internal/app/ResolverRankerServiceResolverComparator.java4
7 files changed, 54 insertions, 14 deletions
diff --git a/core/java/com/android/internal/app/AbstractResolverComparator.java b/core/java/com/android/internal/app/AbstractResolverComparator.java
index ea3f1b1fc04c..40ada0b2ffdc 100644
--- a/core/java/com/android/internal/app/AbstractResolverComparator.java
+++ b/core/java/com/android/internal/app/AbstractResolverComparator.java
@@ -64,6 +64,7 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
private static final int WATCHDOG_TIMEOUT_MILLIS = 500;
private final Comparator<ResolveInfo> mAzComparator;
+ private ChooserActivityLogger mChooserActivityLogger;
protected final Handler mHandler = new Handler(Looper.getMainLooper()) {
public void handleMessage(Message msg) {
@@ -85,6 +86,9 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
}
mHandler.removeMessages(RANKER_SERVICE_RESULT);
afterCompute();
+ if (mChooserActivityLogger != null) {
+ mChooserActivityLogger.logSharesheetAppShareRankingTimeout();
+ }
break;
default:
@@ -131,6 +135,14 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
mAfterCompute = afterCompute;
}
+ void setChooserActivityLogger(ChooserActivityLogger chooserActivityLogger) {
+ mChooserActivityLogger = chooserActivityLogger;
+ }
+
+ ChooserActivityLogger getChooserActivityLogger() {
+ return mChooserActivityLogger;
+ }
+
protected final void afterCompute() {
final AfterCompute afterCompute = mAfterCompute;
if (afterCompute != null) {
diff --git a/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java b/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java
index b76ef0fd4ed8..bc9eff04636d 100644
--- a/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java
+++ b/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java
@@ -61,17 +61,19 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
private ResolverRankerServiceResolverComparator mResolverRankerService;
AppPredictionServiceResolverComparator(
- Context context,
- Intent intent,
- String referrerPackage,
- AppPredictor appPredictor,
- UserHandle user) {
+ Context context,
+ Intent intent,
+ String referrerPackage,
+ AppPredictor appPredictor,
+ UserHandle user,
+ ChooserActivityLogger chooserActivityLogger) {
super(context, intent);
mContext = context;
mIntent = intent;
mAppPredictor = appPredictor;
mUser = user;
mReferrerPackage = referrerPackage;
+ setChooserActivityLogger(chooserActivityLogger);
}
@Override
@@ -116,8 +118,9 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
// APS for chooser is disabled. Fallback to resolver.
mResolverRankerService =
new ResolverRankerServiceResolverComparator(
- mContext, mIntent, mReferrerPackage,
- () -> mHandler.sendEmptyMessage(RANKER_SERVICE_RESULT));
+ mContext, mIntent, mReferrerPackage,
+ () -> mHandler.sendEmptyMessage(RANKER_SERVICE_RESULT),
+ getChooserActivityLogger());
mResolverRankerService.compute(targets);
} else {
Log.i(TAG, "AppPredictionService response received");
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 28c2774cabb0..08db74f5e351 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -2591,7 +2591,8 @@ public class ChooserActivity extends ResolverActivity implements
boolean filterLastUsed, ResolverListController resolverListController) {
return new ChooserListAdapter(context, payloadIntents, initialIntents, rList,
filterLastUsed, resolverListController, this,
- this, context.getPackageManager());
+ this, context.getPackageManager(),
+ getChooserActivityLogger());
}
@VisibleForTesting
@@ -2600,11 +2601,11 @@ public class ChooserActivity extends ResolverActivity implements
AbstractResolverComparator resolverComparator;
if (appPredictor != null) {
resolverComparator = new AppPredictionServiceResolverComparator(this, getTargetIntent(),
- getReferrerPackageName(), appPredictor, userHandle);
+ getReferrerPackageName(), appPredictor, userHandle, getChooserActivityLogger());
} else {
resolverComparator =
new ResolverRankerServiceResolverComparator(this, getTargetIntent(),
- getReferrerPackageName(), null);
+ getReferrerPackageName(), null, getChooserActivityLogger());
}
return new ChooserListController(
diff --git a/core/java/com/android/internal/app/ChooserActivityLogger.java b/core/java/com/android/internal/app/ChooserActivityLogger.java
index 47d83346d038..321730786471 100644
--- a/core/java/com/android/internal/app/ChooserActivityLogger.java
+++ b/core/java/com/android/internal/app/ChooserActivityLogger.java
@@ -75,6 +75,20 @@ public interface ChooserActivityLogger {
}
/**
+ * Logs a UiEventReported event for the system sharesheet app share ranking timing out.
+ */
+ default void logSharesheetAppShareRankingTimeout() {
+ log(SharesheetStandardEvent.SHARESHEET_APP_SHARE_RANKING_TIMEOUT, getInstanceId());
+ }
+
+ /**
+ * Logs a UiEventReported event for the system sharesheet when direct share row is empty.
+ */
+ default void logSharesheetEmptyDirectShareRow() {
+ log(SharesheetStandardEvent.SHARESHEET_EMPTY_DIRECT_SHARE_ROW, getInstanceId());
+ }
+
+ /**
* Logs a UiEventReported event for a given share activity
* @param event
* @param instanceId
@@ -168,7 +182,11 @@ public interface ChooserActivityLogger {
@UiEvent(doc = "Sharesheet direct targets is fully populated.")
SHARESHEET_DIRECT_LOAD_COMPLETE(323),
@UiEvent(doc = "Sharesheet direct targets timed out.")
- SHARESHEET_DIRECT_LOAD_TIMEOUT(324);
+ SHARESHEET_DIRECT_LOAD_TIMEOUT(324),
+ @UiEvent(doc = "Sharesheet app share ranking timed out.")
+ SHARESHEET_APP_SHARE_RANKING_TIMEOUT(831),
+ @UiEvent(doc = "Sharesheet empty direct share row.")
+ SHARESHEET_EMPTY_DIRECT_SHARE_ROW(828);
private final int mId;
SharesheetStandardEvent(int id) {
diff --git a/core/java/com/android/internal/app/ChooserListAdapter.java b/core/java/com/android/internal/app/ChooserListAdapter.java
index cc2b12a99d79..87737ca9c3af 100644
--- a/core/java/com/android/internal/app/ChooserListAdapter.java
+++ b/core/java/com/android/internal/app/ChooserListAdapter.java
@@ -79,6 +79,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
private final ChooserListCommunicator mChooserListCommunicator;
private final SelectableTargetInfo.SelectableTargetInfoCommunicator
mSelectableTargetInfoCommunicator;
+ private final ChooserActivityLogger mChooserActivityLogger;
private int mNumShortcutResults = 0;
private Map<DisplayResolveInfo, LoadIconTask> mIconLoaders = new HashMap<>();
@@ -104,7 +105,8 @@ public class ChooserListAdapter extends ResolverListAdapter {
boolean filterLastUsed, ResolverListController resolverListController,
ChooserListCommunicator chooserListCommunicator,
SelectableTargetInfo.SelectableTargetInfoCommunicator selectableTargetInfoCommunicator,
- PackageManager packageManager) {
+ PackageManager packageManager,
+ ChooserActivityLogger chooserActivityLogger) {
// Don't send the initial intents through the shared ResolverActivity path,
// we want to separate them into a different section.
super(context, payloadIntents, null, rList, filterLastUsed,
@@ -115,6 +117,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
mChooserListCommunicator = chooserListCommunicator;
createPlaceHolders();
mSelectableTargetInfoCommunicator = selectableTargetInfoCommunicator;
+ mChooserActivityLogger = chooserActivityLogger;
if (initialIntents != null) {
for (int i = 0; i < initialIntents.length; i++) {
@@ -590,6 +593,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
mServiceTargets.removeIf(o -> o instanceof ChooserActivity.PlaceHolderTargetInfo);
if (mServiceTargets.isEmpty()) {
mServiceTargets.add(new ChooserActivity.EmptyTargetInfo());
+ mChooserActivityLogger.logSharesheetEmptyDirectShareRow();
}
notifyDataSetChanged();
}
diff --git a/core/java/com/android/internal/app/ResolverListController.java b/core/java/com/android/internal/app/ResolverListController.java
index 2b59907cf86b..10ac1bc6ac3d 100644
--- a/core/java/com/android/internal/app/ResolverListController.java
+++ b/core/java/com/android/internal/app/ResolverListController.java
@@ -70,7 +70,7 @@ public class ResolverListController {
UserHandle userHandle) {
this(context, pm, targetIntent, referrerPackage, launchedFromUid, userHandle,
new ResolverRankerServiceResolverComparator(
- context, targetIntent, referrerPackage, null));
+ context, targetIntent, referrerPackage, null, null));
}
public ResolverListController(
diff --git a/core/java/com/android/internal/app/ResolverRankerServiceResolverComparator.java b/core/java/com/android/internal/app/ResolverRankerServiceResolverComparator.java
index 286945037ab7..cb946c0dcf99 100644
--- a/core/java/com/android/internal/app/ResolverRankerServiceResolverComparator.java
+++ b/core/java/com/android/internal/app/ResolverRankerServiceResolverComparator.java
@@ -85,7 +85,8 @@ class ResolverRankerServiceResolverComparator extends AbstractResolverComparator
private CountDownLatch mConnectSignal;
public ResolverRankerServiceResolverComparator(Context context, Intent intent,
- String referrerPackage, AfterCompute afterCompute) {
+ String referrerPackage, AfterCompute afterCompute,
+ ChooserActivityLogger chooserActivityLogger) {
super(context, intent);
mCollator = Collator.getInstance(context.getResources().getConfiguration().locale);
mReferrerPackage = referrerPackage;
@@ -97,6 +98,7 @@ class ResolverRankerServiceResolverComparator extends AbstractResolverComparator
mAction = intent.getAction();
mRankerServiceName = new ComponentName(mContext, this.getClass());
setCallBack(afterCompute);
+ setChooserActivityLogger(chooserActivityLogger);
}
@Override