// Copyright (c) 2012 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.

// API for integration testing. To be used on test images with a test component
// extension.
[nodoc] namespace autotestPrivate {

  dictionary LoginStatusDict {
    // Are we logged in?
    boolean isLoggedIn;
    // Is the logged-in user the owner?
    boolean isOwner;
    // Is the screen locked?
    boolean isScreenLocked;

    // Is the logged-in user a regular user?
    boolean isRegularUser;
    // Are we logged into the guest account?
    boolean isGuest;
    // Are we logged into kiosk-app mode?
    boolean isKiosk;

    DOMString email;
    DOMString displayEmail;
    // User image: 'file', 'profile' or a number.
    DOMString userImage;
  };
  callback LoginStatusCallback = void (LoginStatusDict status);

  dictionary ExtensionInfoDict {
    DOMString id;
    DOMString version;
    DOMString name;
    DOMString publicKey;
    DOMString description;
    DOMString backgroundUrl;
    DOMString optionsUrl;

    DOMString[] hostPermissions;
    DOMString[] effectiveHostPermissions;
    DOMString[] apiPermissions;

    boolean isComponent;
    boolean isInternal;
    boolean isUserInstalled;
    boolean isEnabled;
    boolean allowedInIncognito;
    boolean hasPageAction;
  };
  dictionary ExtensionsInfoArray {
    ExtensionInfoDict[] extensions;
  };
  callback ExtensionsInfoCallback = void (ExtensionsInfoArray info);

  interface Functions {
    // Logout of a user session.
    static void logout();

    // Restart the browser.
    static void restart();

    // Shutdown the browser.
    // |force|: if set, ignore ongoing downloads and onunbeforeunload handlers.
    static void shutdown(boolean force);

    // Get login status.
    static void loginStatus(LoginStatusCallback callback);

    // Locks the screen.
    static void lockScreen();

    // Get info about installed extensions.
    static void getExtensionsInfo(ExtensionsInfoCallback callback);

    // Simulates a memory access bug for asan testing.
    static void simulateAsanMemoryBug();
  };
};