Merge "Add metrics for menu actions" into nyc-dev

This commit is contained in:
Aga Wronska
2016-04-01 19:50:07 +00:00
committed by Android (Google) Code Review
5 changed files with 146 additions and 19 deletions

View File

@@ -272,6 +272,7 @@ public abstract class BaseActivity extends Activity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Metrics.logMenuAction(this, item.getItemId());
switch (item.getItemId()) {
case android.R.id.home:

View File

@@ -212,19 +212,22 @@ public class FilesActivity extends BaseActivity {
case R.id.menu_create_dir:
assert(canCreateDirectory());
showCreateDirectoryDialog();
return true;
break;
case R.id.menu_new_window:
createNewWindow();
return true;
break;
case R.id.menu_paste_from_clipboard:
DirectoryFragment dir = getDirectoryFragment();
if (dir != null) {
dir.pasteFromClipboard();
}
return true;
break;
default:
return super.onOptionsItemSelected(item);
}
return super.onOptionsItemSelected(item);
Metrics.logMenuAction(this, item.getItemId());
return true;
}
private void createNewWindow() {

View File

@@ -69,6 +69,7 @@ public final class Metrics {
private static final String COUNT_DRAWER_OPENED = "docsui_drawer_opened";
private static final String COUNT_DRAG_N_DROP = "docsui_drag_n_drop";
private static final String COUNT_SEARCH = "docsui_search";
private static final String COUNT_MENU_ACTION = "docsui_menu_action";
// Indices for bucketing roots in the roots histogram. "Other" is the catch-all index for any
// root that is not explicitly recognized by the Metrics code (see {@link
@@ -198,8 +199,71 @@ public final class Metrics {
@Retention(RetentionPolicy.SOURCE)
public @interface MetricsOpType {}
// Codes representing different launch actions. These are used for bucketing stats in the
// COUNT_LAUNCH_ACTION histogram.
// Codes representing different provider types. Used for sorting file operations when logging.
private static final int PROVIDER_INTRA = 0;
private static final int PROVIDER_SYSTEM = 1;
private static final int PROVIDER_EXTERNAL = 2;
@IntDef(flag = false, value = {
PROVIDER_INTRA,
PROVIDER_SYSTEM,
PROVIDER_EXTERNAL
})
@Retention(RetentionPolicy.SOURCE)
public @interface Provider {}
// Codes representing different menu actions. These are used for bucketing stats in the
// COUNT_MENU_ACTION histogram.
// Both regular toolbar menu and action mode menu operations are included.
// Do not change or rearrange these values, that will break historical data. Only add to the
// list.
// Do not use negative numbers or zero; clearcut only handles positive integers.
private static final int ACTION_MENU_OTHER = 1;
private static final int ACTION_MENU_GRID = 2;
private static final int ACTION_MENU_LIST = 3;
private static final int ACTION_MENU_SORT = 4;
private static final int ACTION_MENU_SORT_NAME = 5;
private static final int ACTION_MENU_SORT_DATE = 6;
private static final int ACTION_MENU_SORT_SIZE = 7;
private static final int ACTION_MENU_SEARCH = 8;
private static final int ACTION_MENU_SHOW_SIZE = 9;
private static final int ACTION_MENU_SETTINGS = 10;
private static final int ACTION_MENU_COPY_TO = 11;
private static final int ACTION_MENU_MOVE_TO = 12;
private static final int ACTION_MENU_DELETE = 13;
private static final int ACTION_MENU_RENAME = 14;
private static final int ACTION_MENU_CREATE_DIR = 15;
private static final int ACTION_MENU_SELECT_ALL = 16;
private static final int ACTION_MENU_SHARE = 17;
private static final int ACTION_MENU_OPEN = 18;
private static final int ACTION_MENU_ADVANCED = 19;
@IntDef(flag = false, value = {
ACTION_MENU_OTHER,
ACTION_MENU_GRID,
ACTION_MENU_LIST,
ACTION_MENU_SORT,
ACTION_MENU_SORT_NAME,
ACTION_MENU_SORT_DATE,
ACTION_MENU_SORT_SIZE,
ACTION_MENU_SHOW_SIZE,
ACTION_MENU_SETTINGS,
ACTION_MENU_COPY_TO,
ACTION_MENU_MOVE_TO,
ACTION_MENU_DELETE,
ACTION_MENU_RENAME,
ACTION_MENU_CREATE_DIR,
ACTION_MENU_SELECT_ALL,
ACTION_MENU_SHARE,
ACTION_MENU_OPEN,
ACTION_MENU_ADVANCED
})
@Retention(RetentionPolicy.SOURCE)
public @interface MenuAction {}
// Codes representing different menu actions. These are used for bucketing stats in the
// COUNT_MENU_ACTION histogram.
// Do not change or rearrange these values, that will break historical data. Only add to the
// list.
// Do not use negative numbers or zero; clearcut only handles positive integers.
@@ -225,19 +289,6 @@ public final class Metrics {
@Retention(RetentionPolicy.SOURCE)
public @interface MetricsAction {}
// Codes representing different provider types. Used for sorting file operations when logging.
private static final int PROVIDER_INTRA = 0;
private static final int PROVIDER_SYSTEM = 1;
private static final int PROVIDER_EXTERNAL = 2;
@IntDef(flag = true, value = {
PROVIDER_INTRA,
PROVIDER_SYSTEM,
PROVIDER_EXTERNAL
})
@Retention(RetentionPolicy.SOURCE)
public @interface Provider {}
// Codes representing different actions to open the drawer. They are used for bucketing stats in
// the COUNT_DRAWER_OPENED histogram.
// Do not change or rearrange these values, that will break historical data. Only add to the
@@ -588,6 +639,74 @@ public final class Metrics {
}
}
/**
* Logs menu action that was selected by user.
* @param context
* @param id Resource id of the menu item.
*/
public static void logMenuAction(Context context, int id) {
@MenuAction int menuAction = ACTION_MENU_OTHER;
switch (id) {
case R.id.menu_grid:
menuAction = ACTION_MENU_GRID;
break;
case R.id.menu_list:
menuAction = ACTION_MENU_LIST;
break;
case R.id.menu_sort:
menuAction = ACTION_MENU_SORT;
break;
case R.id.menu_sort_name:
menuAction = ACTION_MENU_SORT_NAME;
break;
case R.id.menu_sort_date:
menuAction = ACTION_MENU_SORT_DATE;
break;
case R.id.menu_sort_size:
menuAction = ACTION_MENU_SORT_SIZE;
break;
case R.id.menu_search:
menuAction = ACTION_MENU_SEARCH;
break;
case R.id.menu_file_size:
menuAction = ACTION_MENU_SHOW_SIZE;
break;
case R.id.menu_settings:
menuAction = ACTION_MENU_SETTINGS;
break;
case R.id.menu_copy_to:
menuAction = ACTION_MENU_COPY_TO;
break;
case R.id.menu_move_to:
menuAction = ACTION_MENU_MOVE_TO;
break;
case R.id.menu_delete:
menuAction = ACTION_MENU_DELETE;
break;
case R.id.menu_rename:
menuAction = ACTION_MENU_RENAME;
break;
case R.id.menu_create_dir:
menuAction = ACTION_MENU_CREATE_DIR;
break;
case R.id.menu_select_all:
menuAction = ACTION_MENU_SELECT_ALL;
break;
case R.id.menu_share:
menuAction = ACTION_MENU_SHARE;
break;
case R.id.menu_open:
menuAction = ACTION_MENU_OPEN;
break;
case R.id.menu_advanced:
menuAction = ACTION_MENU_ADVANCED;
break;
default:
break;
}
logHistogram(context, COUNT_MENU_ACTION, menuAction);
}
/**
* Internal method for making a MetricsLogger.count call. Increments the given counter by 1.
*

View File

@@ -185,6 +185,9 @@ final class SearchViewManager implements
if(mFullBar) {
Menu menu = mActionBar.getMenu();
menu.setGroupVisible(R.id.group_hide_when_searching, false);
} else {
// If search in full-bar mode it will be logged in FilesActivity#onOptionsItemSelected
Metrics.logMenuAction(mActionBar.getContext(), R.id.menu_search);
}
}

View File

@@ -595,6 +595,7 @@ public class DirectoryFragment extends Fragment
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
Metrics.logMenuAction(getContext(), item.getItemId());
Selection selection = mSelectionManager.getSelection(new Selection());