Loading core/java/com/android/internal/logging/MetricsLogger.java +20 −1 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.internal.logging; import android.content.Context; import android.content.Context; import android.os.Build; import android.os.Build; import android.view.View; /** /** * Log all the things. * Log all the things. Loading @@ -33,6 +34,10 @@ public class MetricsLogger implements MetricsConstants { public static final int ACTION_BAN_APP_NOTES = 146; public static final int ACTION_BAN_APP_NOTES = 146; public static final int NOTIFICATION_ZEN_MODE_EVENT_RULE = 147; public static final int NOTIFICATION_ZEN_MODE_EVENT_RULE = 147; public static final int ACTION_DISMISS_ALL_NOTES = 148; public static final int ACTION_DISMISS_ALL_NOTES = 148; public static final int QS_DND_DETAILS = 149; public static final int QS_BLUETOOTH_DETAILS = 150; public static final int QS_CAST_DETAILS = 151; public static final int QS_WIFI_DETAILS = 152; public static void visible(Context context, int category) throws IllegalArgumentException { public static void visible(Context context, int category) throws IllegalArgumentException { if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) { if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) { Loading @@ -41,13 +46,27 @@ public class MetricsLogger implements MetricsConstants { EventLogTags.writeSysuiViewVisibility(category, 100); EventLogTags.writeSysuiViewVisibility(category, 100); } } public static void hidden(Context context, int category) { public static void hidden(Context context, int category) throws IllegalArgumentException { if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) { if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) { throw new IllegalArgumentException("Must define metric category"); throw new IllegalArgumentException("Must define metric category"); } } EventLogTags.writeSysuiViewVisibility(category, 0); EventLogTags.writeSysuiViewVisibility(category, 0); } } public static void visibility(Context context, int category, boolean visibile) throws IllegalArgumentException { if (visibile) { visible(context, category); } else { hidden(context, category); } } public static void visibility(Context context, int category, int vis) throws IllegalArgumentException { visibility(context, category, vis == View.VISIBLE); } public static void action(Context context, int category) { public static void action(Context context, int category) { action(context, category, ""); action(context, category, ""); } } Loading packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.view.accessibility.AccessibilityEvent; import android.widget.ImageView; import android.widget.ImageView; import android.widget.TextView; import android.widget.TextView; import com.android.internal.logging.MetricsLogger; import com.android.systemui.FontSizeUtils; import com.android.systemui.FontSizeUtils; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.qs.QSTile.DetailAdapter; import com.android.systemui.qs.QSTile.DetailAdapter; Loading Loading @@ -182,8 +183,11 @@ public class QSPanel extends ViewGroup { public void setExpanded(boolean expanded) { public void setExpanded(boolean expanded) { if (mExpanded == expanded) return; if (mExpanded == expanded) return; mExpanded = expanded; mExpanded = expanded; MetricsLogger.visibility(mContext, MetricsLogger.QS_PANEL, mExpanded); if (!mExpanded) { if (!mExpanded) { closeDetail(); closeDetail(); } else { logTiles(); } } } } Loading Loading @@ -365,9 +369,11 @@ public class QSPanel extends ViewGroup { mDetailContent.removeAllViews(); mDetailContent.removeAllViews(); mDetail.bringToFront(); mDetail.bringToFront(); mDetailContent.addView(r.detailView); mDetailContent.addView(r.detailView); MetricsLogger.visible(mContext, detailAdapter.getMetricsCategory()); setDetailRecord(r); setDetailRecord(r); listener = mHideGridContentWhenDone; listener = mHideGridContentWhenDone; } else { } else { MetricsLogger.hidden(mContext, mDetailRecord.detailAdapter.getMetricsCategory()); mClosingDetail = true; mClosingDetail = true; setGridContentVisibility(true); setGridContentVisibility(true); listener = mTeardownDetailWhenDone; listener = mTeardownDetailWhenDone; Loading @@ -387,9 +393,21 @@ public class QSPanel extends ViewGroup { } } } } mBrightnessView.setVisibility(newVis); mBrightnessView.setVisibility(newVis); if (mGridContentVisible != visible) { MetricsLogger.visibility(mContext, MetricsLogger.QS_PANEL, newVis); } mGridContentVisible = visible; mGridContentVisible = visible; } } private void logTiles() { for (int i = 0; i < mRecords.size(); i++) { TileRecord tileRecord = mRecords.get(i); if (tileRecord.tile.getState().visible) { MetricsLogger.visible(mContext, tileRecord.tile.getMetricsCategory()); } } } @Override @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int width = MeasureSpec.getSize(widthMeasureSpec); final int width = MeasureSpec.getSize(widthMeasureSpec); Loading packages/SystemUI/src/com/android/systemui/qs/QSTile.java +19 −1 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.util.SparseArray; import android.view.View; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup; import com.android.internal.logging.MetricsLogger; import com.android.systemui.qs.QSTile.State; import com.android.systemui.qs.QSTile.State; import com.android.systemui.statusbar.policy.BluetoothController; import com.android.systemui.statusbar.policy.BluetoothController; import com.android.systemui.statusbar.policy.CastController; import com.android.systemui.statusbar.policy.CastController; Loading Loading @@ -66,9 +67,17 @@ public abstract class QSTile<TState extends State> implements Listenable { private boolean mAnnounceNextStateChange; private boolean mAnnounceNextStateChange; abstract protected TState newTileState(); abstract protected TState newTileState(); abstract protected void handleClick(); abstract protected void handleUpdateState(TState state, Object arg); abstract protected void handleUpdateState(TState state, Object arg); /** * Declare the category of this tile. * * Categories are defined in {@link com.android.internal.logging.MetricsLogger} * or if there is no relevant existing category you may define one in * {@link com.android.systemui.qs.QSTile}. */ abstract public int getMetricsCategory(); protected QSTile(Host host) { protected QSTile(Host host) { mHost = host; mHost = host; mContext = host.getContext(); mContext = host.getContext(); Loading Loading @@ -97,6 +106,7 @@ public abstract class QSTile<TState extends State> implements Listenable { View createDetailView(Context context, View convertView, ViewGroup parent); View createDetailView(Context context, View convertView, ViewGroup parent); Intent getSettingsIntent(); Intent getSettingsIntent(); void setToggleState(boolean state); void setToggleState(boolean state); int getMetricsCategory(); } } // safe to call from any thread // safe to call from any thread Loading Loading @@ -160,6 +170,10 @@ public abstract class QSTile<TState extends State> implements Listenable { handleRefreshState(null); handleRefreshState(null); } } protected void handleClick() { MetricsLogger.action(mContext, getMetricsCategory(), getMetricsPackage()); }; protected void handleSecondaryClick() { protected void handleSecondaryClick() { // optional // optional } } Loading @@ -168,6 +182,10 @@ public abstract class QSTile<TState extends State> implements Listenable { // optional // optional } } protected String getMetricsPackage() { return ""; } protected void handleRefreshState(Object arg) { protected void handleRefreshState(Object arg) { handleUpdateState(mTmpState, arg); handleUpdateState(mTmpState, arg); final boolean changed = mTmpState.copyTo(mState); final boolean changed = mTmpState.copyTo(mState); Loading packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.provider.Settings.Global; import android.provider.Settings.Global; import com.android.internal.logging.MetricsLogger; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.qs.GlobalSetting; import com.android.systemui.qs.GlobalSetting; import com.android.systemui.qs.QSTile; import com.android.systemui.qs.QSTile; Loading Loading @@ -55,6 +56,7 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> { @Override @Override public void handleClick() { public void handleClick() { super.handleClick(); setEnabled(!mState.value); setEnabled(!mState.value); mEnable.setAllowAnimation(true); mEnable.setAllowAnimation(true); mDisable.setAllowAnimation(true); mDisable.setAllowAnimation(true); Loading Loading @@ -84,6 +86,11 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> { } } } } @Override public int getMetricsCategory() { return MetricsLogger.QS_AIRPLANEMODE; } @Override @Override protected String composeChangeAnnouncement() { protected String composeChangeAnnouncement() { if (mState.value) { if (mState.value) { Loading packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.text.TextUtils; import android.view.View; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup; import com.android.internal.logging.MetricsLogger; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.qs.QSDetailItems; import com.android.systemui.qs.QSDetailItems; Loading Loading @@ -74,6 +75,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { @Override @Override protected void handleClick() { protected void handleClick() { super.handleClick(); final boolean isEnabled = (Boolean)mState.value; final boolean isEnabled = (Boolean)mState.value; mController.setBluetoothEnabled(!isEnabled); mController.setBluetoothEnabled(!isEnabled); } } Loading Loading @@ -131,6 +133,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { state.dualLabelContentDescription = bluetoothName; state.dualLabelContentDescription = bluetoothName; } } @Override public int getMetricsCategory() { return MetricsLogger.QS_BLUETOOTH; } @Override @Override protected String composeChangeAnnouncement() { protected String composeChangeAnnouncement() { if (mState.value) { if (mState.value) { Loading Loading @@ -181,6 +188,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { showDetail(false); showDetail(false); } } @Override public int getMetricsCategory() { return MetricsLogger.QS_BLUETOOTH_DETAILS; } @Override @Override public View createDetailView(Context context, View convertView, ViewGroup parent) { public View createDetailView(Context context, View convertView, ViewGroup parent) { mItems = QSDetailItems.convertOrInflate(context, convertView, parent); mItems = QSDetailItems.convertOrInflate(context, convertView, parent); Loading Loading
core/java/com/android/internal/logging/MetricsLogger.java +20 −1 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.internal.logging; import android.content.Context; import android.content.Context; import android.os.Build; import android.os.Build; import android.view.View; /** /** * Log all the things. * Log all the things. Loading @@ -33,6 +34,10 @@ public class MetricsLogger implements MetricsConstants { public static final int ACTION_BAN_APP_NOTES = 146; public static final int ACTION_BAN_APP_NOTES = 146; public static final int NOTIFICATION_ZEN_MODE_EVENT_RULE = 147; public static final int NOTIFICATION_ZEN_MODE_EVENT_RULE = 147; public static final int ACTION_DISMISS_ALL_NOTES = 148; public static final int ACTION_DISMISS_ALL_NOTES = 148; public static final int QS_DND_DETAILS = 149; public static final int QS_BLUETOOTH_DETAILS = 150; public static final int QS_CAST_DETAILS = 151; public static final int QS_WIFI_DETAILS = 152; public static void visible(Context context, int category) throws IllegalArgumentException { public static void visible(Context context, int category) throws IllegalArgumentException { if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) { if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) { Loading @@ -41,13 +46,27 @@ public class MetricsLogger implements MetricsConstants { EventLogTags.writeSysuiViewVisibility(category, 100); EventLogTags.writeSysuiViewVisibility(category, 100); } } public static void hidden(Context context, int category) { public static void hidden(Context context, int category) throws IllegalArgumentException { if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) { if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) { throw new IllegalArgumentException("Must define metric category"); throw new IllegalArgumentException("Must define metric category"); } } EventLogTags.writeSysuiViewVisibility(category, 0); EventLogTags.writeSysuiViewVisibility(category, 0); } } public static void visibility(Context context, int category, boolean visibile) throws IllegalArgumentException { if (visibile) { visible(context, category); } else { hidden(context, category); } } public static void visibility(Context context, int category, int vis) throws IllegalArgumentException { visibility(context, category, vis == View.VISIBLE); } public static void action(Context context, int category) { public static void action(Context context, int category) { action(context, category, ""); action(context, category, ""); } } Loading
packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.view.accessibility.AccessibilityEvent; import android.widget.ImageView; import android.widget.ImageView; import android.widget.TextView; import android.widget.TextView; import com.android.internal.logging.MetricsLogger; import com.android.systemui.FontSizeUtils; import com.android.systemui.FontSizeUtils; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.qs.QSTile.DetailAdapter; import com.android.systemui.qs.QSTile.DetailAdapter; Loading Loading @@ -182,8 +183,11 @@ public class QSPanel extends ViewGroup { public void setExpanded(boolean expanded) { public void setExpanded(boolean expanded) { if (mExpanded == expanded) return; if (mExpanded == expanded) return; mExpanded = expanded; mExpanded = expanded; MetricsLogger.visibility(mContext, MetricsLogger.QS_PANEL, mExpanded); if (!mExpanded) { if (!mExpanded) { closeDetail(); closeDetail(); } else { logTiles(); } } } } Loading Loading @@ -365,9 +369,11 @@ public class QSPanel extends ViewGroup { mDetailContent.removeAllViews(); mDetailContent.removeAllViews(); mDetail.bringToFront(); mDetail.bringToFront(); mDetailContent.addView(r.detailView); mDetailContent.addView(r.detailView); MetricsLogger.visible(mContext, detailAdapter.getMetricsCategory()); setDetailRecord(r); setDetailRecord(r); listener = mHideGridContentWhenDone; listener = mHideGridContentWhenDone; } else { } else { MetricsLogger.hidden(mContext, mDetailRecord.detailAdapter.getMetricsCategory()); mClosingDetail = true; mClosingDetail = true; setGridContentVisibility(true); setGridContentVisibility(true); listener = mTeardownDetailWhenDone; listener = mTeardownDetailWhenDone; Loading @@ -387,9 +393,21 @@ public class QSPanel extends ViewGroup { } } } } mBrightnessView.setVisibility(newVis); mBrightnessView.setVisibility(newVis); if (mGridContentVisible != visible) { MetricsLogger.visibility(mContext, MetricsLogger.QS_PANEL, newVis); } mGridContentVisible = visible; mGridContentVisible = visible; } } private void logTiles() { for (int i = 0; i < mRecords.size(); i++) { TileRecord tileRecord = mRecords.get(i); if (tileRecord.tile.getState().visible) { MetricsLogger.visible(mContext, tileRecord.tile.getMetricsCategory()); } } } @Override @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int width = MeasureSpec.getSize(widthMeasureSpec); final int width = MeasureSpec.getSize(widthMeasureSpec); Loading
packages/SystemUI/src/com/android/systemui/qs/QSTile.java +19 −1 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.util.SparseArray; import android.view.View; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup; import com.android.internal.logging.MetricsLogger; import com.android.systemui.qs.QSTile.State; import com.android.systemui.qs.QSTile.State; import com.android.systemui.statusbar.policy.BluetoothController; import com.android.systemui.statusbar.policy.BluetoothController; import com.android.systemui.statusbar.policy.CastController; import com.android.systemui.statusbar.policy.CastController; Loading Loading @@ -66,9 +67,17 @@ public abstract class QSTile<TState extends State> implements Listenable { private boolean mAnnounceNextStateChange; private boolean mAnnounceNextStateChange; abstract protected TState newTileState(); abstract protected TState newTileState(); abstract protected void handleClick(); abstract protected void handleUpdateState(TState state, Object arg); abstract protected void handleUpdateState(TState state, Object arg); /** * Declare the category of this tile. * * Categories are defined in {@link com.android.internal.logging.MetricsLogger} * or if there is no relevant existing category you may define one in * {@link com.android.systemui.qs.QSTile}. */ abstract public int getMetricsCategory(); protected QSTile(Host host) { protected QSTile(Host host) { mHost = host; mHost = host; mContext = host.getContext(); mContext = host.getContext(); Loading Loading @@ -97,6 +106,7 @@ public abstract class QSTile<TState extends State> implements Listenable { View createDetailView(Context context, View convertView, ViewGroup parent); View createDetailView(Context context, View convertView, ViewGroup parent); Intent getSettingsIntent(); Intent getSettingsIntent(); void setToggleState(boolean state); void setToggleState(boolean state); int getMetricsCategory(); } } // safe to call from any thread // safe to call from any thread Loading Loading @@ -160,6 +170,10 @@ public abstract class QSTile<TState extends State> implements Listenable { handleRefreshState(null); handleRefreshState(null); } } protected void handleClick() { MetricsLogger.action(mContext, getMetricsCategory(), getMetricsPackage()); }; protected void handleSecondaryClick() { protected void handleSecondaryClick() { // optional // optional } } Loading @@ -168,6 +182,10 @@ public abstract class QSTile<TState extends State> implements Listenable { // optional // optional } } protected String getMetricsPackage() { return ""; } protected void handleRefreshState(Object arg) { protected void handleRefreshState(Object arg) { handleUpdateState(mTmpState, arg); handleUpdateState(mTmpState, arg); final boolean changed = mTmpState.copyTo(mState); final boolean changed = mTmpState.copyTo(mState); Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.ConnectivityManager; import android.provider.Settings.Global; import android.provider.Settings.Global; import com.android.internal.logging.MetricsLogger; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.qs.GlobalSetting; import com.android.systemui.qs.GlobalSetting; import com.android.systemui.qs.QSTile; import com.android.systemui.qs.QSTile; Loading Loading @@ -55,6 +56,7 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> { @Override @Override public void handleClick() { public void handleClick() { super.handleClick(); setEnabled(!mState.value); setEnabled(!mState.value); mEnable.setAllowAnimation(true); mEnable.setAllowAnimation(true); mDisable.setAllowAnimation(true); mDisable.setAllowAnimation(true); Loading Loading @@ -84,6 +86,11 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> { } } } } @Override public int getMetricsCategory() { return MetricsLogger.QS_AIRPLANEMODE; } @Override @Override protected String composeChangeAnnouncement() { protected String composeChangeAnnouncement() { if (mState.value) { if (mState.value) { Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.text.TextUtils; import android.view.View; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup; import com.android.internal.logging.MetricsLogger; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.qs.QSDetailItems; import com.android.systemui.qs.QSDetailItems; Loading Loading @@ -74,6 +75,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { @Override @Override protected void handleClick() { protected void handleClick() { super.handleClick(); final boolean isEnabled = (Boolean)mState.value; final boolean isEnabled = (Boolean)mState.value; mController.setBluetoothEnabled(!isEnabled); mController.setBluetoothEnabled(!isEnabled); } } Loading Loading @@ -131,6 +133,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { state.dualLabelContentDescription = bluetoothName; state.dualLabelContentDescription = bluetoothName; } } @Override public int getMetricsCategory() { return MetricsLogger.QS_BLUETOOTH; } @Override @Override protected String composeChangeAnnouncement() { protected String composeChangeAnnouncement() { if (mState.value) { if (mState.value) { Loading Loading @@ -181,6 +188,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { showDetail(false); showDetail(false); } } @Override public int getMetricsCategory() { return MetricsLogger.QS_BLUETOOTH_DETAILS; } @Override @Override public View createDetailView(Context context, View convertView, ViewGroup parent) { public View createDetailView(Context context, View convertView, ViewGroup parent) { mItems = QSDetailItems.convertOrInflate(context, convertView, parent); mItems = QSDetailItems.convertOrInflate(context, convertView, parent); Loading