Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d11ad51d authored by Chris Wren's avatar Chris Wren Committed by Android (Google) Code Review
Browse files

Merge "add logging to quick settings tiles" into mnc-dev

parents 39fce1d2 457a21cd
Loading
Loading
Loading
Loading
+20 −1
Original line number Original line Diff line number Diff line
@@ -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.
@@ -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) {
@@ -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, "");
    }
    }
+18 −0
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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();
        }
        }
    }
    }


@@ -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;
@@ -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);
+19 −1
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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();
@@ -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
@@ -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
    }
    }
@@ -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);
+7 −0
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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);
@@ -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) {
+12 −0
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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);
    }
    }
@@ -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) {
@@ -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