Loading AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -139,6 +139,11 @@ android:authorities="com.android.documentsui.lastAccessed" android:exported="false"/> <provider android:name=".picker.PickCountRecordProvider" android:authorities="com.android.documentsui.pickCountRecord" android:exported="false"/> <provider android:name=".archives.ArchivesProvider" android:authorities="com.android.documentsui.archives" Loading src/com/android/documentsui/BaseActivity.java +21 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Checkable; import android.widget.TextView; import androidx.annotation.CallSuper; Loading Loading @@ -63,6 +64,7 @@ import com.android.documentsui.prefs.Preferences; import com.android.documentsui.prefs.PreferencesMonitor; import com.android.documentsui.prefs.ScopedPreferences; import com.android.documentsui.queries.CommandInterceptor; import com.android.documentsui.queries.SearchChipData; import com.android.documentsui.queries.SearchViewManager; import com.android.documentsui.queries.SearchViewManager.SearchManagerListener; import com.android.documentsui.roots.ProvidersCache; Loading @@ -73,6 +75,7 @@ import com.android.documentsui.sorting.SortController; import com.android.documentsui.sorting.SortModel; import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.chip.Chip; import java.util.ArrayList; import java.util.Date; Loading Loading @@ -166,6 +169,14 @@ public abstract class BaseActivity Metrics.logUserAction(MetricConsts.USER_ACTION_SEARCH); } if (mSearchManager.isSearching()) { Metrics.logSearchMode(query != null, mSearchManager.hasCheckedChip()); if (mInjector.pickResult != null) { mInjector.pickResult.increaseActionCount(); } } mInjector.actions.loadDocumentsForCurrentStack(); } Loading @@ -179,6 +190,16 @@ public abstract class BaseActivity public void onSearchViewChanged(boolean opened) { mNavigator.update(); } @Override public void onSearchChipStateChanged(View v) { final Checkable chip = (Checkable) v; if (chip.isChecked()) { final SearchChipData item = (SearchChipData) v.getTag(); Metrics.logUserAction(MetricConsts.USER_ACTION_SEARCH_CHIP); Metrics.logSearchType(item.getChipType()); } } }; // "Commands" are meta input for controlling system behavior. Loading src/com/android/documentsui/Injector.java +3 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import com.android.documentsui.base.Features; import com.android.documentsui.base.Lookup; import com.android.documentsui.base.RootInfo; import com.android.documentsui.dirlist.AppsRowManager; import com.android.documentsui.picker.PickResult; import com.android.documentsui.prefs.ScopedPreferences; import com.android.documentsui.queries.SearchViewManager; import com.android.documentsui.ui.DialogController; Loading Loading @@ -59,6 +60,8 @@ public class Injector<T extends ActionHandler> { public SearchViewManager searchManager; public AppsRowManager appsRowManager; public PickResult pickResult; public final DebugHelper debugHelper; @ContentScoped Loading src/com/android/documentsui/MetricConsts.java +36 −0 Original line number Diff line number Diff line Loading @@ -354,4 +354,40 @@ public class MetricConsts { @Retention(RetentionPolicy.SOURCE) public @interface InvalidScopedAccess { } // Codes representing different search types public static final int TYPE_UNKNOWN = 0; public static final int TYPE_CHIP_IMAGES = 1; public static final int TYPE_CHIP_AUDIOS = 2; public static final int TYPE_CHIP_VIDEOS = 3; public static final int TYPE_CHIP_DOCS = 4; public static final int TYPE_SEARCH_HISTORY = 5; public static final int TYPE_SEARCH_STRING = 6; @IntDef(flag = true, value = { TYPE_UNKNOWN, TYPE_CHIP_IMAGES, TYPE_CHIP_AUDIOS, TYPE_CHIP_VIDEOS, TYPE_CHIP_DOCS, TYPE_SEARCH_HISTORY, TYPE_SEARCH_STRING }) @Retention(RetentionPolicy.SOURCE) public @interface SearchType {} // Codes representing different search types public static final int SEARCH_UNKNOWN = 0; public static final int SEARCH_KEYWORD = 1; public static final int SEARCH_CHIPS = 2; public static final int SEARCH_KEYWORD_N_CHIPS = 3; @IntDef(flag = true, value = { SEARCH_UNKNOWN, SEARCH_KEYWORD, SEARCH_CHIPS, SEARCH_KEYWORD_N_CHIPS }) @Retention(RetentionPolicy.SOURCE) public @interface SearchMode {} } No newline at end of file src/com/android/documentsui/Metrics.java +37 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.documentsui.base.Providers; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.State; import com.android.documentsui.files.LauncherActivity; import com.android.documentsui.picker.PickResult; import com.android.documentsui.roots.ProvidersAccess; import com.android.documentsui.services.FileOperationService; import com.android.documentsui.services.FileOperationService.OpType; Loading Loading @@ -287,6 +288,30 @@ public final class Metrics { DocumentsStatsLog.logUserAction(userAction); } public static void logPickerLaunchedFrom(String packgeName) { DocumentsStatsLog.logPickerLaunchedFrom(packgeName); } public static void logSearchType(int searchType) { // TODO:waiting for search history implementation, it's one of the search types. DocumentsStatsLog.logSearchType(searchType); } public static void logSearchMode(boolean isKeywordSearch, boolean isChipsSearch) { DocumentsStatsLog.logSearchMode(getSearchMode(isKeywordSearch, isChipsSearch)); } public static void logPickResult(PickResult result) { DocumentsStatsLog.logFilePick( result.getActionCount(), result.getDuration(), result.getFileCount(), result.isSearching(), result.getRoot(), result.getMimeType(), result.getRepeatedPickTimes()); } private static void logStorageFileOperationFailure( Context context, @MetricConsts.SubFileOp int subFileOp, Uri docUri) { assert(Providers.AUTHORITY_STORAGE.equals(docUri.getAuthority())); Loading Loading @@ -504,6 +529,18 @@ public final class Metrics { } } private static int getSearchMode(boolean isKeyword, boolean isChip) { if (isKeyword && isChip) { return MetricConsts.SEARCH_KEYWORD_N_CHIPS; } else if (isKeyword) { return MetricConsts.SEARCH_KEYWORD; } else if (isChip) { return MetricConsts.SEARCH_CHIPS; } else { return MetricConsts.SEARCH_UNKNOWN; } } /** * Count the given src documents and provide a tally of how many come from the same provider as * the dst document (if a dst is provided), how many come from system providers, and how many Loading Loading
AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -139,6 +139,11 @@ android:authorities="com.android.documentsui.lastAccessed" android:exported="false"/> <provider android:name=".picker.PickCountRecordProvider" android:authorities="com.android.documentsui.pickCountRecord" android:exported="false"/> <provider android:name=".archives.ArchivesProvider" android:authorities="com.android.documentsui.archives" Loading
src/com/android/documentsui/BaseActivity.java +21 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Checkable; import android.widget.TextView; import androidx.annotation.CallSuper; Loading Loading @@ -63,6 +64,7 @@ import com.android.documentsui.prefs.Preferences; import com.android.documentsui.prefs.PreferencesMonitor; import com.android.documentsui.prefs.ScopedPreferences; import com.android.documentsui.queries.CommandInterceptor; import com.android.documentsui.queries.SearchChipData; import com.android.documentsui.queries.SearchViewManager; import com.android.documentsui.queries.SearchViewManager.SearchManagerListener; import com.android.documentsui.roots.ProvidersCache; Loading @@ -73,6 +75,7 @@ import com.android.documentsui.sorting.SortController; import com.android.documentsui.sorting.SortModel; import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.chip.Chip; import java.util.ArrayList; import java.util.Date; Loading Loading @@ -166,6 +169,14 @@ public abstract class BaseActivity Metrics.logUserAction(MetricConsts.USER_ACTION_SEARCH); } if (mSearchManager.isSearching()) { Metrics.logSearchMode(query != null, mSearchManager.hasCheckedChip()); if (mInjector.pickResult != null) { mInjector.pickResult.increaseActionCount(); } } mInjector.actions.loadDocumentsForCurrentStack(); } Loading @@ -179,6 +190,16 @@ public abstract class BaseActivity public void onSearchViewChanged(boolean opened) { mNavigator.update(); } @Override public void onSearchChipStateChanged(View v) { final Checkable chip = (Checkable) v; if (chip.isChecked()) { final SearchChipData item = (SearchChipData) v.getTag(); Metrics.logUserAction(MetricConsts.USER_ACTION_SEARCH_CHIP); Metrics.logSearchType(item.getChipType()); } } }; // "Commands" are meta input for controlling system behavior. Loading
src/com/android/documentsui/Injector.java +3 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import com.android.documentsui.base.Features; import com.android.documentsui.base.Lookup; import com.android.documentsui.base.RootInfo; import com.android.documentsui.dirlist.AppsRowManager; import com.android.documentsui.picker.PickResult; import com.android.documentsui.prefs.ScopedPreferences; import com.android.documentsui.queries.SearchViewManager; import com.android.documentsui.ui.DialogController; Loading Loading @@ -59,6 +60,8 @@ public class Injector<T extends ActionHandler> { public SearchViewManager searchManager; public AppsRowManager appsRowManager; public PickResult pickResult; public final DebugHelper debugHelper; @ContentScoped Loading
src/com/android/documentsui/MetricConsts.java +36 −0 Original line number Diff line number Diff line Loading @@ -354,4 +354,40 @@ public class MetricConsts { @Retention(RetentionPolicy.SOURCE) public @interface InvalidScopedAccess { } // Codes representing different search types public static final int TYPE_UNKNOWN = 0; public static final int TYPE_CHIP_IMAGES = 1; public static final int TYPE_CHIP_AUDIOS = 2; public static final int TYPE_CHIP_VIDEOS = 3; public static final int TYPE_CHIP_DOCS = 4; public static final int TYPE_SEARCH_HISTORY = 5; public static final int TYPE_SEARCH_STRING = 6; @IntDef(flag = true, value = { TYPE_UNKNOWN, TYPE_CHIP_IMAGES, TYPE_CHIP_AUDIOS, TYPE_CHIP_VIDEOS, TYPE_CHIP_DOCS, TYPE_SEARCH_HISTORY, TYPE_SEARCH_STRING }) @Retention(RetentionPolicy.SOURCE) public @interface SearchType {} // Codes representing different search types public static final int SEARCH_UNKNOWN = 0; public static final int SEARCH_KEYWORD = 1; public static final int SEARCH_CHIPS = 2; public static final int SEARCH_KEYWORD_N_CHIPS = 3; @IntDef(flag = true, value = { SEARCH_UNKNOWN, SEARCH_KEYWORD, SEARCH_CHIPS, SEARCH_KEYWORD_N_CHIPS }) @Retention(RetentionPolicy.SOURCE) public @interface SearchMode {} } No newline at end of file
src/com/android/documentsui/Metrics.java +37 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.documentsui.base.Providers; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.State; import com.android.documentsui.files.LauncherActivity; import com.android.documentsui.picker.PickResult; import com.android.documentsui.roots.ProvidersAccess; import com.android.documentsui.services.FileOperationService; import com.android.documentsui.services.FileOperationService.OpType; Loading Loading @@ -287,6 +288,30 @@ public final class Metrics { DocumentsStatsLog.logUserAction(userAction); } public static void logPickerLaunchedFrom(String packgeName) { DocumentsStatsLog.logPickerLaunchedFrom(packgeName); } public static void logSearchType(int searchType) { // TODO:waiting for search history implementation, it's one of the search types. DocumentsStatsLog.logSearchType(searchType); } public static void logSearchMode(boolean isKeywordSearch, boolean isChipsSearch) { DocumentsStatsLog.logSearchMode(getSearchMode(isKeywordSearch, isChipsSearch)); } public static void logPickResult(PickResult result) { DocumentsStatsLog.logFilePick( result.getActionCount(), result.getDuration(), result.getFileCount(), result.isSearching(), result.getRoot(), result.getMimeType(), result.getRepeatedPickTimes()); } private static void logStorageFileOperationFailure( Context context, @MetricConsts.SubFileOp int subFileOp, Uri docUri) { assert(Providers.AUTHORITY_STORAGE.equals(docUri.getAuthority())); Loading Loading @@ -504,6 +529,18 @@ public final class Metrics { } } private static int getSearchMode(boolean isKeyword, boolean isChip) { if (isKeyword && isChip) { return MetricConsts.SEARCH_KEYWORD_N_CHIPS; } else if (isKeyword) { return MetricConsts.SEARCH_KEYWORD; } else if (isChip) { return MetricConsts.SEARCH_CHIPS; } else { return MetricConsts.SEARCH_UNKNOWN; } } /** * Count the given src documents and provide a tally of how many come from the same provider as * the dst document (if a dst is provided), how many come from system providers, and how many Loading