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.content.ComponentName;
2008889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysalimport android.content.ServiceConnection;
2108889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysalimport android.os.IBinder;
2208889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal
2308889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal/**
2408889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * Abstract {@link ServiceConnection} to use while binding to a {@link CustomTabsService}. Any
2508889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * client implementing this is responsible for handling changes related with the lifetime of the
2608889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal * connection like rebinding on disconnect.
2708889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal */
2808889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysalpublic abstract class CustomTabsServiceConnection implements ServiceConnection {
2908889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal
3008889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal    @Override
3108889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal    public final void onServiceConnected(ComponentName name, IBinder service) {
3208889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal        onCustomTabsServiceConnected(name, new CustomTabsClient(
3308889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal                ICustomTabsService.Stub.asInterface(service), name) {
3408889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal        });
3508889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal    }
3608889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal
3708889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal    /**
3808889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal     * Called when a connection to the {@link CustomTabsService} has been established.
3908889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal     * @param name   The concrete component name of the service that has been connected.
4008889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal     * @param client {@link CustomTabsClient} that contains the {@link IBinder} with which the
4108889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal     *               connection have been established. All further communication should be initiated
4208889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal     *               using this client.
4308889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal     */
4408889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal    public abstract void onCustomTabsServiceConnected(ComponentName name, CustomTabsClient client);
4508889acbc842c73b64f94a761910154d9d42ee4cYusuf Ozuysal}
46