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

Commit 1b61d8de authored by Chris Wren's avatar Chris Wren Committed by Android Git Automerger
Browse files

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

* commit 'd11ad51d':
  add logging to quick settings tiles
parents 0729908a d11ad51d
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.internal.logging;

import android.content.Context;
import android.os.Build;
import android.view.View;

/**
 * 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 NOTIFICATION_ZEN_MODE_EVENT_RULE = 147;
    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 {
        if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) {
@@ -41,13 +46,27 @@ public class MetricsLogger implements MetricsConstants {
        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) {
            throw new IllegalArgumentException("Must define metric category");
        }
        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) {
        action(context, category, "");
    }
+18 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import android.widget.TextView;

import com.android.internal.logging.MetricsLogger;
import com.android.systemui.FontSizeUtils;
import com.android.systemui.R;
import com.android.systemui.qs.QSTile.DetailAdapter;
@@ -182,8 +183,11 @@ public class QSPanel extends ViewGroup {
    public void setExpanded(boolean expanded) {
        if (mExpanded == expanded) return;
        mExpanded = expanded;
        MetricsLogger.visibility(mContext, MetricsLogger.QS_PANEL, mExpanded);
        if (!mExpanded) {
            closeDetail();
        } else {
            logTiles();
        }
    }

@@ -365,9 +369,11 @@ public class QSPanel extends ViewGroup {
            mDetailContent.removeAllViews();
            mDetail.bringToFront();
            mDetailContent.addView(r.detailView);
            MetricsLogger.visible(mContext, detailAdapter.getMetricsCategory());
            setDetailRecord(r);
            listener = mHideGridContentWhenDone;
        } else {
            MetricsLogger.hidden(mContext, mDetailRecord.detailAdapter.getMetricsCategory());
            mClosingDetail = true;
            setGridContentVisibility(true);
            listener = mTeardownDetailWhenDone;
@@ -387,9 +393,21 @@ public class QSPanel extends ViewGroup {
            }
        }
        mBrightnessView.setVisibility(newVis);
        if (mGridContentVisible != visible) {
            MetricsLogger.visibility(mContext, MetricsLogger.QS_PANEL, newVis);
        }
        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
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        final int width = MeasureSpec.getSize(widthMeasureSpec);
+19 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;

import com.android.internal.logging.MetricsLogger;
import com.android.systemui.qs.QSTile.State;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.CastController;
@@ -66,9 +67,17 @@ public abstract class QSTile<TState extends State> implements Listenable {
    private boolean mAnnounceNextStateChange;

    abstract protected TState newTileState();
    abstract protected void handleClick();
    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) {
        mHost = host;
        mContext = host.getContext();
@@ -97,6 +106,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
        View createDetailView(Context context, View convertView, ViewGroup parent);
        Intent getSettingsIntent();
        void setToggleState(boolean state);
        int getMetricsCategory();
    }

    // safe to call from any thread
@@ -160,6 +170,10 @@ public abstract class QSTile<TState extends State> implements Listenable {
        handleRefreshState(null);
    }

    protected void handleClick() {
        MetricsLogger.action(mContext, getMetricsCategory(), getMetricsPackage());
    };

    protected void handleSecondaryClick() {
        // optional
    }
@@ -168,6 +182,10 @@ public abstract class QSTile<TState extends State> implements Listenable {
        // optional
    }

    protected String getMetricsPackage() {
        return "";
    }

    protected void handleRefreshState(Object arg) {
        handleUpdateState(mTmpState, arg);
        final boolean changed = mTmpState.copyTo(mState);
+7 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.provider.Settings.Global;

import com.android.internal.logging.MetricsLogger;
import com.android.systemui.R;
import com.android.systemui.qs.GlobalSetting;
import com.android.systemui.qs.QSTile;
@@ -55,6 +56,7 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> {

    @Override
    public void handleClick() {
        super.handleClick();
        setEnabled(!mState.value);
        mEnable.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
    protected String composeChangeAnnouncement() {
        if (mState.value) {
+12 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;

import com.android.internal.logging.MetricsLogger;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.systemui.R;
import com.android.systemui.qs.QSDetailItems;
@@ -74,6 +75,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {

    @Override
    protected void handleClick() {
        super.handleClick();
        final boolean isEnabled = (Boolean)mState.value;
        mController.setBluetoothEnabled(!isEnabled);
    }
@@ -131,6 +133,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
        state.dualLabelContentDescription = bluetoothName;
    }

    @Override
    public int getMetricsCategory() {
        return MetricsLogger.QS_BLUETOOTH;
    }

    @Override
    protected String composeChangeAnnouncement() {
        if (mState.value) {
@@ -181,6 +188,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
            showDetail(false);
        }

        @Override
        public int getMetricsCategory() {
            return MetricsLogger.QS_BLUETOOTH_DETAILS;
        }

        @Override
        public View createDetailView(Context context, View convertView, ViewGroup parent) {
            mItems = QSDetailItems.convertOrInflate(context, convertView, parent);
Loading