Merge commit 'refs/changes/98/2553198/2' of sso://googleplex-android/platform/packages/apps/Launcher3 into am-948a617f-f892-4399-bd5c-3dd472692cca
Change-Id: I4b54791fcaaf09a9aad6774d19645e7d7793c75d
This commit is contained in:
commit
d3e669b9ae
|
@ -3049,7 +3049,6 @@ public class Launcher extends BaseActivity
|
|||
List<ComponentKey> apps = mLauncherCallbacks.getPredictedApps();
|
||||
if (apps != null) {
|
||||
mAppsView.setPredictedApps(apps);
|
||||
getUserEventDispatcher().setPredictedApps(apps);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -359,7 +359,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
|
|||
|
||||
@Override
|
||||
public void fillInLogContainerData(View v, ItemInfo info, Target target, Target targetParent) {
|
||||
targetParent.containerType = mAppsRecyclerView.getContainerType(v);
|
||||
// This is filled in {@link AllAppsRecyclerView}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -30,19 +30,22 @@ import android.view.View;
|
|||
import com.android.launcher3.BaseRecyclerView;
|
||||
import com.android.launcher3.BubbleTextView;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.ItemInfo;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.anim.SpringAnimationHandler;
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.graphics.DrawableFactory;
|
||||
import com.android.launcher3.logging.UserEventDispatcher.LogContainerProvider;
|
||||
import com.android.launcher3.touch.SwipeDetector;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A RecyclerView with custom fast scroll support for the all apps view.
|
||||
*/
|
||||
public class AllAppsRecyclerView extends BaseRecyclerView {
|
||||
public class AllAppsRecyclerView extends BaseRecyclerView implements LogContainerProvider {
|
||||
|
||||
private AlphabeticalAppsList mApps;
|
||||
private AllAppsFastScrollHelper mFastScrollHelper;
|
||||
|
@ -232,9 +235,10 @@ public class AllAppsRecyclerView extends BaseRecyclerView {
|
|||
updateEmptySearchBackgroundBounds();
|
||||
}
|
||||
|
||||
public int getContainerType(View v) {
|
||||
@Override
|
||||
public void fillInLogContainerData(View v, ItemInfo info, Target target, Target targetParent) {
|
||||
if (mApps.hasFilter()) {
|
||||
return ContainerType.SEARCHRESULT;
|
||||
targetParent.containerType = ContainerType.SEARCHRESULT;
|
||||
} else {
|
||||
if (v instanceof BubbleTextView) {
|
||||
BubbleTextView icon = (BubbleTextView) v;
|
||||
|
@ -243,11 +247,13 @@ public class AllAppsRecyclerView extends BaseRecyclerView {
|
|||
List<AlphabeticalAppsList.AdapterItem> items = mApps.getAdapterItems();
|
||||
AlphabeticalAppsList.AdapterItem item = items.get(position);
|
||||
if (item.viewType == AllAppsGridAdapter.VIEW_TYPE_PREDICTION_ICON) {
|
||||
return ContainerType.PREDICTION;
|
||||
targetParent.containerType = ContainerType.PREDICTION;
|
||||
target.predictedRank = item.rowAppIndex;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ContainerType.ALLAPPS;
|
||||
targetParent.containerType = ContainerType.ALLAPPS;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -36,10 +36,8 @@ import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
|
|||
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.LauncherEvent;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
|
||||
import com.android.launcher3.util.ComponentKey;
|
||||
import com.android.launcher3.util.LogConfig;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -128,9 +126,6 @@ public class UserEventDispatcher {
|
|||
private boolean mIsInLandscapeMode;
|
||||
private String mUuidStr;
|
||||
|
||||
// Used for filling in predictedRank on {@link Target}s.
|
||||
private List<ComponentKey> mPredictedApps;
|
||||
|
||||
// APP_ICON SHORTCUT WIDGET
|
||||
// --------------------------------------------------------------
|
||||
// packageNameHash required optional required
|
||||
|
@ -138,32 +133,11 @@ public class UserEventDispatcher {
|
|||
// intentHash required
|
||||
// --------------------------------------------------------------
|
||||
|
||||
protected LauncherEvent createLauncherEvent(View v, int intentHashCode, ComponentName cn) {
|
||||
LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.TAP),
|
||||
newItemTarget(v), newTarget(Target.Type.CONTAINER));
|
||||
|
||||
// TODO: make idx percolate up the view hierarchy if needed.
|
||||
int idx = 0;
|
||||
if (fillInLogContainerData(event, v)) {
|
||||
ItemInfo itemInfo = (ItemInfo) v.getTag();
|
||||
event.srcTarget[idx].intentHash = intentHashCode;
|
||||
if (cn != null) {
|
||||
event.srcTarget[idx].packageNameHash = (mUuidStr + cn.getPackageName()).hashCode();
|
||||
event.srcTarget[idx].componentHash = (mUuidStr + cn.flattenToString()).hashCode();
|
||||
if (mPredictedApps != null) {
|
||||
event.srcTarget[idx].predictedRank = mPredictedApps.indexOf(
|
||||
new ComponentKey(cn, itemInfo.user));
|
||||
}
|
||||
}
|
||||
}
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fills in the container data on the given event if the given view is not null.
|
||||
* @return whether container data was added.
|
||||
*/
|
||||
private boolean fillInLogContainerData(LauncherEvent event, @Nullable View v) {
|
||||
protected boolean fillInLogContainerData(LauncherEvent event, @Nullable View v) {
|
||||
// Fill in grid(x,y), pageIndex of the child and container type of the parent
|
||||
LogContainerProvider provider = getLaunchProviderRecursive(v);
|
||||
if (v == null || !(v.getTag() instanceof ItemInfo) || provider == null) {
|
||||
|
@ -175,20 +149,31 @@ public class UserEventDispatcher {
|
|||
}
|
||||
|
||||
public void logAppLaunch(View v, Intent intent) {
|
||||
LauncherEvent ev = createLauncherEvent(v, intent.hashCode(), intent.getComponent());
|
||||
if (ev == null) {
|
||||
return;
|
||||
LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.TAP),
|
||||
newItemTarget(v), newTarget(Target.Type.CONTAINER));
|
||||
|
||||
if (fillInLogContainerData(event, v)) {
|
||||
fillIntentInfo(event.srcTarget[0], intent);
|
||||
}
|
||||
dispatchUserEvent(event, intent);
|
||||
}
|
||||
|
||||
protected void fillIntentInfo(Target target, Intent intent) {
|
||||
target.intentHash = intent.hashCode();
|
||||
ComponentName cn = intent.getComponent();
|
||||
if (cn != null) {
|
||||
target.packageNameHash = (mUuidStr + cn.getPackageName()).hashCode();
|
||||
target.componentHash = (mUuidStr + cn.flattenToString()).hashCode();
|
||||
}
|
||||
dispatchUserEvent(ev, intent);
|
||||
}
|
||||
|
||||
public void logNotificationLaunch(View v, PendingIntent intent) {
|
||||
ComponentName dummyComponent = new ComponentName(intent.getCreatorPackage(), "--dummy--");
|
||||
LauncherEvent ev = createLauncherEvent(v, intent.hashCode(), dummyComponent);
|
||||
if (ev == null) {
|
||||
return;
|
||||
LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.TAP),
|
||||
newItemTarget(v), newTarget(Target.Type.CONTAINER));
|
||||
if (fillInLogContainerData(event, v)) {
|
||||
event.srcTarget[0].packageNameHash = (mUuidStr + intent.getCreatorPackage()).hashCode();
|
||||
}
|
||||
dispatchUserEvent(ev, null);
|
||||
dispatchUserEvent(event, null);
|
||||
}
|
||||
|
||||
public void logActionCommand(int command, int containerType) {
|
||||
|
@ -273,10 +258,6 @@ public class UserEventDispatcher {
|
|||
resetElapsedContainerMillis();
|
||||
}
|
||||
|
||||
public void setPredictedApps(List<ComponentKey> predictedApps) {
|
||||
mPredictedApps = predictedApps;
|
||||
}
|
||||
|
||||
/* Currently we are only interested in whether this event happens or not and don't
|
||||
* care about which screen moves to where. */
|
||||
public void logOverviewReorder() {
|
||||
|
@ -348,7 +329,10 @@ public class UserEventDispatcher {
|
|||
}
|
||||
|
||||
private static String getTargetsStr(Target[] targets) {
|
||||
return "child:" + LoggerUtils.getTargetStr(targets[0]) +
|
||||
(targets.length > 1 ? "\tparent:" + LoggerUtils.getTargetStr(targets[1]) : "");
|
||||
String result = "child:" + LoggerUtils.getTargetStr(targets[0]);
|
||||
for (int i = 1; i < targets.length; i++) {
|
||||
result += "\tparent:" + LoggerUtils.getTargetStr(targets[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue