Merge "Fix regression with big picture items" into pi-preview1-androidx-dev
diff --git a/slices/view/src/androidTest/java/androidx/slice/render/SliceCreator.java b/slices/view/src/androidTest/java/androidx/slice/render/SliceCreator.java
index ef96a27..26c7704 100644
--- a/slices/view/src/androidTest/java/androidx/slice/render/SliceCreator.java
+++ b/slices/view/src/androidTest/java/androidx/slice/render/SliceCreator.java
@@ -55,7 +55,8 @@
     public static final String EXTRA_TOAST_MESSAGE = "com.example.androidx.extra.TOAST_MESSAGE";
 
     public static final String[] URI_PATHS = {"message", "wifi", "wifi2", "note", "ride", "toggle",
-            "toggle2", "contact", "gallery", "subscription", "subscription2", "weather"};
+            "toggle2", "contact", "gallery", "subscription", "subscription2", "weather",
+            "reservation"};
 
     private final Context mContext;
 
@@ -105,6 +106,8 @@
                 return createSubSlice(sliceUri, true /* customSeeMore */);
             case "/weather":
                 return createWeather(sliceUri);
+            case "/reservation":
+                return createReservationSlice(sliceUri);
         }
         throw new IllegalArgumentException("Unknown uri " + sliceUri);
     }
@@ -222,7 +225,8 @@
                 .addRow(rb
                         .setTitle("Mady Pitza")
                         .setSubtitle("Frequently contacted contact")
-                        .addEndItem(Icon.createWithResource(getContext(), R.drawable.mady)))
+                        .addEndItem(Icon.createWithResource(getContext(), R.drawable.mady),
+                        SMALL_IMAGE))
                 .addGrid(gb
                         .addCell(new GridBuilder.CellBuilder(gb)
                             .addImage(Icon.createWithResource(getContext(), R.drawable.ic_call),
@@ -415,6 +419,36 @@
         return lb.build();
     }
 
+    private Slice createReservationSlice(Uri sliceUri) {
+        ListBuilder lb = new ListBuilder(getContext(), sliceUri);
+        GridBuilder gb1 = new GridBuilder(lb);
+        gb1.addCell(new GridBuilder.CellBuilder(gb1)
+                .addImage(Icon.createWithResource(getContext(), R.drawable.reservation),
+                        LARGE_IMAGE)
+                .setContentDescription("Image of your reservation in Seattle"));
+        GridBuilder gb2 = new GridBuilder(lb);
+        gb2.addCell(new GridBuilder.CellBuilder(gb2)
+                    .addTitleText("Check In")
+                    .addText("12:00 PM, Feb 1"))
+                .addCell(new GridBuilder.CellBuilder(gb2)
+                    .addTitleText("Check Out")
+                    .addText("11:00 AM, Feb 19"));
+        return lb.setColor(0xffFF5252)
+                .setHeader(new ListBuilder.HeaderBuilder(lb)
+                        .setTitle("Upcoming trip to Seattle")
+                        .setSubtitle("Feb 1 - 19 | 2 guests"))
+                .addAction(new SliceAction(
+                        getBroadcastIntent(ACTION_TOAST, "show location on map"),
+                        Icon.createWithResource(getContext(), R.drawable.ic_location),
+                        "Show reservation location"))
+                .addAction(new SliceAction(getBroadcastIntent(ACTION_TOAST, "contact host"),
+                        Icon.createWithResource(getContext(), R.drawable.ic_text),
+                        "Contact host"))
+                .addGrid(gb1)
+                .addGrid(gb2)
+                .build();
+    }
+
     private PendingIntent getIntent(String action) {
         Intent intent = new Intent(action);
         intent.setClassName(getContext().getPackageName(), SliceRenderActivity.class.getName());
diff --git a/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java b/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java
index eeeea2b..5625c34 100644
--- a/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java
+++ b/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java
@@ -24,7 +24,6 @@
 import android.graphics.Canvas;
 import android.os.AsyncTask;
 import android.os.Handler;
-import androidx.recyclerview.widget.RecyclerView;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.LayoutInflater;
@@ -36,6 +35,7 @@
 import java.io.FileOutputStream;
 import java.util.concurrent.CountDownLatch;
 
+import androidx.recyclerview.widget.RecyclerView;
 import androidx.slice.Slice;
 import androidx.slice.SliceProvider;
 import androidx.slice.view.test.R;
@@ -65,7 +65,7 @@
             protected void onLayout(boolean changed, int l, int t, int r, int b) {
                 int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1000,
                         mContext.getResources().getDisplayMetrics());
-                int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300,
+                int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 330,
                         mContext.getResources().getDisplayMetrics());
                 mLayout.measure(makeMeasureSpec(width, View.MeasureSpec.EXACTLY),
                         makeMeasureSpec(height, View.MeasureSpec.EXACTLY));
diff --git a/slices/view/src/androidTest/res/drawable/ic_location.xml b/slices/view/src/androidTest/res/drawable/ic_location.xml
new file mode 100644
index 0000000..2f2db39
--- /dev/null
+++ b/slices/view/src/androidTest/res/drawable/ic_location.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ Copyright 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.87 -3.13,-7 -7,-7zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5 2.5,1.12 2.5,2.5 -1.12,2.5 -2.5,2.5z"/>
+</vector>
diff --git a/slices/view/src/androidTest/res/drawable/reservation.png b/slices/view/src/androidTest/res/drawable/reservation.png
new file mode 100644
index 0000000..16acc98
--- /dev/null
+++ b/slices/view/src/androidTest/res/drawable/reservation.png
Binary files differ
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 4fb4bde..64ead75 100644
--- a/slices/view/src/main/java/androidx/slice/widget/GridContent.java
+++ b/slices/view/src/main/java/androidx/slice/widget/GridContent.java
@@ -105,12 +105,15 @@
             // Check if it it's only one item that is a slice
             if (items.size() == 1 && items.get(0).getFormat().equals(FORMAT_SLICE)) {
                 items = items.get(0).getSlice().getItems();
-                items = filterAndProcessItems(items);
             }
             for (int i = 0; i < items.size(); i++) {
                 SliceItem item = items.get(i);
-                CellContent cc = new CellContent(item);
-                processContent(cc);
+                if (SUBTYPE_CONTENT_DESCRIPTION.equals(item.getSubType())) {
+                    mContentDescr = item;
+                } else {
+                    CellContent cc = new CellContent(item);
+                    processContent(cc);
+                }
             }
         } else {
             CellContent cc = new CellContent(gridItem);