Loading packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/DetailAdapter.java +15 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import android.content.Intent; import android.view.View; import android.view.ViewGroup; import com.android.internal.logging.UiEventLogger; import com.android.systemui.plugins.annotations.ProvidesInterface; @ProvidesInterface(version = DetailAdapter.VERSION) Loading @@ -44,4 +45,18 @@ public interface DetailAdapter { default boolean hasHeader() { return true; } default UiEventLogger.UiEventEnum openDetailEvent() { return INVALID; } default UiEventLogger.UiEventEnum closeDetailEvent() { return INVALID; } default UiEventLogger.UiEventEnum moreSettingsEvent() { return INVALID; } UiEventLogger.UiEventEnum INVALID = () -> 0; } packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +13 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.drawable.Drawable; import android.metrics.LogMaker; import android.service.quicksettings.Tile; import com.android.internal.logging.InstanceId; import com.android.systemui.plugins.annotations.DependsOn; import com.android.systemui.plugins.annotations.ProvidesInterface; import com.android.systemui.plugins.qs.QSTile.Callback; Loading Loading @@ -81,6 +82,18 @@ public interface QSTile { return logMaker; } /** * Return a string to be used to identify the tile in UiEvents. */ default String getMetricsSpec() { return getClass().getSimpleName(); } /** * Return an {@link InstanceId} to be used to identify the tile in UiEvents. */ InstanceId getInstanceId(); @ProvidesInterface(version = Callback.VERSION) public interface Callback { public static final int VERSION = 1; Loading packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java +9 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import android.view.LayoutInflater; import android.view.WindowManager; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLoggerImpl; import com.android.internal.util.NotificationMessagingUtil; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.ViewMediatorCallback; Loading Loading @@ -218,4 +220,11 @@ public class DependencyProvider { public Choreographer providesChoreographer() { return Choreographer.getInstance(); } /** Provides an instance of {@link com.android.internal.logging.UiEventLogger} */ @Singleton @Provides static UiEventLogger provideUiEventLogger() { return new UiEventLoggerImpl(); } } packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt +12 −1 Original line number Diff line number Diff line Loading @@ -20,10 +20,14 @@ import android.content.Context import android.content.res.Configuration import android.view.View import android.view.ViewGroup import com.android.internal.logging.UiEventLogger import com.android.systemui.R import com.android.systemui.qs.TileLayout.exactly class DoubleLineTileLayout(context: Context) : ViewGroup(context), QSPanel.QSTileLayout { class DoubleLineTileLayout( context: Context, private val uiEventLogger: UiEventLogger ) : ViewGroup(context), QSPanel.QSTileLayout { companion object { private const val NUM_LINES = 2 Loading Loading @@ -86,6 +90,13 @@ class DoubleLineTileLayout(context: Context) : ViewGroup(context), QSPanel.QSTil for (record in mRecords) { record.tile.setListening(this, listening) } if (listening) { for (i in 0 until numVisibleTiles) { val tile = mRecords[i].tile uiEventLogger.logWithInstanceId( QSEvent.QQS_TILE_VISIBLE, 0, tile.metricsSpec, tile.instanceId) } } } override fun getNumVisibleTiles() = tilesToShow Loading packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +19 −2 Original line number Diff line number Diff line Loading @@ -22,7 +22,9 @@ import android.widget.Scroller; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSPanel.QSTileLayout; import com.android.systemui.qs.QSPanel.TileRecord; Loading Loading @@ -63,7 +65,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { private int mLayoutDirection; private int mHorizontalClipBound; private final Rect mClippingRect; private int mLastMaxHeight = -1; private final UiEventLogger mUiEventLogger = QSEvents.INSTANCE.getQsUiEventsLogger(); public PagedTileLayout(Context context, AttributeSet attrs) { super(context, attrs); Loading @@ -75,6 +77,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { mLayoutDirection = getLayoutDirection(); mClippingRect = new Rect(); } private int mLastMaxHeight = -1; public void saveInstanceState(Bundle outState) { outState.putInt(CURRENT_PAGE, getCurrentItem()); Loading Loading @@ -126,6 +129,15 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { return page; } // This will dump to the ui log all the tiles that are visible in this page private void logVisibleTiles(TilePage page) { for (int i = 0; i < page.mRecords.size(); i++) { QSTile t = page.mRecords.get(i).tile; mUiEventLogger.logWithInstanceId(QSEvent.QS_TILE_VISIBLE, 0, t.getMetricsSpec(), t.getInstanceId()); } } @Override public void setListening(boolean listening) { if (mListening == listening) return; Loading Loading @@ -218,7 +230,11 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); int currentItem = getCurrentPageNumber(); for (int i = 0; i < mPages.size(); i++) { mPages.get(i).setSelected(i == currentItem ? selected : false); TilePage page = mPages.get(i); page.setSelected(i == currentItem ? selected : false); if (page.isSelected()) { logVisibleTiles(page); } } setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); } Loading Loading @@ -419,6 +435,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { mPageListener.onPageChanged(isLayoutRtl() ? position == mPages.size() - 1 : position == 0); } } @Override Loading Loading
packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/DetailAdapter.java +15 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import android.content.Intent; import android.view.View; import android.view.ViewGroup; import com.android.internal.logging.UiEventLogger; import com.android.systemui.plugins.annotations.ProvidesInterface; @ProvidesInterface(version = DetailAdapter.VERSION) Loading @@ -44,4 +45,18 @@ public interface DetailAdapter { default boolean hasHeader() { return true; } default UiEventLogger.UiEventEnum openDetailEvent() { return INVALID; } default UiEventLogger.UiEventEnum closeDetailEvent() { return INVALID; } default UiEventLogger.UiEventEnum moreSettingsEvent() { return INVALID; } UiEventLogger.UiEventEnum INVALID = () -> 0; }
packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +13 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.graphics.drawable.Drawable; import android.metrics.LogMaker; import android.service.quicksettings.Tile; import com.android.internal.logging.InstanceId; import com.android.systemui.plugins.annotations.DependsOn; import com.android.systemui.plugins.annotations.ProvidesInterface; import com.android.systemui.plugins.qs.QSTile.Callback; Loading Loading @@ -81,6 +82,18 @@ public interface QSTile { return logMaker; } /** * Return a string to be used to identify the tile in UiEvents. */ default String getMetricsSpec() { return getClass().getSimpleName(); } /** * Return an {@link InstanceId} to be used to identify the tile in UiEvents. */ InstanceId getInstanceId(); @ProvidesInterface(version = Callback.VERSION) public interface Callback { public static final int VERSION = 1; Loading
packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java +9 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import android.view.LayoutInflater; import android.view.WindowManager; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLoggerImpl; import com.android.internal.util.NotificationMessagingUtil; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.ViewMediatorCallback; Loading Loading @@ -218,4 +220,11 @@ public class DependencyProvider { public Choreographer providesChoreographer() { return Choreographer.getInstance(); } /** Provides an instance of {@link com.android.internal.logging.UiEventLogger} */ @Singleton @Provides static UiEventLogger provideUiEventLogger() { return new UiEventLoggerImpl(); } }
packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt +12 −1 Original line number Diff line number Diff line Loading @@ -20,10 +20,14 @@ import android.content.Context import android.content.res.Configuration import android.view.View import android.view.ViewGroup import com.android.internal.logging.UiEventLogger import com.android.systemui.R import com.android.systemui.qs.TileLayout.exactly class DoubleLineTileLayout(context: Context) : ViewGroup(context), QSPanel.QSTileLayout { class DoubleLineTileLayout( context: Context, private val uiEventLogger: UiEventLogger ) : ViewGroup(context), QSPanel.QSTileLayout { companion object { private const val NUM_LINES = 2 Loading Loading @@ -86,6 +90,13 @@ class DoubleLineTileLayout(context: Context) : ViewGroup(context), QSPanel.QSTil for (record in mRecords) { record.tile.setListening(this, listening) } if (listening) { for (i in 0 until numVisibleTiles) { val tile = mRecords[i].tile uiEventLogger.logWithInstanceId( QSEvent.QQS_TILE_VISIBLE, 0, tile.metricsSpec, tile.instanceId) } } } override fun getNumVisibleTiles() = tilesToShow Loading
packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +19 −2 Original line number Diff line number Diff line Loading @@ -22,7 +22,9 @@ import android.widget.Scroller; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSPanel.QSTileLayout; import com.android.systemui.qs.QSPanel.TileRecord; Loading Loading @@ -63,7 +65,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { private int mLayoutDirection; private int mHorizontalClipBound; private final Rect mClippingRect; private int mLastMaxHeight = -1; private final UiEventLogger mUiEventLogger = QSEvents.INSTANCE.getQsUiEventsLogger(); public PagedTileLayout(Context context, AttributeSet attrs) { super(context, attrs); Loading @@ -75,6 +77,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { mLayoutDirection = getLayoutDirection(); mClippingRect = new Rect(); } private int mLastMaxHeight = -1; public void saveInstanceState(Bundle outState) { outState.putInt(CURRENT_PAGE, getCurrentItem()); Loading Loading @@ -126,6 +129,15 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { return page; } // This will dump to the ui log all the tiles that are visible in this page private void logVisibleTiles(TilePage page) { for (int i = 0; i < page.mRecords.size(); i++) { QSTile t = page.mRecords.get(i).tile; mUiEventLogger.logWithInstanceId(QSEvent.QS_TILE_VISIBLE, 0, t.getMetricsSpec(), t.getInstanceId()); } } @Override public void setListening(boolean listening) { if (mListening == listening) return; Loading Loading @@ -218,7 +230,11 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); int currentItem = getCurrentPageNumber(); for (int i = 0; i < mPages.size(); i++) { mPages.get(i).setSelected(i == currentItem ? selected : false); TilePage page = mPages.get(i); page.setSelected(i == currentItem ? selected : false); if (page.isSelected()) { logVisibleTiles(page); } } setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); } Loading Loading @@ -419,6 +435,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { mPageListener.onPageChanged(isLayoutRtl() ? position == mPages.size() - 1 : position == 0); } } @Override Loading