Add sliceUri in broadcast intent
Bug: 119748954 Test: robolectric Change-Id: I24eb8d5a274be60ba3395d05d2b306e185e7dcab
This commit is contained in:
@@ -16,24 +16,21 @@
|
|||||||
|
|
||||||
package com.android.settings.homepage.contextualcards;
|
package com.android.settings.homepage.contextualcards;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/** Feature provider for the contextual card feature. */
|
/** Feature provider for the contextual card feature. */
|
||||||
public interface ContextualCardFeatureProvider {
|
public interface ContextualCardFeatureProvider {
|
||||||
|
|
||||||
/** Homepage displays. */
|
/** Homepage displays. */
|
||||||
void logHomepageDisplay(Context context, long latency);
|
void logHomepageDisplay(long latency);
|
||||||
|
|
||||||
/** When user clicks dismiss in contextual card */
|
/** When user clicks dismiss in contextual card */
|
||||||
void logContextualCardDismiss(Context context, ContextualCard card);
|
void logContextualCardDismiss(ContextualCard card);
|
||||||
|
|
||||||
/** After ContextualCardManager decides which cards will be displayed/hidden */
|
/** After ContextualCardManager decides which cards will be displayed/hidden */
|
||||||
void logContextualCardDisplay(Context context, List<ContextualCard> showedCards,
|
void logContextualCardDisplay(List<ContextualCard> showedCards,
|
||||||
List<ContextualCard> hiddenCards);
|
List<ContextualCard> hiddenCards);
|
||||||
|
|
||||||
/** When user clicks toggle/title area of a contextual card. */
|
/** When user clicks toggle/title area of a contextual card. */
|
||||||
void logContextualCardClick(Context context, ContextualCard card, int row,
|
void logContextualCardClick(ContextualCard card, int row, int tapTarget);
|
||||||
int tapTarget);
|
|
||||||
}
|
}
|
||||||
|
@@ -51,6 +51,9 @@ public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureP
|
|||||||
// contextual card name
|
// contextual card name
|
||||||
private static final String EXTRA_CONTEXTUALCARD_NAME = "name";
|
private static final String EXTRA_CONTEXTUALCARD_NAME = "name";
|
||||||
|
|
||||||
|
// contextual card uri
|
||||||
|
private static final String EXTRA_CONTEXTUALCARD_URI = "uri";
|
||||||
|
|
||||||
// contextual card score
|
// contextual card score
|
||||||
private static final String EXTRA_CONTEXTUALCARD_SCORE = "score";
|
private static final String EXTRA_CONTEXTUALCARD_SCORE = "score";
|
||||||
|
|
||||||
@@ -84,51 +87,59 @@ public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureP
|
|||||||
// Click slider
|
// Click slider
|
||||||
private static final int TARGET_SLIDER = 3;
|
private static final int TARGET_SLIDER = 3;
|
||||||
|
|
||||||
|
private final Context mContext;
|
||||||
|
|
||||||
|
public ContextualCardFeatureProviderImpl(Context context) {
|
||||||
|
mContext = context;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void logHomepageDisplay(Context context, long latency) {
|
public void logHomepageDisplay(long latency) {
|
||||||
sendBroadcast(context, new Intent()
|
sendBroadcast(new Intent()
|
||||||
.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_HOME_SHOW)
|
.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_HOME_SHOW)
|
||||||
.putExtra(EXTRA_LATENCY, latency));
|
.putExtra(EXTRA_LATENCY, latency));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void logContextualCardDismiss(Context context, ContextualCard card) {
|
public void logContextualCardDismiss(ContextualCard card) {
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_DISMISS);
|
intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_DISMISS);
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_NAME, card.getName());
|
intent.putExtra(EXTRA_CONTEXTUALCARD_NAME, card.getName());
|
||||||
|
intent.putExtra(EXTRA_CONTEXTUALCARD_URI, card.getSliceUri().toString());
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_SCORE, card.getRankingScore());
|
intent.putExtra(EXTRA_CONTEXTUALCARD_SCORE, card.getRankingScore());
|
||||||
sendBroadcast(context, intent);
|
sendBroadcast(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void logContextualCardDisplay(Context context, List<ContextualCard> visibleCards,
|
public void logContextualCardDisplay(List<ContextualCard> visibleCards,
|
||||||
List<ContextualCard> hiddenCards) {
|
List<ContextualCard> hiddenCards) {
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_SHOW);
|
intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_SHOW);
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_VISIBLE, serialize(visibleCards));
|
intent.putExtra(EXTRA_CONTEXTUALCARD_VISIBLE, serialize(visibleCards));
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_HIDDEN, serialize(hiddenCards));
|
intent.putExtra(EXTRA_CONTEXTUALCARD_HIDDEN, serialize(hiddenCards));
|
||||||
sendBroadcast(context, intent);
|
sendBroadcast(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void logContextualCardClick(Context context, ContextualCard card, int row,
|
public void logContextualCardClick(ContextualCard card, int row,
|
||||||
int actionType) {
|
int actionType) {
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_CLICK);
|
intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_CLICK);
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_NAME, card.getName());
|
intent.putExtra(EXTRA_CONTEXTUALCARD_NAME, card.getName());
|
||||||
|
intent.putExtra(EXTRA_CONTEXTUALCARD_URI, card.getSliceUri().toString());
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_SCORE, card.getRankingScore());
|
intent.putExtra(EXTRA_CONTEXTUALCARD_SCORE, card.getRankingScore());
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_ROW, row);
|
intent.putExtra(EXTRA_CONTEXTUALCARD_ROW, row);
|
||||||
intent.putExtra(EXTRA_CONTEXTUALCARD_TAP_TARGET, actionTypeToTapTarget(actionType));
|
intent.putExtra(EXTRA_CONTEXTUALCARD_TAP_TARGET, actionTypeToTapTarget(actionType));
|
||||||
sendBroadcast(context, intent);
|
sendBroadcast(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void sendBroadcast(final Context context, final Intent intent) {
|
void sendBroadcast(final Intent intent) {
|
||||||
intent.setPackage(context.getString(R.string.config_settingsintelligence_package_name));
|
intent.setPackage(mContext.getString(R.string.config_settingsintelligence_package_name));
|
||||||
final String action = context.getString(R.string.config_settingsintelligence_log_action);
|
final String action = mContext.getString(R.string.config_settingsintelligence_log_action);
|
||||||
if (!TextUtils.isEmpty(action)) {
|
if (!TextUtils.isEmpty(action)) {
|
||||||
intent.setAction(action);
|
intent.setAction(action);
|
||||||
context.sendBroadcastAsUser(intent, UserHandle.ALL);
|
mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -149,10 +149,10 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
|||||||
// Two large cards
|
// Two large cards
|
||||||
return visibleCards;
|
return visibleCards;
|
||||||
} finally {
|
} finally {
|
||||||
|
//TODO(b/121196921): Should not call this if user click dismiss
|
||||||
final ContextualCardFeatureProvider contextualCardFeatureProvider =
|
final ContextualCardFeatureProvider contextualCardFeatureProvider =
|
||||||
FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider();
|
FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider(mContext);
|
||||||
contextualCardFeatureProvider.logContextualCardDisplay(mContext, visibleCards,
|
contextualCardFeatureProvider.logContextualCardDisplay(visibleCards, hiddenCards);
|
||||||
hiddenCards);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -201,8 +201,8 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
|
|||||||
.collect(groupingBy(ContextualCard::getCardType)));
|
.collect(groupingBy(ContextualCard::getCardType)));
|
||||||
}
|
}
|
||||||
final long totalTime = System.currentTimeMillis() - mStartTime;
|
final long totalTime = System.currentTimeMillis() - mStartTime;
|
||||||
FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider()
|
FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider(mContext)
|
||||||
.logHomepageDisplay(mContext, totalTime);
|
.logHomepageDisplay(totalTime);
|
||||||
|
|
||||||
mIsFirstLaunch = false;
|
mIsFirstLaunch = false;
|
||||||
}
|
}
|
||||||
|
@@ -70,8 +70,8 @@ public class SliceContextualCardController implements ContextualCardController {
|
|||||||
});
|
});
|
||||||
showFeedbackDialog(card);
|
showFeedbackDialog(card);
|
||||||
final ContextualCardFeatureProvider contextualCardFeatureProvider =
|
final ContextualCardFeatureProvider contextualCardFeatureProvider =
|
||||||
FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider();
|
FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider(mContext);
|
||||||
contextualCardFeatureProvider.logContextualCardDismiss(mContext, card);
|
contextualCardFeatureProvider.logContextualCardDismiss(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -173,8 +173,9 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer,
|
|||||||
if (sliceItem.getSlice().getUri().toString().startsWith(
|
if (sliceItem.getSlice().getUri().toString().startsWith(
|
||||||
card.getSliceUri().toString())) {
|
card.getSliceUri().toString())) {
|
||||||
ContextualCardFeatureProvider contexualCardFeatureProvider =
|
ContextualCardFeatureProvider contexualCardFeatureProvider =
|
||||||
FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider();
|
FeatureFactory.getFactory(mContext)
|
||||||
contexualCardFeatureProvider.logContextualCardClick(mContext, card,
|
.getContextualCardFeatureProvider(mContext);
|
||||||
|
contexualCardFeatureProvider.logContextualCardClick(card,
|
||||||
eventInfo.rowIndex, eventInfo.actionType);
|
eventInfo.rowIndex, eventInfo.actionType);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -110,7 +110,7 @@ public abstract class FeatureFactory {
|
|||||||
|
|
||||||
public abstract PanelFeatureProvider getPanelFeatureProvider();
|
public abstract PanelFeatureProvider getPanelFeatureProvider();
|
||||||
|
|
||||||
public abstract ContextualCardFeatureProvider getContextualCardFeatureProvider();
|
public abstract ContextualCardFeatureProvider getContextualCardFeatureProvider(Context context);
|
||||||
|
|
||||||
public abstract FaceFeatureProvider getFaceFeatureProvider();
|
public abstract FaceFeatureProvider getFaceFeatureProvider();
|
||||||
|
|
||||||
|
@@ -228,9 +228,10 @@ public class FeatureFactoryImpl extends FeatureFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ContextualCardFeatureProvider getContextualCardFeatureProvider() {
|
public ContextualCardFeatureProvider getContextualCardFeatureProvider(Context context) {
|
||||||
if (mContextualCardFeatureProvider == null) {
|
if (mContextualCardFeatureProvider == null) {
|
||||||
mContextualCardFeatureProvider = new ContextualCardFeatureProviderImpl();
|
mContextualCardFeatureProvider = new ContextualCardFeatureProviderImpl(
|
||||||
|
context.getApplicationContext());
|
||||||
}
|
}
|
||||||
return mContextualCardFeatureProvider;
|
return mContextualCardFeatureProvider;
|
||||||
}
|
}
|
||||||
|
@@ -49,13 +49,13 @@ public class ContextualCardFeatureProviderImplTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
mImpl = new ContextualCardFeatureProviderImpl();
|
mImpl = new ContextualCardFeatureProviderImpl(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void sendBroadcast_emptyAction_notSendBroadcast() {
|
public void sendBroadcast_emptyAction_notSendBroadcast() {
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
mImpl.sendBroadcast(mContext, intent);
|
mImpl.sendBroadcast(intent);
|
||||||
|
|
||||||
verify(mContext, never()).sendBroadcastAsUser(intent, UserHandle.ALL);
|
verify(mContext, never()).sendBroadcastAsUser(intent, UserHandle.ALL);
|
||||||
}
|
}
|
||||||
@@ -64,7 +64,7 @@ public class ContextualCardFeatureProviderImplTest {
|
|||||||
@Config(qualifiers = "mcc999")
|
@Config(qualifiers = "mcc999")
|
||||||
public void sendBroadcast_hasAction_sendBroadcast() {
|
public void sendBroadcast_hasAction_sendBroadcast() {
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
mImpl.sendBroadcast(mContext, intent);
|
mImpl.sendBroadcast(intent);
|
||||||
|
|
||||||
verify(mContext).sendBroadcastAsUser(intent, UserHandle.ALL);
|
verify(mContext).sendBroadcastAsUser(intent, UserHandle.ALL);
|
||||||
}
|
}
|
||||||
@@ -72,7 +72,7 @@ public class ContextualCardFeatureProviderImplTest {
|
|||||||
@Test
|
@Test
|
||||||
@Config(qualifiers = "mcc999")
|
@Config(qualifiers = "mcc999")
|
||||||
public void logContextualCardDisplay_hasAction_sendBroadcast() {
|
public void logContextualCardDisplay_hasAction_sendBroadcast() {
|
||||||
mImpl.logContextualCardDisplay(mContext, new ArrayList<>(), new ArrayList<>());
|
mImpl.logContextualCardDisplay(new ArrayList<>(), new ArrayList<>());
|
||||||
|
|
||||||
verify(mContext).sendBroadcastAsUser(any(Intent.class), any());
|
verify(mContext).sendBroadcastAsUser(any(Intent.class), any());
|
||||||
}
|
}
|
||||||
|
@@ -91,8 +91,7 @@ public class SliceContextualCardControllerTest {
|
|||||||
cr.close();
|
cr.close();
|
||||||
|
|
||||||
assertThat(qryDismissed).isEqualTo(1);
|
assertThat(qryDismissed).isEqualTo(1);
|
||||||
verify(mFeatureFactory.mContextualCardFeatureProvider).logContextualCardDismiss(
|
verify(mFeatureFactory.mContextualCardFeatureProvider).logContextualCardDismiss(card);
|
||||||
mContext, card);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -198,8 +198,7 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
return panelFeatureProvider;
|
return panelFeatureProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public ContextualCardFeatureProvider getContextualCardFeatureProvider(Context context) {
|
||||||
public ContextualCardFeatureProvider getContextualCardFeatureProvider() {
|
|
||||||
return mContextualCardFeatureProvider;
|
return mContextualCardFeatureProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user