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