widget/nsITaskbarPreview.idl
author Rob Wu <rob@robwu.nl>
Sat, 24 Sep 2016 11:16:32 +0200
changeset 320058 a41f871e2d1b37754bbd1001c36c075511b49342
parent 94475 f4157e8c410708d76703f19e4dfb61859bfe32d8
permissions -rw-r--r--
Bug 1299411 - Decouple Port implementation from API r=aswan Decoupled the API from the implementation. From now on it is possible to create Port instances without generating an API. This allows us to internally use Ports to pass around messages with minimal overhead (in the form of unnecessary clones of messages). This will be used by native messaging. This commit has no behavioral change, it is mostly moving around some code and storing the internal message listener in a set. MozReview-Commit-ID: 4h0LNJvTH9R

/* 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"
#include "nsIBaseWindow.idl"

interface nsITaskbarPreviewController;

/**
 * nsITaskbarPreview
 *
 * Common interface for both window and tab taskbar previews. This interface
 * cannot be instantiated directly.
 *
 */
[scriptable, uuid(CBFDF766-D002-403B-A3D9-B091C9AD465B)]
interface nsITaskbarPreview : nsISupports
{
  /**
   * The controller for this preview. A controller is required to provide
   * the behavior and appearance of the taskbar previews. It is responsible for
   * determining the size and contents of the preview, which buttons are
   * displayed and how the application responds to user actions on the preview.
   *
   * Neither preview makes full use of the controller. See the documentation
   * for nsITaskbarWindowPreview and nsITaskbarTabPreview for details on which
   * controller methods are used.
   *
   * The controller is not allowed to be null.
   *
   * @see nsITaskbarPreviewController
   */
  attribute nsITaskbarPreviewController controller;

  /**
   * The tooltip displayed above the preview when the user hovers over it
   *
   * Default: an empty string
   */
  attribute DOMString tooltip;

  /**
   * Whether or not the preview is visible.
   *
   * Changing this option is expensive for tab previews since toggling this
   * option will destroy/create the proxy window and its registration with the
   * taskbar. If any step of that fails, an exception will be thrown.
   *
   * For window previews, this operation is very cheap.
   *
   * Default: false
   */
  attribute boolean visible;

  /**
   * Gets/sets whether or not the preview is marked active (selected) in the
   * taskbar.
   */
  attribute boolean active;

  /**
   * Invalidates the taskbar's cached image of this preview, forcing a redraw
   * if necessary
   */
  void invalidate();
};