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

Commit 214e6b29 authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Android (Google) Code Review
Browse files

Merge "Added atoms for logging"

parents 5292c488 bfd6d85d
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -249,6 +249,7 @@ message Atom {
        TouchGestureClassified touch_gesture_classified = 177;
        HiddenApiUsed hidden_api_used = 178 [(allow_from_any_uid) = true];
        StyleUIChanged style_ui_changed = 179;
        PrivacyIndicatorsInteracted privacy_indicators_interacted = 180;
    }

    // Pulled events will start at field 10000.
@@ -3395,6 +3396,32 @@ message HiddenApiUsed {
    optional bool access_denied = 4;
}

/**
 * Logs user interaction with the Privacy Indicators added in Q. In particular:
 * - When user sees privacy chip
 * - When user clicks privacy chip
 * - How does the user exit the Privacy Dialog
 * Logged from:
 *   packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyDialog.kt
 *   packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
 */
message PrivacyIndicatorsInteracted {

    enum Type {
        UNKNOWN = 0;
        CHIP_VIEWED = 1;
        CHIP_CLICKED = 2;
        DIALOG_PRIVACY_SETTINGS = 3;
        DIALOG_DISMISS = 4;
        DIALOG_LINE_ITEM = 5;
    }

    optional Type type = 1 [(state_field_option).option = EXCLUSIVE];

    // Used if the type is LINE_ITEM
    optional string package_name = 2;
}

//////////////////////////////////////////////////////////////////////
// Pulled atoms below this line //
//////////////////////////////////////////////////////////////////////
+13 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.res.ColorStateList
import android.os.UserHandle
import android.provider.Settings
import android.util.IconDrawableFactory
import android.util.StatsLog
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
@@ -55,7 +56,13 @@ class OngoingPrivacyDialog constructor(

    fun createDialog(): Dialog {
        val builder = AlertDialog.Builder(context).apply {
            setPositiveButton(R.string.ongoing_privacy_dialog_ok, null)
            setPositiveButton(R.string.ongoing_privacy_dialog_ok,
                    object : DialogInterface.OnClickListener {
                override fun onClick(dialog: DialogInterface?, which: Int) {
                    StatsLog.write(StatsLog.PRIVACY_INDICATORS_INTERACTED,
                            StatsLog.PRIVACY_INDICATORS_INTERACTED__TYPE__DIALOG_DISMISS)
                }
            })
            setNeutralButton(R.string.ongoing_privacy_dialog_open_settings,
                    object : DialogInterface.OnClickListener {
                        val intent = Intent(Settings.ACTION_PRIVACY_SETTINGS).putExtra(
@@ -63,6 +70,8 @@ class OngoingPrivacyDialog constructor(

                        @Suppress("DEPRECATION")
                        override fun onClick(dialog: DialogInterface?, which: Int) {
                            StatsLog.write(StatsLog.PRIVACY_INDICATORS_INTERACTED, StatsLog
                                    .PRIVACY_INDICATORS_INTERACTED__TYPE__DIALOG_PRIVACY_SETTINGS)
                            Dependency.get(ActivityStarter::class.java)
                                    .postStartActivityDismissingKeyguard(intent, 0)
                        }
@@ -136,6 +145,9 @@ class OngoingPrivacyDialog constructor(
                        .putExtra(Intent.EXTRA_PACKAGE_NAME, app.packageName)
                        .putExtra(Intent.EXTRA_USER, UserHandle.getUserHandleForUid(app.uid))
                override fun onClick(v: View?) {
                    StatsLog.write(StatsLog.PRIVACY_INDICATORS_INTERACTED,
                            StatsLog.PRIVACY_INDICATORS_INTERACTED__TYPE__DIALOG_LINE_ITEM,
                            app.packageName)
                    Dependency.get(ActivityStarter::class.java)
                            .postStartActivityDismissingKeyguard(intent, 0)
                    dismissDialog?.invoke()
+13 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.text.format.DateUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Pair;
import android.util.StatsLog;
import android.view.DisplayCutout;
import android.view.View;
import android.view.WindowInsets;
@@ -156,6 +157,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
        }
    };
    private boolean mHasTopCutout = false;
    private boolean mPrivacyChipLogged = false;

    /**
     * Runnable for automatically fading out the long press tooltip (as if it were animating away).
@@ -210,6 +212,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
        mPrivacyChip.setOnClickListener(this);
        mCarrierGroup = findViewById(R.id.carrier_group);


        updateResources();

        Rect tintArea = new Rect(0, 0, 0, 0);
@@ -265,6 +268,13 @@ public class QuickStatusBarHeader extends RelativeLayout implements
    private void setChipVisibility(boolean chipVisible) {
        if (chipVisible) {
            mPrivacyChip.setVisibility(View.VISIBLE);
            // Makes sure that the chip is logged as viewed at most once each time QS is opened
            // mListening makes sure that the callback didn't return after the user closed QS
            if (!mPrivacyChipLogged && mListening) {
                mPrivacyChipLogged = true;
                StatsLog.write(StatsLog.PRIVACY_INDICATORS_INTERACTED,
                        StatsLog.PRIVACY_INDICATORS_INTERACTED__TYPE__CHIP_VIEWED);
            }
        } else {
            mPrivacyChip.setVisibility(View.GONE);
        }
@@ -534,6 +544,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
            mAlarmController.removeCallback(this);
            mPrivacyItemController.removeCallback(mPICCallback);
            mContext.unregisterReceiver(mRingerReceiver);
            mPrivacyChipLogged = false;
        }
    }

@@ -547,6 +558,8 @@ public class QuickStatusBarHeader extends RelativeLayout implements
            PrivacyDialogBuilder builder = mPrivacyChip.getBuilder();
            if (builder.getAppsAndTypes().size() == 0) return;
            Handler mUiHandler = new Handler(Looper.getMainLooper());
            StatsLog.write(StatsLog.PRIVACY_INDICATORS_INTERACTED,
                    StatsLog.PRIVACY_INDICATORS_INTERACTED__TYPE__CHIP_CLICKED);
            mUiHandler.post(() -> {
                Dialog mDialog = new OngoingPrivacyDialog(mContext, builder).createDialog();
                SystemUIDialog.setShowForAllUsers(mDialog, false);