SliceMetadataTest.java revision 9399b1430f150241bd4ddbd89b78f3c352420f09
1e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor/* 2e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * Copyright 2018 The Android Open Source Project 3e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * 4e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * Licensed under the Apache License, Version 2.0 (the "License"); 5e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * you may not use this file except in compliance with the License. 6e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * You may obtain a copy of the License at 7e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * 8e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * http://www.apache.org/licenses/LICENSE-2.0 9e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * 10e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * Unless required by applicable law or agreed to in writing, software 11e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * distributed under the License is distributed on an "AS IS" BASIS, 12e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * See the License for the specific language governing permissions and 14e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * limitations under the License. 15e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor */ 16e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 17e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorpackage androidx.slice; 18e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 19e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport static android.app.slice.Slice.HINT_PARTIAL; 20e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport static android.app.slice.Slice.HINT_TITLE; 21e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 22e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport static androidx.slice.SliceMetadata.LOADED_ALL; 23e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport static androidx.slice.SliceMetadata.LOADED_NONE; 24e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport static androidx.slice.SliceMetadata.LOADED_PARTIAL; 25ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport static androidx.slice.builders.ListBuilder.ICON_IMAGE; 260707dbe9fa3225cc921a2305a611272f0dee1ca8Mady Mellorimport static androidx.slice.core.SliceHints.HINT_KEYWORDS; 27e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 28e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport static junit.framework.Assert.assertEquals; 29e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport static junit.framework.Assert.assertTrue; 30e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 31e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport static org.junit.Assert.assertArrayEquals; 32e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport static org.junit.Assert.assertNull; 33e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 34ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport android.app.PendingIntent; 35e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport android.content.Context; 36ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport android.content.Intent; 37ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport android.graphics.Bitmap; 38ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport android.graphics.Canvas; 39ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport android.graphics.drawable.Icon; 40e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport android.net.Uri; 41e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport android.support.test.InstrumentationRegistry; 42e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport android.support.test.filters.SmallTest; 43e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport android.support.test.runner.AndroidJUnit4; 44e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 45decaa736515b8c773842750af79b034964a6ca62Mady Mellorimport androidx.core.graphics.drawable.IconCompat; 46ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport androidx.core.util.Pair; 47ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport androidx.slice.builders.GridRowBuilder; 48ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport androidx.slice.builders.ListBuilder; 49ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport androidx.slice.builders.SliceAction; 50ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport androidx.slice.core.SliceActionImpl; 51e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport androidx.slice.core.SliceHints; 52ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport androidx.slice.render.SliceRenderActivity; 53ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport androidx.slice.widget.EventInfo; 54ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport androidx.slice.widget.SliceLiveData; 55e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 56ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport org.junit.Before; 57e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport org.junit.Test; 58e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport org.junit.runner.RunWith; 59e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 60ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellorimport java.util.ArrayList; 61e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport java.util.List; 62e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorimport java.util.concurrent.TimeUnit; 63e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 64e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor/** 65e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor * Tests for {@link SliceMetadata}. 66e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor */ 67e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor@RunWith(AndroidJUnit4.class) 68e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor@SmallTest 69e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellorpublic class SliceMetadataTest { 70e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 71e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor private final Context mContext = InstrumentationRegistry.getContext(); 72e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 73ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Before 74ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void setup() { 75ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); 76ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 77ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 78ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 79ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetSliceActionsNull() { 80ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 81ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 82ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 83ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb).setTitle("Text")); 84ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 85ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata sliceMetadata = SliceMetadata.from(mContext, lb.build()); 86ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertNull(sliceMetadata.getSliceActions()); 87ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 88ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 89ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 90ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetSliceActions() { 91ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 92ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 93ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Bitmap b = Bitmap.createBitmap(50, 25, Bitmap.Config.ARGB_8888); 94ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor new Canvas(b).drawColor(0xffff0000); 95decaa736515b8c773842750af79b034964a6ca62Mady Mellor IconCompat icon = IconCompat.createFromIcon(Icon.createWithBitmap(b)); 96ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 97ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction action1 = new SliceAction(pi, icon, "action1"); 98ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction action2 = new SliceAction(pi, icon, "action2"); 99ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction action3 = new SliceAction(pi, icon, "action3"); 100ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 101ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 102ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb).setTitle("Text")) 103ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addAction(action1) 104ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addAction(action2) 105ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addAction(action3); 106ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 107ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ArrayList<SliceAction> expectedActions = new ArrayList<>(); 108ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor expectedActions.add(action1); 109ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor expectedActions.add(action2); 110ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor expectedActions.add(action3); 111ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 112ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata sliceMetadata = SliceMetadata.from(mContext, lb.build()); 113ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor List<SliceItem> actions = sliceMetadata.getSliceActions(); 114ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 115ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor for (int i = 0; i < expectedActions.size(); i++) { 116ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquivalent(expectedActions.get(i), new SliceActionImpl(actions.get(i))); 117ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 118ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 119ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 120ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 121ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetPrimaryActionForGrid() { 122ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 123ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 124ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Bitmap b = Bitmap.createBitmap(50, 25, Bitmap.Config.ARGB_8888); 125ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor new Canvas(b).drawColor(0xffff0000); 126decaa736515b8c773842750af79b034964a6ca62Mady Mellor IconCompat icon = IconCompat.createFromIcon(Icon.createWithBitmap(b)); 127ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 128ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction primaryAction = new SliceAction(pi, icon, "action"); 129ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 130ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 131ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor GridRowBuilder grb = new GridRowBuilder(lb); 132ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.setPrimaryAction(primaryAction); 133ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb).addText("some text")); 134ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb).addText("some text")); 135ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb).addText("some text")); 136ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addGridRow(grb); 137ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 138ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice gridSlice = lb.build(); 139ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata gridInfo = SliceMetadata.from(mContext, gridSlice); 140ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquivalent(primaryAction, gridInfo.getPrimaryAction()); 141ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 142ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 143ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 144ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetPrimaryActionForRow() { 145ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 146ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 147ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Bitmap b = Bitmap.createBitmap(50, 25, Bitmap.Config.ARGB_8888); 148ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor new Canvas(b).drawColor(0xffff0000); 149decaa736515b8c773842750af79b034964a6ca62Mady Mellor IconCompat icon = IconCompat.createFromIcon(Icon.createWithBitmap(b)); 150ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 151ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction primaryAction = new SliceAction(pi, icon, "action"); 152ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction endAction = new SliceAction(pi, "toogle action", false); 153ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 154ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 155ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder.RowBuilder rb = new ListBuilder.RowBuilder(lb) 156ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setTitle("a title") 157ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addEndItem(endAction) 158ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setPrimaryAction(primaryAction); 159ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(rb); 160ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 161ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice rowSlice = lb.build(); 162ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata rowInfo = SliceMetadata.from(mContext, rowSlice); 163ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquivalent(primaryAction, rowInfo.getPrimaryAction()); 164ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 165ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 166ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 167ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetPrimaryActionForHeader() { 168ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 169ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 170ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Bitmap b = Bitmap.createBitmap(50, 25, Bitmap.Config.ARGB_8888); 171ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor new Canvas(b).drawColor(0xffff0000); 172decaa736515b8c773842750af79b034964a6ca62Mady Mellor IconCompat icon = IconCompat.createFromIcon(Icon.createWithBitmap(b)); 173ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 174ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction primaryAction = new SliceAction(pi, icon, "action"); 175ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction sliceAction = new SliceAction(pi, "another action", true); 176ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 177ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 178ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addAction(sliceAction); 179ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder.HeaderBuilder hb = new ListBuilder.HeaderBuilder(lb); 180ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor hb.setTitle("header title"); 181ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor hb.setPrimaryAction(primaryAction); 182ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.setHeader(hb); 183ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 184ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice headerSlice = lb.build(); 185ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata headerInfo = SliceMetadata.from(mContext, headerSlice); 186ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquivalent(primaryAction, headerInfo.getPrimaryAction()); 187ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 188ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 189ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 190ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetPrimaryActionNull() { 191ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 192ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 193ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Bitmap b = Bitmap.createBitmap(50, 25, Bitmap.Config.ARGB_8888); 194ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor new Canvas(b).drawColor(0xffff0000); 195decaa736515b8c773842750af79b034964a6ca62Mady Mellor IconCompat icon = IconCompat.createFromIcon(Icon.createWithBitmap(b)); 196ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 197ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction endAction1 = new SliceAction(pi, icon, "action"); 198ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction endAction2 = new SliceAction(pi, "toogle action", false); 199ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 200ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 201ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder.RowBuilder rb = new ListBuilder.RowBuilder(lb) 202ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setTitle("a title") 203ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addEndItem(endAction1) 204ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addEndItem(endAction2); 205ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(rb); 206ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 207ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice rowSlice = lb.build(); 208ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata rowInfo = SliceMetadata.from(mContext, rowSlice); 209ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertNull(rowInfo.getPrimaryAction()); 210ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 211ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 212ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 213ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetHeaderTypeGrid() { 214ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 215ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 216ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 217ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor GridRowBuilder grb = new GridRowBuilder(lb); 218ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb).addText("some text")); 219ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb).addText("some text")); 220ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb).addText("some text")); 221ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addGridRow(grb); 222ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 223ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice gridSlice = lb.build(); 224ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata gridInfo = SliceMetadata.from(mContext, gridSlice); 225ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(EventInfo.ROW_TYPE_GRID, gridInfo.getHeaderType()); 226ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 227ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 228ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 229ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetHeaderTypeRow() { 230ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 231ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 232ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 233ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb).setTitle("a title")); 234ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 235ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice rowSlice = lb.build(); 236ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata rowInfo = SliceMetadata.from(mContext, rowSlice); 237ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(EventInfo.ROW_TYPE_LIST, rowInfo.getHeaderType()); 238ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 239ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 240ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 241ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetHeaderTypeToggle() { 242ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 243ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 244ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 245ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction toggleAction = new SliceAction(pi, "toggle", false /* isChecked */); 246ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 247ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb) 248ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setTitle("another title") 249ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addEndItem(toggleAction)); 250ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 251ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice toggleSlice = lb.build(); 252ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata toggleInfo = SliceMetadata.from(mContext, toggleSlice); 253ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(EventInfo.ROW_TYPE_TOGGLE, toggleInfo.getHeaderType()); 254ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 255ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 256ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 257ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetHeaderTypeSlider() { 258ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 259ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 260ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 261ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 262ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addInputRange(new ListBuilder.InputRangeBuilder(lb) 263ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setTitle("another title") 264ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setValue(5) 265ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setMax(10) 266ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setAction(pi)); 267ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 268ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice sliderSlice = lb.build(); 269ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata sliderInfo = SliceMetadata.from(mContext, sliderSlice); 270ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(EventInfo.ROW_TYPE_SLIDER, sliderInfo.getHeaderType()); 271ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 272ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 273ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 274ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetHeaderTypeProgress() { 275ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 276ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 277ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 278ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRange(new ListBuilder.RangeBuilder(lb) 279ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setTitle("another title") 280ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setValue(5) 281ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setMax(10)); 282ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 283ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice sliderSlice = lb.build(); 284ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata progressInfo = SliceMetadata.from(mContext, sliderSlice); 285ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(EventInfo.ROW_TYPE_PROGRESS, progressInfo.getHeaderType()); 286ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 287ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 288ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 289ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetHeaderTypeHeader() { 290ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 291ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 292ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 293ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder.HeaderBuilder hb = new ListBuilder.HeaderBuilder(lb); 294ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor hb.setTitle("header title"); 295ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.setHeader(hb); 296ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 297ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice headerSlice = lb.build(); 298ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata headerInfo = SliceMetadata.from(mContext, headerSlice); 299ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(EventInfo.ROW_TYPE_LIST, headerInfo.getHeaderType()); 300ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 301ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 302ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 303ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testHasLargeModeFullGrid() { 304ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor // If a grid is "full" with two text and an image there is a different small / large state. 305ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 306ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Bitmap b = Bitmap.createBitmap(50, 25, Bitmap.Config.ARGB_8888); 307ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor new Canvas(b).drawColor(0xffff0000); 308ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Icon icon = Icon.createWithBitmap(b); 309ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 310ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 311ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor GridRowBuilder grb = new GridRowBuilder(lb); 312ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb) 313ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addText("some text") 314ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addText("more text") 315decaa736515b8c773842750af79b034964a6ca62Mady Mellor .addImage(IconCompat.createFromIcon(icon), ICON_IMAGE)); 316ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb) 317ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addText("some text") 318ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addText("more text") 319decaa736515b8c773842750af79b034964a6ca62Mady Mellor .addImage(IconCompat.createFromIcon(icon), ICON_IMAGE)); 320ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb) 321ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addText("some text") 322ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addText("more text") 323decaa736515b8c773842750af79b034964a6ca62Mady Mellor .addImage(IconCompat.createFromIcon(icon), ICON_IMAGE)); 324ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addGridRow(grb); 325ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 326ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice gridSlice = lb.build(); 327ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata gridInfo = SliceMetadata.from(mContext, gridSlice); 328ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertTrue(gridInfo.hasLargeMode()); 329ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 330ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 331ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 332ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testHasLargeModeGrid() { 333ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor // If a grid is not "full" either no image or an image and one text item, small / large 334ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor // is the same. 335ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 336ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 337ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 338ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor GridRowBuilder grb = new GridRowBuilder(lb); 339ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb).addText("some text")); 340ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb).addText("some text")); 341ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor grb.addCell(new GridRowBuilder.CellBuilder(grb).addText("some text")); 342ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addGridRow(grb); 343ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 344ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice gridSlice = lb.build(); 345ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata gridInfo = SliceMetadata.from(mContext, gridSlice); 346ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertTrue(!gridInfo.hasLargeMode()); 347ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 348ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 349ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 350ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetLargeModeMultipleRows() { 351ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 352ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 353ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 354ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb).setTitle("a title")); 355ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb).setTitle("another row another title")); 356ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 357ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice rowSlice = lb.build(); 358ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata rowInfo = SliceMetadata.from(mContext, rowSlice); 359ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertTrue(rowInfo.hasLargeMode()); 360ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 361ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 362ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 363ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetLargeModeSingleRow() { 364ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 365ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 366ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 367ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb).setTitle("a title")); 368ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 369ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice rowSlice = lb.build(); 370ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata rowInfo = SliceMetadata.from(mContext, rowSlice); 371ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertTrue(!rowInfo.hasLargeMode()); 372ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 373ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 374ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 375ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetTogglesNone() { 376ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 377ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 378ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 379ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb).setTitle("a title")); 380ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 381ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice rowSlice = lb.build(); 382ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata rowInfo = SliceMetadata.from(mContext, rowSlice); 383ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertTrue(rowInfo.getToggles().isEmpty()); 384ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 385ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 386ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 387ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetTogglesSingle() { 388ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 389ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 390ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 391ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction toggleAction = new SliceAction(pi, "toggle", false /* isChecked */); 392ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 393ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb) 394ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setTitle("another title") 395ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addEndItem(toggleAction)); 396ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 397ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice toggleSlice = lb.build(); 398ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata toggleInfo = SliceMetadata.from(mContext, toggleSlice); 399ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor List<androidx.slice.core.SliceAction> actualToggles = toggleInfo.getToggles(); 400ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(1, actualToggles.size()); 401ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquivalent(toggleAction, actualToggles.get(0)); 402ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 403ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 404ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 405ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetTogglesMultiple() { 406ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 407ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 408ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Bitmap b = Bitmap.createBitmap(50, 25, Bitmap.Config.ARGB_8888); 409ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor new Canvas(b).drawColor(0xffff0000); 410decaa736515b8c773842750af79b034964a6ca62Mady Mellor IconCompat icon = IconCompat.createFromIcon(Icon.createWithBitmap(b)); 411ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 412ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction toggleAction = new SliceAction(pi, icon, "toggle", false /* isChecked */); 413ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceAction toggleAction2 = new SliceAction(pi, icon, "toggle2", true /* isChecked */); 414ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 415ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 416ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb) 417ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setTitle("another title") 418ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addEndItem(toggleAction) 419ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .addEndItem(toggleAction2)); 420ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 421ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice toggleSlice = lb.build(); 422ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata toggleInfo = SliceMetadata.from(mContext, toggleSlice); 423ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor List<androidx.slice.core.SliceAction> actualToggles = toggleInfo.getToggles(); 424ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 425ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor List<SliceAction> expectedToggles = new ArrayList<>(); 426ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor expectedToggles.add(toggleAction); 427ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor expectedToggles.add(toggleAction2); 428ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 429ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor for (int i = 0; i < expectedToggles.size(); i++) { 430ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquivalent(expectedToggles.get(i), actualToggles.get(i)); 431ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 432ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 433ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 434ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 435ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetRangeNull() { 436ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 437ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 438ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 439ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRow(new ListBuilder.RowBuilder(lb).setTitle("a title")); 440ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 441ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice rowSlice = lb.build(); 442ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata rowInfo = SliceMetadata.from(mContext, rowSlice); 443ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertNull(rowInfo.getRange()); 444ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 445ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 446ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 447ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetRangeForSlider() { 448ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 449ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor PendingIntent pi = getIntent(""); 450ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 451ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 452ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addInputRange(new ListBuilder.InputRangeBuilder(lb) 453ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setTitle("another title") 454ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setValue(5) 455ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setMax(10) 456ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setAction(pi)); 457ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 458ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice sliderSlice = lb.build(); 459ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata sliderInfo = SliceMetadata.from(mContext, sliderSlice); 460ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Pair<Integer, Integer> values = sliderInfo.getRange(); 461ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(5, (int) values.first); 462ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(10, (int) values.second); 463ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 464ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 465ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor @Test 466ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor public void testGetRangeForProgress() { 467ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 468ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 469ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor ListBuilder lb = new ListBuilder(mContext, uri, ListBuilder.INFINITY); 470ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor lb.addRange(new ListBuilder.RangeBuilder(lb) 471ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setTitle("another title") 472ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setValue(5) 473ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor .setMax(10)); 474ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 475ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Slice sliderSlice = lb.build(); 476ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata progressInfo = SliceMetadata.from(mContext, sliderSlice); 477ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Pair<Integer, Integer> values = progressInfo.getRange(); 478ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(5, (int) values.first); 479ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(10, (int) values.second); 480ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 481ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 482ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 483e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor @Test 484e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor public void testKeywords() { 485e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 486e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice keywordSlice = new Slice.Builder(uri) 4870707dbe9fa3225cc921a2305a611272f0dee1ca8Mady Mellor .addHints(HINT_KEYWORDS) 488e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("keyword1", null) 489e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("keyword2", null) 490e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("keyword3", null).build(); 491e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice slice = new Slice.Builder(uri) 492e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("Some text", null, HINT_TITLE) 493e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("Some other text", null) 494e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addSubSlice(keywordSlice) 495e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .build(); 496e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 497ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata SliceMetadata1 = SliceMetadata.from(mContext, slice); 498ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor List<String> sliceKeywords = SliceMetadata1.getSliceKeywords(); 499e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor String[] expectedList = new String[] {"keyword1", "keyword2", "keyword3"}; 500e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertArrayEquals(expectedList, sliceKeywords.toArray()); 501e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 502e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor // Make sure it doesn't find keywords that aren't there 503e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice slice2 = new Slice.Builder(uri) 504e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("Some text", null, HINT_TITLE) 505e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("Some other text", null).build(); 506e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 507ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata SliceMetadata2 = SliceMetadata.from(mContext, slice2); 508ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor List<String> slice2Keywords = SliceMetadata2.getSliceKeywords(); 509e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertNull(slice2Keywords); 510e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 511e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor // Make sure empty list if specified to have no keywords 5120707dbe9fa3225cc921a2305a611272f0dee1ca8Mady Mellor Slice noKeywordSlice = new Slice.Builder(uri).addHints(HINT_KEYWORDS).build(); 513e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice slice3 = new Slice.Builder(uri) 514e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("Some text", null, HINT_TITLE) 515e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addSubSlice(noKeywordSlice) 516e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .build(); 517e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 518e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor SliceMetadata sliceMetadata3 = SliceMetadata.from(mContext, slice3); 519e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor List<String> slice3Keywords = sliceMetadata3.getSliceKeywords(); 520e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertTrue(slice3Keywords.isEmpty()); 521e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor } 522e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 523e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor @Test 524e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor public void testGetLoadingState() { 525e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 526e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice s1 = new Slice.Builder(uri).build(); 527ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata SliceMetadata1 = SliceMetadata.from(mContext, s1); 528ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor int actualState1 = SliceMetadata1.getLoadingState(); 529e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertEquals(LOADED_NONE, actualState1); 530e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 531e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice s2 = new Slice.Builder(uri).addText(null, null, HINT_PARTIAL).build(); 532ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata SliceMetadata2 = SliceMetadata.from(mContext, s2); 533ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor int actualState2 = SliceMetadata2.getLoadingState(); 534e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertEquals(LOADED_PARTIAL, actualState2); 535e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 536e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice s3 = new Slice.Builder(uri).addText("Text", null).build(); 537ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor SliceMetadata SliceMetadata3 = SliceMetadata.from(mContext, s3); 538ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor int actualState3 = SliceMetadata3.getLoadingState(); 539e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertEquals(LOADED_ALL, actualState3); 540e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor } 541e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 542e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor @Test 543e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor public void testGetExpiry() { 544e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 545e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor long timestamp = System.currentTimeMillis(); 546e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor long ttl = TimeUnit.DAYS.toMillis(1); 547e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice ttlSlice = new Slice.Builder(uri) 548e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("Some text", null) 549e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addTimestamp(timestamp, null) 550e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addTimestamp(timestamp, null, SliceHints.HINT_LAST_UPDATED) 551e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addTimestamp(ttl, null, SliceHints.HINT_TTL) 552e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .build(); 553e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 554e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor SliceMetadata si1 = SliceMetadata.from(mContext, ttlSlice); 555e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor long retrievedTtl = si1.getExpiry(); 556e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertEquals(ttl, retrievedTtl); 557e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 558e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice noTtlSlice = new Slice.Builder(uri) 559e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("Some text", null) 560e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addTimestamp(timestamp, null).build(); 561e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor SliceMetadata si2 = SliceMetadata.from(mContext, noTtlSlice); 562e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor long retrievedTtl2 = si2.getExpiry(); 563e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertEquals(0, retrievedTtl2); 564e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor } 565e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 566e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor @Test 567e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor public void testGetLastUpdated() { 568e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Uri uri = Uri.parse("content://pkg/slice"); 569e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor long timestamp = System.currentTimeMillis(); 570e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor long ttl = TimeUnit.DAYS.toMillis(1); 571e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice ttlSlice = new Slice.Builder(uri) 572e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("Some text", null) 573e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addTimestamp(timestamp - 20, null) 574e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addTimestamp(timestamp, null, SliceHints.HINT_LAST_UPDATED) 575e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addTimestamp(ttl, null, SliceHints.HINT_TTL) 576e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .build(); 577e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 578e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor SliceMetadata si1 = SliceMetadata.from(mContext, ttlSlice); 579e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor long retrievedLastUpdated = si1.getLastUpdatedTime(); 580e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertEquals(timestamp, retrievedLastUpdated); 581e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 582e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor Slice noTtlSlice = new Slice.Builder(uri) 583e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addText("Some text", null) 584e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor .addTimestamp(timestamp, null).build(); 585e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor 586e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor SliceMetadata si2 = SliceMetadata.from(mContext, noTtlSlice); 587e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor long retrievedLastUpdated2 = si2.getLastUpdatedTime(); 588e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor assertEquals(0, retrievedLastUpdated2); 589e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor } 590ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 591ac7a30acc7b945a83e70f94375a172acc16e2e7dMady Mellor @Test 592ac7a30acc7b945a83e70f94375a172acc16e2e7dMady Mellor public void testIsPermissionSlice() { 593ac7a30acc7b945a83e70f94375a172acc16e2e7dMady Mellor Uri uri = Uri.parse("content://pkg/slice"); 594ac7a30acc7b945a83e70f94375a172acc16e2e7dMady Mellor Slice permissionSlice = 5959399b1430f150241bd4ddbd89b78f3c352420f09Jason Monk SliceProvider.createPermissionSlice(mContext, uri, mContext.getPackageName()); 596ac7a30acc7b945a83e70f94375a172acc16e2e7dMady Mellor 597ac7a30acc7b945a83e70f94375a172acc16e2e7dMady Mellor SliceMetadata metadata = SliceMetadata.from(mContext, permissionSlice); 598ac7a30acc7b945a83e70f94375a172acc16e2e7dMady Mellor assertEquals(true, metadata.isPermissionSlice()); 599ac7a30acc7b945a83e70f94375a172acc16e2e7dMady Mellor } 600ac7a30acc7b945a83e70f94375a172acc16e2e7dMady Mellor 601ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor private PendingIntent getIntent(String action) { 602ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor Intent intent = new Intent(action); 603ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor intent.setClassName(mContext.getPackageName(), SliceRenderActivity.class.getName()); 604ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor return PendingIntent.getActivity(mContext, 0, intent, 0); 605ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 606ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor 607ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor private void assertEquivalent(androidx.slice.core.SliceAction desired, 608ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor androidx.slice.core.SliceAction actual) { 609ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(desired.getTitle(), actual.getTitle()); 610ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(desired.getContentDescription(), actual.getContentDescription()); 611ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(desired.isToggle(), actual.isToggle()); 612ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(desired.isDefaultToggle(), actual.isDefaultToggle()); 613ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(desired.isChecked(), actual.isChecked()); 614ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(desired.getPriority(), actual.getPriority()); 615ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(desired.getIcon() == null, actual.getIcon() == null); 616ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor assertEquals(desired.getImageMode(), actual.getImageMode()); 617ca12087a732c2e40be512a8d9d25e0aec8bf92d8Mady Mellor } 618e7f1c6cf75ce36c633075445bd676572a9fe0f47Mady Mellor} 619