widget/nsITaskbarPreviewController.idl
author Brindusan Cristian <cbrindusan@mozilla.com>
Tue, 05 Mar 2019 22:42:15 +0200
changeset 520316 be4b780a7783cdf7d3ead37c98917dc0d2e94a1d
parent 422737 87b6163f38794046591bb5265f8f31cefbef7d3d
permissions -rw-r--r--
Backed out 5 changesets (bug 1508976, bug 1522581) for android geckoview bustages at /usr/bin/python2.7. CLOSED TREE Backed out changeset 7a6be593b0be (bug 1522581) Backed out changeset c47b37ac1775 (bug 1522581) Backed out changeset 91c31d2a7706 (bug 1508976) Backed out changeset da57df805c56 (bug 1508976) Backed out changeset 4e5d97c93515 (bug 1508976)

/* vim: se cin sw=2 ts=2 et : */
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIDocShell;
interface nsITaskbarPreview;
interface nsITaskbarPreviewButton;

/**
 * nsITaskbarPreviewCallback
 *
 * Provides an interface for async image result callbacks. See
 * nsITaskbarPreviewController request apis below.
 */
[scriptable, function, uuid(f3744696-320d-4804-9c27-6a84c29acaa6)]
interface nsITaskbarPreviewCallback : nsISupports
{
  void done(in nsISupports aCanvas, in boolean aDrawBorder);
};

/**
 * nsITaskbarPreviewController
 *
 * nsITaskbarPreviewController provides the behavior for the taskbar previews.
 * Its methods and properties are used by nsITaskbarPreview. Clients are
 * intended to provide their own implementation of this interface. Depending on
 * the interface the controller is attached to, only certain methods/attributes
 * are required to be implemented.
 */
[scriptable, uuid(8b427646-e446-4941-ae0b-c1122a173a68)]
interface nsITaskbarPreviewController : nsISupports
{
  /**
   * The width of the preview image. This value is allowed to change at any
   * time. See requestPreview for more information.
   */
  readonly attribute unsigned long width;

  /**
   * The height of the preview image. This value is allowed to change at any
   * time.  See requestPreview for more information.
   */
  readonly attribute unsigned long height;

  /**
   * The aspect ratio of the thumbnail - this does not need to match the ratio
   * of the preview. This value is allowed to change at any time. See
   * requestThumbnail for more information.
   */
  readonly attribute float thumbnailAspectRatio;

  /**
   * Invoked by nsITaskbarPreview when it needs to render the preview.
   *
   * @param aCallback Async callback the controller should invoke once
   * the thumbnail is rendered. aCallback receives as its only parameter
   * a canvas containing the preview image.
   */
  void requestPreview(in nsITaskbarPreviewCallback aCallback);

  /**
   * Note: it is guaranteed that width/height == thumbnailAspectRatio
   * (modulo rounding errors)
   *
   * Also note that the context is not attached to a canvas element.
   *
   * @param aCallback Async callback the controller should invoke once
   * the thumbnail is rendered. aCallback receives as its only parameter
   * a canvas containing the thumbnail image. Canvas dimensions should
   * match the requested width or height otherwise setting the thumbnail
   * will fail.
   * @param width The width of the requested thumbnail
   * @param height The height of the requested thumbnail
   */
  void requestThumbnail(in nsITaskbarPreviewCallback aCallback,
                        in unsigned long width, in unsigned long height);

  /**
   * Invoked when the user presses the close button on the tab preview.
   */
  void onClose();

  /**
   * Invoked when the user clicks on the tab preview.
   *
   * @return true if the top level window corresponding to the preview should
   *         be activated, false if activation is not accepted.
   */
  boolean onActivate();

  /**
   * Invoked when one of the buttons on the window preview's toolbar is pressed.
   *
   * @param button The button that was pressed. This can be compared with the
   *               buttons returned by nsITaskbarWindowPreview.getButton.
   */
  void onClick(in nsITaskbarPreviewButton button);
};