108889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal/* 208889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * Copyright (C) 2015 The Android Open Source Project 308889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * 408889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * Licensed under the Apache License, Version 2.0 (the "License"); 508889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * you may not use this file except in compliance with the License. 608889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * You may obtain a copy of the License at 708889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * 808889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * http://www.apache.org/licenses/LICENSE-2.0 908889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * 1008889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * Unless required by applicable law or agreed to in writing, software 1108889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * distributed under the License is distributed on an "AS IS" BASIS, 1208889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1308889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * See the License for the specific language governing permissions and 1408889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * limitations under the License. 1508889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal */ 1608889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal 1708889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysalpackage android.support.customtabs; 1808889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal 1908889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysalimport android.os.Bundle; 2008889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal 2108889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal/** 22914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * A callback class for custom tabs client to get messages regarding events in their custom tabs. In 23914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * the implementation, all callbacks are sent to the UI thread for the client. 2408889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal */ 2508889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysalpublic class CustomTabsCallback { 2608889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal /** 2708889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * Sent when the tab has started loading a page. 2808889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal */ 2908889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal public static final int NAVIGATION_STARTED = 1; 3008889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal 3108889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal /** 3208889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * Sent when the tab has finished loading a page. 3308889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal */ 3408889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal public static final int NAVIGATION_FINISHED = 2; 3508889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal 3608889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal /** 378a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal * Sent when the tab couldn't finish loading due to a failure. 388a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal */ 398a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal public static final int NAVIGATION_FAILED = 3; 408a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal 418a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal /** 428a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal * Sent when loading was aborted by a user action before it finishes like clicking on a link 438a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal * or refreshing the page. 448a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal */ 458a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal public static final int NAVIGATION_ABORTED = 4; 468a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal 478a1ccd14081000d6501622de72a16da67c33030cYusuf Ozuysal /** 489440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal * Sent when the tab becomes visible. 499440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal */ 509440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal public static final int TAB_SHOWN = 5; 519440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal 529440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal /** 539440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal * Sent when the tab becomes hidden. 549440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal */ 559440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal public static final int TAB_HIDDEN = 6; 569440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal 579440f0b000fc2740382eb4ae5f1afec58c245c2cYusuf Ozuysal /** 5808889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * To be called when a navigation event happens. 5908889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * 6008889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * @param navigationEvent The code corresponding to the navigation event. 6108889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * @param extras Reserved for future use. 6208889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal */ 6308889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal public void onNavigationEvent(int navigationEvent, Bundle extras) {} 64689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize 65689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize /** 66689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * Unsupported callbacks that may be provided by the implementation. 67689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * 68689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * <p> 69689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * <strong>Note:</strong>Clients should <strong>never</strong> rely on this callback to be 70689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * called and/or to have a defined behavior, as it is entirely implementation-defined and not 71689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * supported. 72689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * 73689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * <p> This can be used by implementations to add extra callbacks, for testing or experimental 74689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * purposes. 75689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * 76689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * @param callbackName Name of the extra callback. 77689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize * @param args Arguments for the calback 78689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize */ 79689e91d33a4c181f0fe529adcf765930ea8907e0Benoit Lize public void extraCallback(String callbackName, Bundle args) {} 80914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal 81914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal /** 82914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * Called when {@link CustomTabsSession} has requested a postMessage channel through 83914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * {@link CustomTabsService#requestPostMessageChannel( 84914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * CustomTabsSessionToken, android.net.Uri)} and the channel 85914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * is ready for sending and receiving messages on both ends. 86914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * 87914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * @param extras Reserved for future use. 88914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal */ 89914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal public void onMessageChannelReady(Bundle extras) {} 90914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal 91914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal /** 92914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * Called when a tab controlled by this {@link CustomTabsSession} has sent a postMessage. 93914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * If postMessage() is called from a single thread, then the messages will be posted in the 94914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * same order. When received on the client side, it is the client's responsibility to preserve 95914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * the ordering further. 96914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * 97914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * @param message The message sent. 98914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal * @param extras Reserved for future use. 99914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal */ 100914073c7cf933229a3f51ddeddb63bb9725a70beYusuf Ozuysal public void onPostMessage(String message, Bundle extras) {} 10108889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal} 102