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

Commit e5f8b74f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Log RecyclerView click position"

parents 08dba172 68276397
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -32,5 +32,5 @@ public interface ContextualCardFeatureProvider {
            List<ContextualCard> hiddenCards);

    /** When user clicks toggle/title area of a contextual card. */
    void logContextualCardClick(ContextualCard card, int row, int tapTarget);
    void logContextualCardClick(ContextualCard card, int sliceRow, int tapTarget, int uiPosition);
}
+5 −1
Original line number Diff line number Diff line
@@ -63,6 +63,9 @@ public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureP
    // contextual card tap target
    private static final String EXTRA_CONTEXTUALCARD_TAP_TARGET = "target";

    // contextual card ui position
    private static final String EXTRA_CONTEXTUALCARD_UI_POSTITION = "ui_position";

    // contextual homepage display latency
    private static final String EXTRA_LATENCY = "latency";

@@ -122,7 +125,7 @@ public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureP

    @Override
    public void logContextualCardClick(ContextualCard card, int row,
            int actionType) {
            int actionType, int uiPosition) {
        final Intent intent = new Intent();
        intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_CLICK);
        intent.putExtra(EXTRA_CONTEXTUALCARD_NAME, card.getName());
@@ -130,6 +133,7 @@ public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureP
        intent.putExtra(EXTRA_CONTEXTUALCARD_SCORE, card.getRankingScore());
        intent.putExtra(EXTRA_CONTEXTUALCARD_ROW, row);
        intent.putExtra(EXTRA_CONTEXTUALCARD_TAP_TARGET, actionTypeToTapTarget(actionType));
        intent.putExtra(EXTRA_CONTEXTUALCARD_UI_POSTITION, uiPosition);
        sendBroadcast(intent);
    }

+1 −4
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life
    private final Context mContext;
    private final LifecycleOwner mLifecycleOwner;
    private final ControllerRendererPool mControllerRendererPool;
    private final Set<ContextualCard> mCardSet;
    private final SliceDeferredSetupCardRendererHelper mDeferredSetupCardHelper;
    private final SliceFullCardRendererHelper mFullCardHelper;
    private final SliceHalfCardRendererHelper mHalfCardHelper;
@@ -75,7 +74,6 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life
        mLifecycleOwner = lifecycleOwner;
        mSliceLiveDataMap = new ArrayMap<>();
        mControllerRendererPool = controllerRendererPool;
        mCardSet = new ArraySet<>();
        mFlippedCardSet = new ArraySet<>();
        mLifecycleOwner.getLifecycle().addObserver(this);
        mFullCardHelper = new SliceFullCardRendererHelper(context);
@@ -110,7 +108,6 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life
            sliceLiveData = SliceLiveData.fromUri(mContext, uri);
            mSliceLiveDataMap.put(uri, sliceLiveData);
        }
        mCardSet.add(card);

        sliceLiveData.removeObservers(mLifecycleOwner);
        sliceLiveData.observe(mLifecycleOwner, slice -> {
@@ -129,7 +126,7 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life
                    mHalfCardHelper.bindView(holder, card, slice);
                    break;
                default:
                    mFullCardHelper.bindView(holder, card, slice, mCardSet);
                    mFullCardHelper.bindView(holder, card, slice);
            }
        });

+1 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ class SliceDeferredSetupCardRendererHelper {
            final ContextualCardFeatureProvider contextualCardFeatureProvider =
                    FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider(mContext);
            contextualCardFeatureProvider.logContextualCardClick(card, 0 /* row */,
                    EventInfo.ACTION_TYPE_CONTENT);
                    EventInfo.ACTION_TYPE_CONTENT, view.getAdapterPosition());
        });
    }

+11 −24
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.homepage.contextualcards.slices;

import android.content.Context;
import android.util.Log;
import android.view.View;

import androidx.annotation.NonNull;
@@ -36,13 +37,11 @@ import java.util.Set;
/**
 * Card renderer helper for {@link ContextualCard} built as slice full card.
 */
class SliceFullCardRendererHelper implements SliceView.OnSliceActionListener {
class SliceFullCardRendererHelper {
    private static final String TAG = "SliceFCRendererHelper";

    private final Context mContext;

    private Set<ContextualCard> mCardSet;

    SliceFullCardRendererHelper(Context context) {
        mContext = context;
    }
@@ -51,17 +50,22 @@ class SliceFullCardRendererHelper implements SliceView.OnSliceActionListener {
        return new SliceViewHolder(view);
    }

    void bindView(RecyclerView.ViewHolder holder, ContextualCard card, Slice slice,
            Set<ContextualCard> cardSet) {
    void bindView(RecyclerView.ViewHolder holder, ContextualCard card, Slice slice) {
        final SliceViewHolder cardHolder = (SliceViewHolder) holder;
        cardHolder.sliceView.setScrollable(false);
        cardHolder.sliceView.setTag(card.getSliceUri());
        //TODO(b/114009676): We will soon have a field to decide what slice mode we should set.
        cardHolder.sliceView.setMode(SliceView.MODE_LARGE);
        cardHolder.sliceView.setSlice(slice);
        mCardSet = cardSet;
        // Set this listener so we can log the interaction users make on the slice
        cardHolder.sliceView.setOnSliceActionListener(this);
        cardHolder.sliceView.setOnSliceActionListener(
                (eventInfo, sliceItem) -> {
                    final ContextualCardFeatureProvider contextualCardFeatureProvider =
                            FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider(
                                    mContext);
                    contextualCardFeatureProvider.logContextualCardClick(card, eventInfo.rowIndex,
                            eventInfo.actionType, cardHolder.getAdapterPosition());
                });

        // Customize slice view for Settings
        cardHolder.sliceView.showTitleItems(true);
@@ -71,23 +75,6 @@ class SliceFullCardRendererHelper implements SliceView.OnSliceActionListener {
        }
    }

    @Override
    public void onSliceAction(@NonNull EventInfo eventInfo, @NonNull SliceItem sliceItem) {
        // sliceItem.getSlice().getUri() is like
        // content://android.settings.slices/action/wifi/_gen/0/_gen/0
        // contextualCard.getSliceUri() is prefix of sliceItem.getSlice().getUri()
        final ContextualCardFeatureProvider contextualCardFeatureProvider =
                FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider(mContext);
        for (ContextualCard card : mCardSet) {
            if (sliceItem.getSlice().getUri().toString().startsWith(
                    card.getSliceUri().toString())) {
                contextualCardFeatureProvider.logContextualCardClick(card, eventInfo.rowIndex,
                        eventInfo.actionType);
                break;
            }
        }
    }

    static class SliceViewHolder extends RecyclerView.ViewHolder {
        public final SliceView sliceView;

Loading