// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.chrome.browser.gcore;

/**
 * Client used to communicate with GmsCore using Google API. Meant to be
 * used in a synchronous way with {@link ConnectedTask}.
 */
public interface ChromeGoogleApiClient {
    /**
     * Connects the GMS Core client.
     * Does nothing if the client is already connected.
     * @param timeoutMillis after which connection is considered unsuccessful
     * @return whether connection was successful
     */
    boolean connectWithTimeout(long timeoutMillis);

    /**
     * Disconnects client.
     * Can be safely called on disconnected clients. It will then just clear the queued calls
     * submitted since the last disconnection.
     */
    void disconnect();

    /**
     * Checks if Google Play Services are available.
     */
    boolean isGooglePlayServicesAvailable();
}
