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

// Simplified implementation of the <code>chrome.identity</code> for app_shell.
namespace identity {

  dictionary GetAuthTokenDetails {
    // Ignored parameter. Exists only for compatibility.
    boolean? interactive;
  };

  dictionary InvalidTokenDetails {
    // Ignored parameter. Exists only for compatibility.
    DOMString? token;
  };

  // Called with the OAuth2 access token on success or undefined on error.
  callback GetAuthTokenCallback = void (optional DOMString token);
  
  // Called by removeCachedAuthToken().
  callback InvalidateAuthTokenCallback = void ();

  interface Functions {
    // Returns an OAuth2 access token for the current app_shell user for scopes
    // from the manifest. Does not prompt the user. 
    static void getAuthToken(GetAuthTokenDetails options,
                             GetAuthTokenCallback callback);

    // Stub. Calls callback immediately because app_shell does not cache access
    // tokens the way Chrome does.
    static void removeCachedAuthToken(InvalidTokenDetails details,
                                      InvalidateAuthTokenCallback callback);
  };

  interface Events {
    // Stub. Never fired because app_shell only supports a single user account.
    static void onSignInChanged(object account, boolean signedIn);
  };
};
