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