Merge "Explicit Nullbility in Launcher (Part 3)" into tm-qpr-dev am: 3426372ff8

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/19890491

Change-Id: I136275b2dc04ec496ba6e32616eaf92732cc0198
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2022-09-08 22:08:22 +00:00
committed by Automerger Merge Worker
9 changed files with 51 additions and 15 deletions
@@ -18,6 +18,7 @@ package com.android.launcher3;
import android.content.ComponentName;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.model.data.ItemInfo;
@@ -43,6 +44,7 @@ public class PendingAddItemInfo extends ItemInfo {
/**
* Returns shallow copy of the object.
*/
@NonNull
@Override
public ItemInfo makeShallowCopy() {
PendingAddItemInfo itemInfo = new PendingAddItemInfo();
@@ -288,6 +288,7 @@ public class ItemInstallQueue {
}
@Override
@Nullable
public Intent getIntent() {
return intent;
}
@@ -29,6 +29,7 @@ import android.os.UserHandle;
import android.os.UserManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import com.android.launcher3.LauncherSettings;
@@ -65,6 +66,7 @@ public class AppInfo extends ItemInfoWithIcon implements WorkspaceItemFactory {
}
@Override
@Nullable
public Intent getIntent() {
return intent;
}
@@ -26,6 +26,7 @@ import static com.android.launcher3.logger.LauncherAtom.Attribute.SUGGESTED_LABE
import android.os.Process;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.LauncherSettings;
@@ -154,7 +155,7 @@ public class FolderInfo extends ItemInfo {
}
@Override
public void onAddToDatabase(ContentWriter writer) {
public void onAddToDatabase(@NonNull ContentWriter writer) {
super.onAddToDatabase(writer);
writer.put(LauncherSettings.Favorites.TITLE, title)
.put(LauncherSettings.Favorites.OPTIONS, options);
@@ -206,8 +207,9 @@ public class FolderInfo extends ItemInfo {
return String.format("%s; labelState=%s", super.dumpProperties(), getLabelState());
}
@NonNull
@Override
public LauncherAtom.ItemInfo buildProto(FolderInfo fInfo) {
public LauncherAtom.ItemInfo buildProto(@Nullable FolderInfo fInfo) {
FolderIcon.Builder folderIcon = FolderIcon.newBuilder()
.setCardinality(contents.size());
if (LabelState.SUGGESTED.equals(getLabelState())) {
@@ -261,6 +263,7 @@ public class FolderInfo extends ItemInfo {
: LabelState.SUGGESTED;
}
@NonNull
@Override
public ItemInfo makeShallowCopy() {
FolderInfo folderInfo = new FolderInfo();
@@ -272,6 +275,7 @@ public class FolderInfo extends ItemInfo {
/**
* Returns {@link LauncherAtom.FolderIcon} wrapped as {@link LauncherAtom.ItemInfo} for logging.
*/
@NonNull
@Override
public LauncherAtom.ItemInfo buildProto() {
return buildProto(null);
@@ -42,6 +42,7 @@ import android.content.Intent;
import android.os.Process;
import android.os.UserHandle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.LauncherSettings;
@@ -141,30 +142,34 @@ public class ItemInfo {
/**
* Title of the item
*/
@Nullable
public CharSequence title;
/**
* Content description of the item.
*/
@Nullable
public CharSequence contentDescription;
/**
* When the instance is created using {@link #copyFrom}, this field is used to keep track of
* original {@link ComponentName}.
*/
@Nullable
private ComponentName mComponentName;
@NonNull
public UserHandle user;
public ItemInfo() {
user = Process.myUserHandle();
}
protected ItemInfo(ItemInfo info) {
protected ItemInfo(@NonNull final ItemInfo info) {
copyFrom(info);
}
public void copyFrom(ItemInfo info) {
public void copyFrom(@NonNull final ItemInfo info) {
id = info.id;
title = info.title;
cellX = info.cellX;
@@ -182,6 +187,7 @@ public class ItemInfo {
mComponentName = info.getTargetComponent();
}
@Nullable
public Intent getIntent() {
return null;
}
@@ -209,7 +215,7 @@ public class ItemInfo {
: null;
}
public void writeToValues(ContentWriter writer) {
public void writeToValues(@NonNull final ContentWriter writer) {
writer.put(LauncherSettings.Favorites.ITEM_TYPE, itemType)
.put(LauncherSettings.Favorites.CONTAINER, container)
.put(LauncherSettings.Favorites.SCREEN, screenId)
@@ -220,7 +226,7 @@ public class ItemInfo {
.put(LauncherSettings.Favorites.RANK, rank);
}
public void readFromValues(ContentValues values) {
public void readFromValues(@NonNull final ContentValues values) {
itemType = values.getAsInteger(LauncherSettings.Favorites.ITEM_TYPE);
container = values.getAsInteger(LauncherSettings.Favorites.CONTAINER);
screenId = values.getAsInteger(LauncherSettings.Favorites.SCREEN);
@@ -234,7 +240,7 @@ public class ItemInfo {
/**
* Write the fields of this item to the DB
*/
public void onAddToDatabase(ContentWriter writer) {
public void onAddToDatabase(@NonNull final ContentWriter writer) {
if (Workspace.EXTRA_EMPTY_SCREEN_IDS.contains(screenId)) {
// We should never persist an item on the extra empty screen.
throw new RuntimeException("Screen id should not be extra empty screen: " + screenId);
@@ -245,10 +251,12 @@ public class ItemInfo {
}
@Override
@NonNull
public final String toString() {
return getClass().getSimpleName() + "(" + dumpProperties() + ")";
}
@NonNull
protected String dumpProperties() {
return "id=" + id
+ " type=" + LauncherSettings.Favorites.itemTypeToString(itemType)
@@ -288,14 +296,17 @@ public class ItemInfo {
/**
* Creates {@link LauncherAtom.ItemInfo} with important fields and parent container info.
*/
@NonNull
public LauncherAtom.ItemInfo buildProto() {
return buildProto(null);
}
/**
* Creates {@link LauncherAtom.ItemInfo} with important fields and parent container info.
* @param fInfo
*/
public LauncherAtom.ItemInfo buildProto(FolderInfo fInfo) {
@NonNull
public LauncherAtom.ItemInfo buildProto(@Nullable final FolderInfo fInfo) {
LauncherAtom.ItemInfo.Builder itemBuilder = getDefaultItemInfoBuilder();
Optional<ComponentName> nullableComponent = Optional.ofNullable(getTargetComponent());
switch (itemType) {
@@ -373,6 +384,7 @@ public class ItemInfo {
return itemBuilder.build();
}
@NonNull
protected LauncherAtom.ItemInfo.Builder getDefaultItemInfoBuilder() {
LauncherAtom.ItemInfo.Builder itemBuilder = LauncherAtom.ItemInfo.newBuilder();
itemBuilder.setIsWork(!Process.myUserHandle().equals(user));
@@ -383,6 +395,7 @@ public class ItemInfo {
/**
* Returns {@link ContainerInfo} used when logging this item.
*/
@NonNull
public ContainerInfo getContainerInfo() {
switch (container) {
case CONTAINER_HOTSEAT:
@@ -447,6 +460,7 @@ public class ItemInfo {
* Returns non-AOSP container wrapped by {@link ExtendedContainers} object. Should be overridden
* by build variants.
*/
@NonNull
protected ExtendedContainers getExtendedContainer() {
return ExtendedContainers.getDefaultInstance();
}
@@ -454,6 +468,7 @@ public class ItemInfo {
/**
* Returns shallow copy of the object.
*/
@NonNull
public ItemInfo makeShallowCopy() {
ItemInfo itemInfo = new ItemInfo();
itemInfo.copyFrom(this);
@@ -463,7 +478,8 @@ public class ItemInfo {
/**
* Sets the title of the item and writes to DB model if needed.
*/
public void setTitle(CharSequence title, ModelWriter modelWriter) {
public void setTitle(@Nullable final CharSequence title,
@Nullable final ModelWriter modelWriter) {
this.title = title;
}
}
@@ -29,6 +29,7 @@ import android.content.Intent;
import android.content.res.Resources;
import android.os.Process;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.Launcher;
@@ -191,7 +192,7 @@ public class LauncherAppWidgetInfo extends ItemInfo {
}
@Override
public void onAddToDatabase(ContentWriter writer) {
public void onAddToDatabase(@NonNull ContentWriter writer) {
super.onAddToDatabase(writer);
writer.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId)
.put(LauncherSettings.Favorites.APPWIDGET_PROVIDER, providerName.flattenToString())
@@ -283,8 +284,9 @@ public class LauncherAppWidgetInfo extends ItemInfo {
}
}
@NonNull
@Override
public LauncherAtom.ItemInfo buildProto(FolderInfo folderInfo) {
public LauncherAtom.ItemInfo buildProto(@Nullable FolderInfo folderInfo) {
LauncherAtom.ItemInfo info = super.buildProto(folderInfo);
return info.toBuilder()
.setWidget(info.getWidget().toBuilder().setWidgetFeatures(widgetFeatures))
@@ -24,6 +24,7 @@ import android.graphics.drawable.Icon;
import android.os.Process;
import android.os.UserHandle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.LauncherAppState;
@@ -70,7 +71,7 @@ public class SearchActionItemInfo extends ItemInfoWithIcon implements WorkspaceI
}
@Override
public void copyFrom(com.android.launcher3.model.data.ItemInfo info) {
public void copyFrom(@NonNull com.android.launcher3.model.data.ItemInfo info) {
super.copyFrom(info);
SearchActionItemInfo itemInfo = (SearchActionItemInfo) info;
this.mFallbackPackageName = itemInfo.mFallbackPackageName;
@@ -91,6 +92,7 @@ public class SearchActionItemInfo extends ItemInfoWithIcon implements WorkspaceI
}
@Override
@Nullable
public Intent getIntent() {
return mIntent;
}
@@ -131,8 +133,9 @@ public class SearchActionItemInfo extends ItemInfoWithIcon implements WorkspaceI
return new SearchActionItemInfo(this);
}
@NonNull
@Override
public ItemInfo buildProto(FolderInfo fInfo) {
public ItemInfo buildProto(@Nullable FolderInfo fInfo) {
SearchActionItem.Builder itemBuilder = SearchActionItem.newBuilder()
.setPackageName(mFallbackPackageName);
@@ -24,6 +24,7 @@ import android.content.pm.ShortcutInfo;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.LauncherSettings.Favorites;
@@ -130,7 +131,7 @@ public class WorkspaceItemInfo extends ItemInfoWithIcon {
}
@Override
public void onAddToDatabase(ContentWriter writer) {
public void onAddToDatabase(@NonNull ContentWriter writer) {
super.onAddToDatabase(writer);
writer.put(Favorites.TITLE, title)
.put(Favorites.INTENT, getIntent())
@@ -147,6 +148,7 @@ public class WorkspaceItemInfo extends ItemInfoWithIcon {
}
@Override
@Nullable
public Intent getIntent() {
return intent;
}
@@ -19,6 +19,9 @@ import android.appwidget.AppWidgetHostView;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.PendingAddItemInfo;
import com.android.launcher3.logger.LauncherAtom;
@@ -66,8 +69,9 @@ public class PendingAddWidgetInfo extends PendingAddItemInfo {
return WidgetSizes.getWidgetSizeOptions(context, componentName, spanX, spanY);
}
@NonNull
@Override
public LauncherAtom.ItemInfo buildProto(FolderInfo folderInfo) {
public LauncherAtom.ItemInfo buildProto(@Nullable FolderInfo folderInfo) {
LauncherAtom.ItemInfo info = super.buildProto(folderInfo);
return info.toBuilder()
.addItemAttributes(LauncherAppWidgetInfo.getAttribute(sourceContainer))