diff options
Diffstat (limited to '')
-rw-r--r-- | widget/nsIJumpListItem.idl | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/widget/nsIJumpListItem.idl b/widget/nsIJumpListItem.idl new file mode 100644 index 0000000000..5524c7f078 --- /dev/null +++ b/widget/nsIJumpListItem.idl @@ -0,0 +1,136 @@ +/* -*- 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 nsIURI; +interface nsILocalHandlerApp; +interface nsIMutableArray; + +/** + * Implements Win7 Taskbar jump list item interfaces. + * + * Note to consumers: it's reasonable to expect we'll need support for other types + * of jump list items (an audio file, an email message, etc.). To add types, + * create the specific interface here, add an implementation class to WinJumpListItem, + * and add support to addListBuild & removed items processing. + * + */ + +[scriptable, uuid(ACB8FB3C-E1B0-4044-8A50-E52C3E7C1057)] +interface nsIJumpListItem : nsISupports +{ + const short JUMPLIST_ITEM_EMPTY = 0; // Empty list item + const short JUMPLIST_ITEM_SEPARATOR = 1; // Separator + const short JUMPLIST_ITEM_LINK = 2; // Web link item + const short JUMPLIST_ITEM_SHORTCUT = 3; // Application shortcut + + /** + * Retrieves the jump list item type. + */ + readonly attribute short type; + + /** + * Compare this item to another. + * + * Compares the type and other properties specific to this item's + * type. + * + * separator: type + * link: type, uri, title + * shortcut: type, handler app + */ + boolean equals(in nsIJumpListItem item); +}; + +/** + * A menu separator. + */ + +[scriptable, uuid(69A2D5C5-14DC-47da-925D-869E0BD64D27)] +interface nsIJumpListSeparator : nsIJumpListItem +{ + /* nothing needed here */ +}; + +/** + * A URI link jump list item. + * + * Note the application must be the registered protocol + * handler for the protocol of the link. + */ + +[scriptable, uuid(76EA47B1-C797-49b3-9F18-5E740A688524)] +interface nsIJumpListLink : nsIJumpListItem +{ + /** + * Set or get the uri for this link item. + */ + attribute nsIURI uri; + + /** + * Set or get the title for a link item. + */ + attribute AString uriTitle; + + /** + * Get a 'privacy safe' unique string hash of the uri's + * spec. Useful in tracking removed items using visible + * data stores such as prefs. Generates an MD5 hash of + * the URI spec using nsICryptoHash. + */ + readonly attribute ACString uriHash; + + /** + * Compare this item's hash to another uri. + * + * Generates a spec hash of the incoming uri and compares + * it to this item's uri spec hash. + */ + boolean compareHash(in nsIURI uri); +}; + +/** + * A generic application shortcut with command line support. + */ + +[scriptable, uuid(CBE3A37C-BCE1-4fec-80A5-5FFBC7F33EEA)] +interface nsIJumpListShortcut : nsIJumpListItem +{ + /** + * Set or get the handler app for this shortcut item. + * + * The handler app may also be used along with iconIndex to generate an icon + * for the jump list item. + * + * @throw NS_ERROR_FILE_NOT_FOUND if the handler app can + * not be found on the system. + * + * @see faviconPageUri + */ + attribute nsILocalHandlerApp app; + + /** + * Set or get the icon displayed with the jump list item. + * + * Indicates the resource index of the icon contained within the handler + * executable which may be used as the jump list icon. + * + * @see faviconPageUri + */ + attribute long iconIndex; + + /** + * Set or get the URI of a page whose favicon may be used as the icon. + * + * When a jump list build occurs, the favicon to be used for the item is + * obtained using the following steps: + * - First, attempt to use the asynchronously retrieved and scaled favicon + * associated with the faviconPageUri. + * - If faviconPageUri is null, or if retrieving the favicon fails, fall + * back to using the handler executable and iconIndex. + */ + attribute nsIURI faviconPageUri; +}; |