Merge "Explicit Nullbility in Launcher (Part 3)" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
3426372ff8
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user