Merge "Fix breakages in SDK drop" into pi-androidx-dev
diff --git a/slices/core/src/androidTest/java/androidx/slice/SliceTest.java b/slices/core/src/androidTest/java/androidx/slice/SliceTest.java
index 041c8fe..e092c97 100644
--- a/slices/core/src/androidTest/java/androidx/slice/SliceTest.java
+++ b/slices/core/src/androidTest/java/androidx/slice/SliceTest.java
@@ -23,9 +23,9 @@
import static android.app.slice.SliceItem.FORMAT_ACTION;
import static android.app.slice.SliceItem.FORMAT_IMAGE;
import static android.app.slice.SliceItem.FORMAT_INT;
+import static android.app.slice.SliceItem.FORMAT_LONG;
import static android.app.slice.SliceItem.FORMAT_SLICE;
import static android.app.slice.SliceItem.FORMAT_TEXT;
-import static android.app.slice.SliceItem.FORMAT_TIMESTAMP;
import static android.app.slice.SliceProvider.SLICE_TYPE;
import static org.junit.Assert.assertEquals;
@@ -184,7 +184,7 @@
assertEquals(1, s.getItems().size());
SliceItem item = s.getItems().get(0);
- assertEquals(FORMAT_TIMESTAMP, item.getFormat());
+ assertEquals(FORMAT_LONG, item.getFormat());
assertEquals(43, item.getTimestamp());
}
diff --git a/slices/core/src/main/java/androidx/slice/Slice.java b/slices/core/src/main/java/androidx/slice/Slice.java
index a2c3325..0ddaa83 100644
--- a/slices/core/src/main/java/androidx/slice/Slice.java
+++ b/slices/core/src/main/java/androidx/slice/Slice.java
@@ -35,7 +35,6 @@
import static android.app.slice.SliceItem.FORMAT_REMOTE_INPUT;
import static android.app.slice.SliceItem.FORMAT_SLICE;
import static android.app.slice.SliceItem.FORMAT_TEXT;
-import static android.app.slice.SliceItem.FORMAT_TIMESTAMP;
import static androidx.slice.SliceConvert.unwrap;
import static androidx.slice.core.SliceHints.HINT_KEYWORDS;
@@ -388,7 +387,7 @@
}
/**
- * Add a timestamp to the slice being constructed
+ * Add a long to the slice being constructed
* @param subType Optional template-specific type information
* @see {@link SliceItem#getSubType()}
*/
@@ -399,6 +398,16 @@
}
/**
+ * Add a long to the slice being constructed
+ * @param subType Optional template-specific type information
+ * @see {@link SliceItem#getSubType()}
+ */
+ public Slice.Builder addLong(long time, @Nullable String subType,
+ @SliceHint List<String> hints) {
+ return addLong(time, subType, hints.toArray(new String[hints.size()]));
+ }
+
+ /**
* Add a timestamp to the slice being constructed
* @param subType Optional template-specific type information
* @see {@link SliceItem#getSubType()}
@@ -407,7 +416,7 @@
@Deprecated
public Slice.Builder addTimestamp(long time, @Nullable String subType,
@SliceHint String... hints) {
- mItems.add(new SliceItem(time, FORMAT_TIMESTAMP, subType, hints));
+ mItems.add(new SliceItem(time, FORMAT_LONG, subType, hints));
return this;
}
@@ -510,6 +519,6 @@
private static Slice callBindSlice(Context context, Uri uri,
Set<SliceSpec> supportedSpecs) {
return SliceConvert.wrap(context.getSystemService(SliceManager.class)
- .bindSlice(uri, new ArrayList<>(unwrap(supportedSpecs))));
+ .bindSlice(uri, unwrap(supportedSpecs)));
}
}
diff --git a/slices/core/src/main/java/androidx/slice/SliceConvert.java b/slices/core/src/main/java/androidx/slice/SliceConvert.java
index 73ff368..fea5b4c 100644
--- a/slices/core/src/main/java/androidx/slice/SliceConvert.java
+++ b/slices/core/src/main/java/androidx/slice/SliceConvert.java
@@ -19,17 +19,16 @@
import static android.app.slice.SliceItem.FORMAT_ACTION;
import static android.app.slice.SliceItem.FORMAT_IMAGE;
import static android.app.slice.SliceItem.FORMAT_INT;
+import static android.app.slice.SliceItem.FORMAT_LONG;
import static android.app.slice.SliceItem.FORMAT_REMOTE_INPUT;
import static android.app.slice.SliceItem.FORMAT_SLICE;
import static android.app.slice.SliceItem.FORMAT_TEXT;
-import static android.app.slice.SliceItem.FORMAT_TIMESTAMP;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.collection.ArraySet;
import androidx.core.graphics.drawable.IconCompat;
-import java.util.List;
import java.util.Set;
/**
@@ -43,9 +42,8 @@
*/
public static android.app.slice.Slice unwrap(androidx.slice.Slice slice) {
android.app.slice.Slice.Builder builder = new android.app.slice.Slice.Builder(
- slice.getUri());
+ slice.getUri(), unwrap(slice.getSpec()));
builder.addHints(slice.getHints());
- builder.setSpec(unwrap(slice.getSpec()));
for (androidx.slice.SliceItem item : slice.getItems()) {
switch (item.getFormat()) {
case FORMAT_SLICE:
@@ -67,8 +65,8 @@
case FORMAT_INT:
builder.addInt(item.getInt(), item.getSubType(), item.getHints());
break;
- case FORMAT_TIMESTAMP:
- builder.addTimestamp(item.getTimestamp(), item.getSubType(), item.getHints());
+ case FORMAT_LONG:
+ builder.addLong(item.getLong(), item.getSubType(), item.getHints());
break;
}
}
@@ -119,8 +117,8 @@
case FORMAT_INT:
builder.addInt(item.getInt(), item.getSubType(), item.getHints());
break;
- case FORMAT_TIMESTAMP:
- builder.addTimestamp(item.getTimestamp(), item.getSubType(), item.getHints());
+ case FORMAT_LONG:
+ builder.addLong(item.getLong(), item.getSubType(), item.getHints());
break;
}
}
@@ -137,7 +135,7 @@
*/
@RestrictTo(RestrictTo.Scope.LIBRARY)
public static Set<androidx.slice.SliceSpec> wrap(
- List<android.app.slice.SliceSpec> supportedSpecs) {
+ Set<android.app.slice.SliceSpec> supportedSpecs) {
Set<androidx.slice.SliceSpec> ret = new ArraySet<>();
for (android.app.slice.SliceSpec spec : supportedSpecs) {
ret.add(wrap(spec));
diff --git a/slices/core/src/main/java/androidx/slice/SliceItem.java b/slices/core/src/main/java/androidx/slice/SliceItem.java
index 964c5df..f6ae848 100644
--- a/slices/core/src/main/java/androidx/slice/SliceItem.java
+++ b/slices/core/src/main/java/androidx/slice/SliceItem.java
@@ -23,7 +23,6 @@
import static android.app.slice.SliceItem.FORMAT_REMOTE_INPUT;
import static android.app.slice.SliceItem.FORMAT_SLICE;
import static android.app.slice.SliceItem.FORMAT_TEXT;
-import static android.app.slice.SliceItem.FORMAT_TIMESTAMP;
import static androidx.slice.Slice.addHints;
@@ -59,7 +58,7 @@
* <li>{@link android.app.slice.SliceItem#FORMAT_IMAGE}</li>
* <li>{@link android.app.slice.SliceItem#FORMAT_ACTION}</li>
* <li>{@link android.app.slice.SliceItem#FORMAT_INT}</li>
- * <li>{@link android.app.slice.SliceItem#FORMAT_TIMESTAMP}</li>
+ * <li>{@link android.app.slice.SliceItem#FORMAT_LONG}</li>
* <p>
* The hints that a {@link SliceItem} are a set of strings which annotate
* the content. The hints that are guaranteed to be understood by the system
@@ -78,7 +77,7 @@
*/
@RestrictTo(Scope.LIBRARY)
@StringDef({FORMAT_SLICE, FORMAT_TEXT, FORMAT_IMAGE, FORMAT_ACTION, FORMAT_INT,
- FORMAT_TIMESTAMP, FORMAT_REMOTE_INPUT, FORMAT_LONG})
+ FORMAT_LONG, FORMAT_REMOTE_INPUT, FORMAT_LONG})
public @interface SliceType {
}
@@ -164,7 +163,7 @@
* <li>{@link android.app.slice.SliceItem#FORMAT_IMAGE}</li>
* <li>{@link android.app.slice.SliceItem#FORMAT_ACTION}</li>
* <li>{@link android.app.slice.SliceItem#FORMAT_INT}</li>
- * <li>{@link android.app.slice.SliceItem#FORMAT_TIMESTAMP}</li>
+ * <li>{@link android.app.slice.SliceItem#FORMAT_LONG}</li>
* <li>{@link android.app.slice.SliceItem#FORMAT_REMOTE_INPUT}</li>
* @see #getSubType() ()
*/
@@ -347,7 +346,7 @@
case FORMAT_INT:
dest.putInt(OBJ, (Integer) mObj);
break;
- case FORMAT_TIMESTAMP:
+ case FORMAT_LONG:
dest.putLong(OBJ, (Long) mObj);
break;
}
@@ -369,7 +368,7 @@
new Slice(in.getBundle(OBJ_2)));
case FORMAT_INT:
return in.getInt(OBJ);
- case FORMAT_TIMESTAMP:
+ case FORMAT_LONG:
return in.getLong(OBJ);
}
throw new RuntimeException("Unsupported type " + type);
@@ -391,8 +390,8 @@
return "Action";
case FORMAT_INT:
return "Int";
- case FORMAT_TIMESTAMP:
- return "Timestamp";
+ case FORMAT_LONG:
+ return "Long";
case FORMAT_REMOTE_INPUT:
return "RemoteInput";
}
diff --git a/slices/core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java b/slices/core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java
index 8641530..c35793e 100644
--- a/slices/core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java
+++ b/slices/core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java
@@ -29,11 +29,10 @@
import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;
-import androidx.collection.ArraySet;
import androidx.slice.SliceConvert;
import java.util.Collection;
-import java.util.List;
+import java.util.Set;
/**
* @hide
@@ -64,8 +63,8 @@
}
@Override
- public Slice onBindSlice(Uri sliceUri, List<SliceSpec> supportedVersions) {
- androidx.slice.SliceProvider.setSpecs(new ArraySet<>(wrap(supportedVersions)));
+ public Slice onBindSlice(Uri sliceUri, Set<SliceSpec> supportedVersions) {
+ androidx.slice.SliceProvider.setSpecs(wrap(supportedVersions));
try {
return SliceConvert.unwrap(mSliceProvider.onBindSlice(sliceUri));
} finally {
diff --git a/slices/view/src/main/java/androidx/slice/SliceManagerWrapper.java b/slices/view/src/main/java/androidx/slice/SliceManagerWrapper.java
index 2dc7281..ec49fe2 100644
--- a/slices/view/src/main/java/androidx/slice/SliceManagerWrapper.java
+++ b/slices/view/src/main/java/androidx/slice/SliceManagerWrapper.java
@@ -30,7 +30,6 @@
import androidx.annotation.RestrictTo;
import androidx.core.content.PermissionChecker;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -44,7 +43,7 @@
class SliceManagerWrapper extends SliceManagerBase {
private final android.app.slice.SliceManager mManager;
- private final List<SliceSpec> mSpecs;
+ private final Set<SliceSpec> mSpecs;
SliceManagerWrapper(Context context) {
this(context, context.getSystemService(android.app.slice.SliceManager.class));
@@ -53,7 +52,7 @@
SliceManagerWrapper(Context context, android.app.slice.SliceManager manager) {
super(context);
mManager = manager;
- mSpecs = new ArrayList<>(unwrap(SUPPORTED_SPECS));
+ mSpecs = unwrap(SUPPORTED_SPECS);
}
@Override
diff --git a/slices/view/src/main/java/androidx/slice/SliceMetadata.java b/slices/view/src/main/java/androidx/slice/SliceMetadata.java
index 8a4ee03..0c4f614 100644
--- a/slices/view/src/main/java/androidx/slice/SliceMetadata.java
+++ b/slices/view/src/main/java/androidx/slice/SliceMetadata.java
@@ -23,9 +23,9 @@
import static android.app.slice.Slice.SUBTYPE_MAX;
import static android.app.slice.Slice.SUBTYPE_VALUE;
import static android.app.slice.SliceItem.FORMAT_INT;
+import static android.app.slice.SliceItem.FORMAT_LONG;
import static android.app.slice.SliceItem.FORMAT_SLICE;
import static android.app.slice.SliceItem.FORMAT_TEXT;
-import static android.app.slice.SliceItem.FORMAT_TIMESTAMP;
import static androidx.slice.core.SliceHints.HINT_KEYWORDS;
import static androidx.slice.core.SliceHints.HINT_LAST_UPDATED;
@@ -118,11 +118,11 @@
private SliceMetadata(@NonNull Context context, @NonNull Slice slice) {
mSlice = slice;
mContext = context;
- SliceItem ttlItem = SliceQuery.find(slice, FORMAT_TIMESTAMP, HINT_TTL, null);
+ SliceItem ttlItem = SliceQuery.find(slice, FORMAT_LONG, HINT_TTL, null);
if (ttlItem != null) {
mExpiry = ttlItem.getTimestamp();
}
- SliceItem updatedItem = SliceQuery.find(slice, FORMAT_TIMESTAMP, HINT_LAST_UPDATED, null);
+ SliceItem updatedItem = SliceQuery.find(slice, FORMAT_LONG, HINT_LAST_UPDATED, null);
if (updatedItem != null) {
mLastUpdated = updatedItem.getTimestamp();
}
diff --git a/slices/view/src/main/java/androidx/slice/widget/GridContent.java b/slices/view/src/main/java/androidx/slice/widget/GridContent.java
index 69d5c44..424143c 100644
--- a/slices/view/src/main/java/androidx/slice/widget/GridContent.java
+++ b/slices/view/src/main/java/androidx/slice/widget/GridContent.java
@@ -26,9 +26,9 @@
import static android.app.slice.SliceItem.FORMAT_ACTION;
import static android.app.slice.SliceItem.FORMAT_IMAGE;
import static android.app.slice.SliceItem.FORMAT_INT;
+import static android.app.slice.SliceItem.FORMAT_LONG;
import static android.app.slice.SliceItem.FORMAT_SLICE;
import static android.app.slice.SliceItem.FORMAT_TEXT;
-import static android.app.slice.SliceItem.FORMAT_TIMESTAMP;
import static androidx.slice.core.SliceHints.HINT_KEYWORDS;
import static androidx.slice.core.SliceHints.HINT_LAST_UPDATED;
@@ -295,7 +295,7 @@
if (SUBTYPE_CONTENT_DESCRIPTION.equals(item.getSubType())) {
mContentDescr = item;
} else if (mTextCount < 2 && (FORMAT_TEXT.equals(itemFormat)
- || FORMAT_TIMESTAMP.equals(itemFormat))) {
+ || FORMAT_LONG.equals(itemFormat))) {
mTextCount++;
mCellItems.add(item);
} else if (imageCount < 1 && FORMAT_IMAGE.equals(item.getFormat())) {
@@ -340,7 +340,7 @@
|| cellItem.hasAnyHints(HINT_KEYWORDS, HINT_TTL, HINT_LAST_UPDATED);
return !isNonCellContent
&& (FORMAT_TEXT.equals(format)
- || FORMAT_TIMESTAMP.equals(format)
+ || FORMAT_LONG.equals(format)
|| FORMAT_IMAGE.equals(format));
}
diff --git a/slices/view/src/main/java/androidx/slice/widget/GridRowView.java b/slices/view/src/main/java/androidx/slice/widget/GridRowView.java
index 4b8078c..7423b02 100644
--- a/slices/view/src/main/java/androidx/slice/widget/GridRowView.java
+++ b/slices/view/src/main/java/androidx/slice/widget/GridRowView.java
@@ -21,9 +21,9 @@
import static android.app.slice.Slice.HINT_TITLE;
import static android.app.slice.SliceItem.FORMAT_ACTION;
import static android.app.slice.SliceItem.FORMAT_IMAGE;
+import static android.app.slice.SliceItem.FORMAT_LONG;
import static android.app.slice.SliceItem.FORMAT_SLICE;
import static android.app.slice.SliceItem.FORMAT_TEXT;
-import static android.app.slice.SliceItem.FORMAT_TIMESTAMP;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
@@ -258,7 +258,7 @@
SliceItem item = cellItems.get(i);
final String itemFormat = item.getFormat();
if (textCount < maxCellText && (FORMAT_TEXT.equals(itemFormat)
- || FORMAT_TIMESTAMP.equals(itemFormat))) {
+ || FORMAT_LONG.equals(itemFormat))) {
if (textItems != null && !textItems.contains(item)) {
continue;
}
@@ -305,13 +305,13 @@
private boolean addItem(SliceItem item, int color, ViewGroup container, boolean singleItem) {
final String format = item.getFormat();
View addedView = null;
- if (FORMAT_TEXT.equals(format) || FORMAT_TIMESTAMP.equals(format)) {
+ if (FORMAT_TEXT.equals(format) || FORMAT_LONG.equals(format)) {
boolean title = SliceQuery.hasAnyHints(item, HINT_LARGE, HINT_TITLE);
TextView tv = (TextView) LayoutInflater.from(getContext()).inflate(title
? TITLE_TEXT_LAYOUT : TEXT_LAYOUT, null);
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, title ? mTitleSize : mSubtitleSize);
tv.setTextColor(title ? mTitleColor : mSubtitleColor);
- CharSequence text = FORMAT_TIMESTAMP.equals(format)
+ CharSequence text = FORMAT_LONG.equals(format)
? SliceViewUtil.getRelativeTimeString(item.getTimestamp())
: item.getText();
tv.setText(text);
diff --git a/slices/view/src/main/java/androidx/slice/widget/RowContent.java b/slices/view/src/main/java/androidx/slice/widget/RowContent.java
index bc3826f..0c8d4a6 100644
--- a/slices/view/src/main/java/androidx/slice/widget/RowContent.java
+++ b/slices/view/src/main/java/androidx/slice/widget/RowContent.java
@@ -27,10 +27,10 @@
import static android.app.slice.SliceItem.FORMAT_ACTION;
import static android.app.slice.SliceItem.FORMAT_IMAGE;
import static android.app.slice.SliceItem.FORMAT_INT;
+import static android.app.slice.SliceItem.FORMAT_LONG;
import static android.app.slice.SliceItem.FORMAT_REMOTE_INPUT;
import static android.app.slice.SliceItem.FORMAT_SLICE;
import static android.app.slice.SliceItem.FORMAT_TEXT;
-import static android.app.slice.SliceItem.FORMAT_TIMESTAMP;
import static androidx.slice.core.SliceHints.HINT_KEYWORDS;
import static androidx.slice.core.SliceHints.HINT_LAST_UPDATED;
@@ -157,11 +157,11 @@
}
// Special rules for end items: only one timestamp
boolean hasTimestamp = mStartItem != null
- && FORMAT_TIMESTAMP.equals(mStartItem.getFormat());
+ && FORMAT_LONG.equals(mStartItem.getFormat());
for (int i = 0; i < endItems.size(); i++) {
final SliceItem item = endItems.get(i);
boolean isAction = SliceQuery.find(item, FORMAT_ACTION) != null;
- if (FORMAT_TIMESTAMP.equals(item.getFormat())) {
+ if (FORMAT_LONG.equals(item.getFormat())) {
if (!hasTimestamp) {
hasTimestamp = true;
mEndItems.add(item);
@@ -382,7 +382,7 @@
return (FORMAT_TEXT.equals(itemFormat)
&& !SUBTYPE_CONTENT_DESCRIPTION.equals(item.getSubType()))
|| FORMAT_IMAGE.equals(itemFormat)
- || FORMAT_TIMESTAMP.equals(itemFormat)
+ || FORMAT_LONG.equals(itemFormat)
|| FORMAT_REMOTE_INPUT.equals(itemFormat)
|| (FORMAT_SLICE.equals(itemFormat) && item.hasHint(HINT_TITLE)
&& !item.hasHint(HINT_SHORTCUT))
@@ -400,7 +400,7 @@
final String type = item.getFormat();
return (FORMAT_ACTION.equals(type) && (SliceQuery.find(item, FORMAT_IMAGE) != null))
|| FORMAT_IMAGE.equals(type)
- || (FORMAT_TIMESTAMP.equals(type)
+ || (FORMAT_LONG.equals(type)
&& !item.hasAnyHints(HINT_TTL, HINT_LAST_UPDATED));
}
}
diff --git a/slices/view/src/main/java/androidx/slice/widget/RowView.java b/slices/view/src/main/java/androidx/slice/widget/RowView.java
index a7101fe..9a64d7d 100644
--- a/slices/view/src/main/java/androidx/slice/widget/RowView.java
+++ b/slices/view/src/main/java/androidx/slice/widget/RowView.java
@@ -26,8 +26,8 @@
import static android.app.slice.SliceItem.FORMAT_ACTION;
import static android.app.slice.SliceItem.FORMAT_IMAGE;
import static android.app.slice.SliceItem.FORMAT_INT;
+import static android.app.slice.SliceItem.FORMAT_LONG;
import static android.app.slice.SliceItem.FORMAT_SLICE;
-import static android.app.slice.SliceItem.FORMAT_TIMESTAMP;
import static androidx.slice.core.SliceHints.ICON_IMAGE;
import static androidx.slice.core.SliceHints.SMALL_IMAGE;
@@ -460,7 +460,7 @@
if (FORMAT_IMAGE.equals(sliceItem.getFormat())) {
icon = sliceItem.getIcon();
imageMode = sliceItem.hasHint(HINT_NO_TINT) ? SMALL_IMAGE : ICON_IMAGE;
- } else if (FORMAT_TIMESTAMP.equals(sliceItem.getFormat())) {
+ } else if (FORMAT_LONG.equals(sliceItem.getFormat())) {
timeStamp = sliceItem;
}
View addedView = null;
diff --git a/webkit/src/main/java/androidx/webkit/WebViewCompat.java b/webkit/src/main/java/androidx/webkit/WebViewCompat.java
index 6e82a69..bb1c4fc 100644
--- a/webkit/src/main/java/androidx/webkit/WebViewCompat.java
+++ b/webkit/src/main/java/androidx/webkit/WebViewCompat.java
@@ -344,7 +344,7 @@
throw new RuntimeException("A WebView method was called on thread '"
+ Thread.currentThread().getName() + "'. "
+ "All WebView methods must be called on the same thread. "
- + "(Expected Looper " + webview.getLooper() + " called on "
+ + "(Expected Looper " + webview.getWebViewLooper() + " called on "
+ Looper.myLooper() + ", FYI main Looper is " + Looper.getMainLooper()
+ ")");
}