1914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal/*
2ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikas * Copyright 2018 The Android Open Source Project
3914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal *
4914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * Licensed under the Apache License, Version 2.0 (the "License");
5914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * you may not use this file except in compliance with the License.
6914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * You may obtain a copy of the License at
7914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal *
8914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal *      http://www.apache.org/licenses/LICENSE-2.0
9914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal *
10914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * Unless required by applicable law or agreed to in writing, software
11914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * distributed under the License is distributed on an "AS IS" BASIS,
12914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * See the License for the specific language governing permissions and
14914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * limitations under the License.
15914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal */
16914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.browser.customtabs;
18914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
19914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysalimport android.net.Uri;
20914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysalimport android.os.Bundle;
21914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
22914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysalimport java.util.List;
23914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
24914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal/**
25914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * A test class that simulates how a {@link CustomTabsService} would behave.
26914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal */
27914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
28914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysalpublic class TestCustomTabsService extends CustomTabsService {
29914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    public static final String CALLBACK_BIND_TO_POST_MESSAGE = "BindToPostMessageService";
30914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    private boolean mPostMessageRequested;
31914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    private CustomTabsSessionToken mSession;
32914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
33914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    @Override
34914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    protected boolean warmup(long flags) {
35914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        return false;
36914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    }
37914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
38914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    @Override
39914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    protected boolean newSession(CustomTabsSessionToken sessionToken) {
40914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        mSession = sessionToken;
41914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        return true;
42914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    }
43914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
44914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    @Override
45914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    protected boolean mayLaunchUrl(CustomTabsSessionToken sessionToken,
46914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal                                   Uri url, Bundle extras, List<Bundle> otherLikelyBundles) {
47914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        return false;
48914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    }
49914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
50914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    @Override
51914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    protected Bundle extraCommand(String commandName, Bundle args) {
52914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        return null;
53914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    }
54914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
55914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    @Override
56914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    protected boolean updateVisuals(CustomTabsSessionToken sessionToken, Bundle bundle) {
57914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        return false;
58914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    }
59914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
60914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    @Override
61914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    protected boolean requestPostMessageChannel(
62914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal            CustomTabsSessionToken sessionToken, Uri postMessageOrigin) {
63914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        if (mSession == null) return false;
64914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        mPostMessageRequested = true;
65914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        mSession.getCallback().extraCallback(CALLBACK_BIND_TO_POST_MESSAGE, null);
66914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        return true;
67914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    }
68914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal
69914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    @Override
70914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    protected int postMessage(CustomTabsSessionToken sessionToken, String message, Bundle extras) {
71914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        if (!mPostMessageRequested) return CustomTabsService.RESULT_FAILURE_DISALLOWED;
72914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal        return CustomTabsService.RESULT_SUCCESS;
73914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal    }
7493745fc87a8e47b63731b5cb7eba57621b007404Benoît Lizé
7593745fc87a8e47b63731b5cb7eba57621b007404Benoît Lizé    @Override
7693745fc87a8e47b63731b5cb7eba57621b007404Benoît Lizé    protected boolean validateRelationship(CustomTabsSessionToken sessionToken,
7793745fc87a8e47b63731b5cb7eba57621b007404Benoît Lizé                                           @Relation int relation, Uri origin, Bundle extras) {
7893745fc87a8e47b63731b5cb7eba57621b007404Benoît Lizé        return false;
7993745fc87a8e47b63731b5cb7eba57621b007404Benoît Lizé    }
80914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal}
81