Updates folder creation logging.
After ag/11020901, folder creation process will not open gboard and hence drag and drop events resulting in folder creation should send additional folder creation event.
Fixes NPE with ItemInfo.java.
Bug: 153768241
Change-Id: I52c996a62dee52bf07feef4252aadc2a28c79752
(cherry picked from commit 9a3671e80ebee3d6733e5a1e89b024228e1bfe71)
diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java
index 12d88df..c287190 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -332,7 +332,7 @@
.map(info -> info.suggestedFolderNames)
.map(folderNames -> (FolderNameInfo[]) folderNames
.getParcelableArrayExtra(FolderInfo.EXTRA_FOLDER_SUGGESTIONS))
- .ifPresent(nameInfos -> showLabelSuggestions(nameInfos));
+ .ifPresent(this::showLabelSuggestions);
}
mFolderName.setHint("");
mIsEditingName = true;
@@ -1450,7 +1450,7 @@
if (hasFocus) {
startEditingFolderName();
} else {
- logEditFolderLabel();
+ logCurrentFolderLabelState();
mFolderName.dispatchBackKey();
}
}
@@ -1649,7 +1649,7 @@
return mContent;
}
- private void logEditFolderLabel() {
+ protected void logCurrentFolderLabelState() {
LauncherEvent launcherEvent = LauncherEvent.newBuilder()
.setAction(Action.newBuilder().setType(Action.Type.SOFT_KEYBOARD))
.addSrcTarget(newEditTextTargetBuilder()
diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java
index 96bdc2a..7fc6d54 100644
--- a/src/com/android/launcher3/folder/FolderIcon.java
+++ b/src/com/android/launcher3/folder/FolderIcon.java
@@ -416,6 +416,7 @@
mPreviewItemManager.hidePreviewItem(finalIndex, false);
mFolder.showItem(item);
setLabelSuggestion(nameInfos);
+ mFolder.logCurrentFolderLabelState();
invalidate();
}, DROP_IN_ANIMATION_DURATION);
}
@@ -438,7 +439,6 @@
onTitleChanged(mInfo.title);
mFolder.mFolderName.setText(mInfo.title);
mFolder.mLauncher.getModelWriter().updateItemInDatabase(mInfo);
- // TODO: Add logging while folder creation.
}
diff --git a/src/com/android/launcher3/model/data/ItemInfo.java b/src/com/android/launcher3/model/data/ItemInfo.java
index bd843e7..14f9a3e 100644
--- a/src/com/android/launcher3/model/data/ItemInfo.java
+++ b/src/com/android/launcher3/model/data/ItemInfo.java
@@ -37,6 +37,8 @@
import com.android.launcher3.logger.LauncherAtom;
import com.android.launcher3.util.ContentWriter;
+import java.util.Optional;
+
/**
* Represents an item in the launcher.
*/
@@ -248,24 +250,29 @@
LauncherAtom.ItemInfo.Builder itemBuilder = LauncherAtom.ItemInfo.newBuilder();
itemBuilder.setIsWork(user != Process.myUserHandle());
- ComponentName cn = getTargetComponent();
+ Optional<ComponentName> nullableComponent = Optional.ofNullable(getTargetComponent());
switch (itemType) {
case ITEM_TYPE_APPLICATION:
- itemBuilder.setApplication(LauncherAtom.Application.newBuilder()
- .setComponentName(cn.flattenToShortString())
- .setPackageName(cn.getPackageName()));
+ itemBuilder
+ .setApplication(nullableComponent
+ .map(component -> LauncherAtom.Application.newBuilder()
+ .setComponentName(component.flattenToShortString())
+ .setPackageName(component.getPackageName()))
+ .orElse(LauncherAtom.Application.newBuilder()));
break;
case ITEM_TYPE_DEEP_SHORTCUT:
case ITEM_TYPE_SHORTCUT:
- itemBuilder.setShortcut(LauncherAtom.Shortcut.newBuilder()
- .setShortcutName(cn.flattenToShortString()));
+ itemBuilder
+ .setShortcut(nullableComponent
+ .map(component -> LauncherAtom.Shortcut.newBuilder()
+ .setShortcutName(component.flattenToShortString()))
+ .orElse(LauncherAtom.Shortcut.newBuilder()));
break;
case ITEM_TYPE_APPWIDGET:
setItemBuilder(itemBuilder);
break;
default:
break;
-
}
if (fInfo != null) {
LauncherAtom.FolderContainer.Builder folderBuilder =