16fa0c9b0875cd65066082d047f617d689fd92018Jason Monk/*
26fa0c9b0875cd65066082d047f617d689fd92018Jason Monk * Copyright 2017 The Android Open Source Project
36fa0c9b0875cd65066082d047f617d689fd92018Jason Monk *
46fa0c9b0875cd65066082d047f617d689fd92018Jason Monk * Licensed under the Apache License, Version 2.0 (the "License");
56fa0c9b0875cd65066082d047f617d689fd92018Jason Monk * you may not use this file except in compliance with the License.
66fa0c9b0875cd65066082d047f617d689fd92018Jason Monk * You may obtain a copy of the License at
76fa0c9b0875cd65066082d047f617d689fd92018Jason Monk *
86fa0c9b0875cd65066082d047f617d689fd92018Jason Monk *      http://www.apache.org/licenses/LICENSE-2.0
96fa0c9b0875cd65066082d047f617d689fd92018Jason Monk *
106fa0c9b0875cd65066082d047f617d689fd92018Jason Monk * Unless required by applicable law or agreed to in writing, software
116fa0c9b0875cd65066082d047f617d689fd92018Jason Monk * distributed under the License is distributed on an "AS IS" BASIS,
126fa0c9b0875cd65066082d047f617d689fd92018Jason Monk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136fa0c9b0875cd65066082d047f617d689fd92018Jason Monk * See the License for the specific language governing permissions and
146fa0c9b0875cd65066082d047f617d689fd92018Jason Monk * limitations under the License.
156fa0c9b0875cd65066082d047f617d689fd92018Jason Monk */
166fa0c9b0875cd65066082d047f617d689fd92018Jason Monk
1785ef1446b82c8783a50af92c4cb1389fe0d0e907Aurimas Liutikaspackage androidx.slice;
186fa0c9b0875cd65066082d047f617d689fd92018Jason Monk
196fa0c9b0875cd65066082d047f617d689fd92018Jason Monkimport static android.app.slice.Slice.HINT_LARGE;
206fa0c9b0875cd65066082d047f617d689fd92018Jason Monkimport static android.app.slice.Slice.HINT_LIST;
216fa0c9b0875cd65066082d047f617d689fd92018Jason Monkimport static android.app.slice.Slice.HINT_NO_TINT;
226fa0c9b0875cd65066082d047f617d689fd92018Jason Monkimport static android.app.slice.Slice.HINT_TITLE;
236fa0c9b0875cd65066082d047f617d689fd92018Jason Monk
246fa0c9b0875cd65066082d047f617d689fd92018Jason Monkimport android.app.PendingIntent;
256fa0c9b0875cd65066082d047f617d689fd92018Jason Monkimport android.content.Intent;
266fa0c9b0875cd65066082d047f617d689fd92018Jason Monkimport android.net.Uri;
276fa0c9b0875cd65066082d047f617d689fd92018Jason Monk
283ec422a2e2a46b51d4cc6926fcaa35caacbdf98dJason Monkimport androidx.core.graphics.drawable.IconCompat;
2985ef1446b82c8783a50af92c4cb1389fe0d0e907Aurimas Liutikasimport androidx.slice.Slice.Builder;
3085ef1446b82c8783a50af92c4cb1389fe0d0e907Aurimas Liutikasimport androidx.slice.core.test.R;
316fa0c9b0875cd65066082d047f617d689fd92018Jason Monk
3285ef1446b82c8783a50af92c4cb1389fe0d0e907Aurimas Liutikaspublic class SliceTestProvider extends androidx.slice.SliceProvider {
336fa0c9b0875cd65066082d047f617d689fd92018Jason Monk
346fa0c9b0875cd65066082d047f617d689fd92018Jason Monk    @Override
356fa0c9b0875cd65066082d047f617d689fd92018Jason Monk    public boolean onCreateSliceProvider() {
362e60beb64db1e59890f6a0674a93963e36629b6eJason Monk        getContext().getPackageName();
376fa0c9b0875cd65066082d047f617d689fd92018Jason Monk        return true;
386fa0c9b0875cd65066082d047f617d689fd92018Jason Monk    }
396fa0c9b0875cd65066082d047f617d689fd92018Jason Monk
406fa0c9b0875cd65066082d047f617d689fd92018Jason Monk    @Override
416fa0c9b0875cd65066082d047f617d689fd92018Jason Monk    public Slice onBindSlice(Uri sliceUri) {
426fa0c9b0875cd65066082d047f617d689fd92018Jason Monk        switch (sliceUri.getPath()) {
436fa0c9b0875cd65066082d047f617d689fd92018Jason Monk            case "/set_flag":
446fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                SliceTest.sFlag = true;
456fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                break;
466fa0c9b0875cd65066082d047f617d689fd92018Jason Monk            case "/subslice":
476fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                Builder b = new Builder(sliceUri);
486fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                return b.addSubSlice(new Slice.Builder(b).build(), "subslice").build();
496fa0c9b0875cd65066082d047f617d689fd92018Jason Monk            case "/text":
506fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                return new Slice.Builder(sliceUri).addText("Expected text", "text").build();
516fa0c9b0875cd65066082d047f617d689fd92018Jason Monk            case "/icon":
526fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                return new Slice.Builder(sliceUri).addIcon(
533ec422a2e2a46b51d4cc6926fcaa35caacbdf98dJason Monk                        IconCompat.createWithResource(getContext(), R.drawable.size_48x48),
546fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                        "icon").build();
556fa0c9b0875cd65066082d047f617d689fd92018Jason Monk            case "/action":
566fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                Builder builder = new Builder(sliceUri);
576fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                Slice subSlice = new Slice.Builder(builder).build();
586fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                PendingIntent broadcast = PendingIntent.getBroadcast(getContext(), 0,
596fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                        new Intent(getContext().getPackageName() + ".action"), 0);
606fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                return builder.addAction(broadcast, subSlice, "action").build();
6198ae4f80b7244070c20d5c3a16245df5cd0c5df8Jason Monk            case "/int":
6298ae4f80b7244070c20d5c3a16245df5cd0c5df8Jason Monk                return new Slice.Builder(sliceUri).addInt(0xff121212, "int").build();
636fa0c9b0875cd65066082d047f617d689fd92018Jason Monk            case "/timestamp":
646fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                return new Slice.Builder(sliceUri).addTimestamp(43, "timestamp").build();
656fa0c9b0875cd65066082d047f617d689fd92018Jason Monk            case "/hints":
666fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                return new Slice.Builder(sliceUri)
676fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                        .addHints(HINT_LIST)
686fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                        .addText("Text", null, HINT_TITLE)
693ec422a2e2a46b51d4cc6926fcaa35caacbdf98dJason Monk                        .addIcon(IconCompat.createWithResource(getContext(), R.drawable.size_48x48),
706fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                                null, HINT_NO_TINT, HINT_LARGE)
716fa0c9b0875cd65066082d047f617d689fd92018Jason Monk                        .build();
726fa0c9b0875cd65066082d047f617d689fd92018Jason Monk        }
736fa0c9b0875cd65066082d047f617d689fd92018Jason Monk        return new Slice.Builder(sliceUri).build();
746fa0c9b0875cd65066082d047f617d689fd92018Jason Monk    }
756fa0c9b0875cd65066082d047f617d689fd92018Jason Monk
766fa0c9b0875cd65066082d047f617d689fd92018Jason Monk}
77