UNPKG

tern-def-tbext

Version:

tern definition file for Thunderbird Extension.

1 lines 116 kB
{"!name":"tbext","!define":{"accounts.MailAccount":{"!doc":"An object describing a mail account, as returned for example by the :ref:`accounts.list` and :ref:`accounts.get` methods. The ``folders`` property is only included if requested.","id":{"!doc":"A unique identifier for this account.","!type":"string"},"name":{"!doc":"The human-friendly name of this account.","!type":"string"},"type":{"!doc":"What sort of account this is, e.g. ``imap``, ``nntp``, or ``pop3``.","!type":"string"},"folders":{"!doc":"The folders for this account are only included if requested.","!type":"[+folders.MailFolder]"},"identities":{"!doc":"The identities associated with this account. The default identity is listed first, others in no particular order.","!type":"[+identities.MailIdentity]"}},"addressBooks.NodeType":{"!doc":"Indicates the type of a Node, which can be one of <code>addressBook</code>, <code>contact</code>, or <code>mailingList</code>.","!type":"string"},"addressBooks.AddressBookNode":{"!doc":"A node representing an address book.","id":{"!doc":"The unique identifier for the node. IDs are unique within the current profile, and they remain valid even after the program is restarted.","!type":"string"},"parentId":{"!doc":"The <code>id</code> of the parent object.","!type":"string"},"type":{"!doc":"Always set to <code>addressBook</code>.","!type":"+addressBooks.NodeType"},"readOnly":{"!doc":"Indicates if the object is read-only.","!type":"bool"},"remote":{"!doc":"Indicates if the address book is accessed via remote look-up.","!type":"bool"},"name":{"!type":"string"},"contacts":{"!doc":"A list of contacts held by this node's address book or mailing list.","!type":"[+contacts.ContactNode]"},"mailingLists":{"!doc":"A list of mailingLists in this node's address book.","!type":"[+mailingLists.MailingListNode]"}},"contacts.ContactNode":{"!doc":"A node representing a contact in an address book.","id":{"!doc":"The unique identifier for the node. IDs are unique within the current profile, and they remain valid even after the program is restarted.","!type":"string"},"parentId":{"!doc":"The <code>id</code> of the parent object.","!type":"string"},"type":{"!doc":"Always set to <code>contact</code>.","!type":"+addressBooks.NodeType"},"readOnly":{"!doc":"Indicates if the object is read-only.","!type":"bool"},"remote":{"!doc":"Indicates if the object came from a remote address book.","!type":"bool"},"properties":{"!type":"+contacts.ContactProperties"}},"contacts.ContactProperties":{"!doc":"A set of properties for a particular contact. For a complete list of properties that Thunderbird uses, see https://hg.mozilla.org/comm-central/file/tip/mailnews/addrbook/public/nsIAbCard.idl\nIt is also possible to store custom properties. The custom property name however may only use a to z, A to Z, 1 to 9 and underscores."},"contacts.PropertyChange":{"!doc":"A dictionary of changed properties. Keys are the property name that changed, values are an object containing ``oldValue`` and ``newValue``. Values can be either a string or null."},"mailingLists.MailingListNode":{"!doc":"A node representing a mailing list.","id":{"!doc":"The unique identifier for the node. IDs are unique within the current profile, and they remain valid even after the program is restarted.","!type":"string"},"parentId":{"!doc":"The <code>id</code> of the parent object.","!type":"string"},"type":{"!doc":"Always set to <code>mailingList</code>.","!type":"+addressBooks.NodeType"},"readOnly":{"!doc":"Indicates if the object is read-only.","!type":"bool"},"remote":{"!doc":"Indicates if the object came from a remote address book.","!type":"bool"},"name":{"!type":"string"},"nickName":{"!type":"string"},"description":{"!type":"string"},"contacts":{"!doc":"A list of contacts held by this node's address book or mailing list.","!type":"[+contacts.ContactNode]"}},"browserAction.Details":{"!doc":"Specifies to which tab or window the value should be set, or from which one it should be retrieved. If no tab nor window is specified, the global value is set or retrieved.","tabId":{"!doc":"When setting a value, it will be specific to the specified tab, and will automatically reset when the tab navigates. When getting, specifies the tab to get the value from; if there is no tab-specific value, the window one will be inherited.","!type":"number"},"windowId":{"!doc":"When setting a value, it will be specific to the specified window. When getting, specifies the window to get the value from; if there is no window-specific value, the global one will be inherited.","!type":"number"}},"browserAction.ColorArray":{"!doc":"An array of four integers in the range [0,255] that make up the RGBA color. For example, opaque red is <code>[255, 0, 0, 255]</code>.","!type":"[number]"},"browserAction.ImageDataType":{"!doc":"Pixel data for an image. Must be an ImageData object (for example, from a <code>canvas</code> element)."},"browserAction.ImageDataDictionary":{"!doc":"A ``{size: ImageDataType}`` dictionary representing the icon to be set. The actual :ref:`browserAction.ImageDataType` to be used is chosen depending on the screen's pixel density. See the `MDN documentation on browser styles <https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles>`__ for more information on this. At least one :ref:`browserAction.ImageDataType` must be specified."},"browserAction.OnClickData":{"!doc":"Information sent when a browser action is clicked.","modifiers":{"!doc":"An array of keyboard modifiers that were held while the menu item was clicked.","!type":"[string]"},"button":{"!doc":"An integer value of button by which menu item was clicked.","!type":"number"}},"cloudFile.CloudFileAccount":{"!doc":"Information about a cloud file account","id":{"!doc":"Unique identifier of the account","!type":"string"},"configured":{"!doc":"If true, the account is configured and ready to use. Only configured accounts are offered to the user.","!type":"bool"},"name":{"!doc":"A user-friendly name for this account.","!type":"string"},"uploadSizeLimit":{"!doc":"The maximum size in bytes for a single file to upload. Set to -1 if unlimited.","!type":"number"},"spaceRemaining":{"!doc":"The amount of remaining space on the cloud provider, in bytes. Set to -1 if unsupported.","!type":"number"},"spaceUsed":{"!doc":"The amount of space already used on the cloud provider, in bytes. Set to -1 if unsupported.","!type":"number"},"managementUrl":{"!doc":"A page for configuring accounts, to be displayed in the preferences UI.","!type":"string"}},"cloudFile.CloudFile":{"!doc":"Information about a cloud file","id":{"!doc":"An identifier for this file","!type":"number"},"name":{"!doc":"Filename of the file to be transferred","!type":"string"},"data":{"!type":"[object]?, [object]?"}},"compose.ComposeRecipient":{"!type":"[string]?, [object]?"},"compose.ComposeRecipientList":{"!type":"[+compose.ComposeRecipient]?, [[+compose.ComposeRecipient]]?"},"compose.ComposeState":{"!doc":"Represent the state of the message composer.","canSendNow":{"!doc":"The message can be send now.","!type":"bool"},"canSendLater":{"!doc":"The message can be send later.","!type":"bool"}},"compose.ComposeDetails":{"!doc":"Used by various functions to represent the state of a message being composed. Note that functions using this type may have a partial implementation.","identityId":{"!doc":"The ID of an identity from the :doc:`accounts` API. The settings from the identity will be used in the composed message. If ``replyTo`` is also specified, the ``replyTo`` property of the identity is overridden. The permission <permission>accountsRead</permission> is required to include the ``identityId``.","!type":"string"},"from":{"!doc":"*Caution*: Setting a value for `from` does not change the used identity, it overrides the FROM header. Many email servers do not accept emails where the FROM header does not match the sender identity. Must be set to exactly one valid email address.","!type":"+compose.ComposeRecipient"},"to":{"!type":"+compose.ComposeRecipientList"},"cc":{"!type":"+compose.ComposeRecipientList"},"bcc":{"!type":"+compose.ComposeRecipientList"},"replyTo":{"!type":"+compose.ComposeRecipientList"},"followupTo":{"!type":"+compose.ComposeRecipientList"},"newsgroups":{"!type":"[string]?, [[string]]?"},"subject":{"!type":"string"},"type":{"!doc":"Read-only. The type of the message being composed, depending on how the compose window was opened by the user.","!type":"string"},"body":{"!type":"string"},"plainTextBody":{"!type":"string"},"isPlainText":{"!type":"bool"},"attachments":{"!doc":"Attachments to add to the message. Only used in the begin* functions.","!type":"[object]"}},"compose.ComposeAttachment":{"!doc":"Represents an attachment in a message being composed.","getFile":{"!doc":"Retrieves the contents of the attachment as a DOM ``File`` object.","!type":"fn()"},"id":{"!doc":"A unique identifier for this attachment.","!type":"number"},"name":{"!doc":"The name, as displayed to the user, of this attachment. This is usually but not always the filename of the attached file.","!type":"string"},"size":{"!doc":"The size in bytes of this attachment.","!type":"number"}},"composeAction.Details":{"!doc":"Specifies to which tab or window the value should be set, or from which one it should be retrieved. If no tab nor window is specified, the global value is set or retrieved.","tabId":{"!doc":"When setting a value, it will be specific to the specified tab, and will automatically reset when the tab navigates. When getting, specifies the tab to get the value from; if there is no tab-specific value, the window one will be inherited.","!type":"number"},"windowId":{"!doc":"When setting a value, it will be specific to the specified window. When getting, specifies the window to get the value from; if there is no window-specific value, the global one will be inherited.","!type":"number"}},"composeAction.ColorArray":{"!doc":"An array of four integers in the range [0,255] that make up the RGBA color. For example, opaque red is <code>[255, 0, 0, 255]</code>.","!type":"[number]"},"composeAction.ImageDataType":{"!doc":"Pixel data for an image. Must be an ImageData object (for example, from a <code>canvas</code> element)."},"composeAction.ImageDataDictionary":{"!doc":"A ``{size: ImageDataType}`` dictionary representing the icon to be set. The actual :ref:`composeAction.ImageDataType` to be used is chosen depending on the screen's pixel density. See the `MDN documentation on browser styles <https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles>`__ for more information on this. At least one :ref:`composeAction.ImageDataType` must be specified."},"composeAction.OnClickData":{"!doc":"Information sent when a compose action is clicked.","modifiers":{"!doc":"An array of keyboard modifiers that were held while the menu item was clicked.","!type":"[string]"},"button":{"!doc":"An integer value of button by which menu item was clicked.","!type":"number"}},"composeScripts.RegisteredComposeScriptOptions":{"!doc":"Details of a compose script registered programmatically","css":{"!doc":"The list of CSS files to inject","!type":"[+extensionTypes.ExtensionFileOrCode]"},"js":{"!doc":"The list of JavaScript files to inject","!type":"[+extensionTypes.ExtensionFileOrCode]"}},"composeScripts.RegisteredComposeScript":{"!doc":"An object that represents a compose script registered programmatically","unregister":{"!doc":"Unregister a compose script registered programmatically","!type":"fn()"}},"messageDisplayScripts.RegisteredMessageDisplayScriptOptions":{"!doc":"Details of a message display script registered programmatically","css":{"!doc":"The list of CSS files to inject","!type":"[+extensionTypes.ExtensionFileOrCode]"},"js":{"!doc":"The list of JavaScript files to inject","!type":"[+extensionTypes.ExtensionFileOrCode]"}},"messageDisplayScripts.RegisteredMessageDisplayScript":{"!doc":"An object that represents a message display script registered programmatically","unregister":{"!doc":"Unregister a message display script registered programmatically","!type":"fn()"}},"folders.MailFolder":{"!doc":"An object describing a mail folder, as returned for example by the :ref:`folders.getParentFolders` or :ref:`folders.getSubFolders` methods, or part of a :ref:`accounts.MailAccount` object, which is returned for example by the :ref:`accounts.list` and :ref:`accounts.get` methods. The ``subFolders`` property is only included if requested.","accountId":{"!doc":"The account this folder belongs to.","!type":"string"},"name":{"!doc":"The human-friendly name of this folder.","!type":"string"},"path":{"!doc":"Path to this folder in the account. Although paths look predictable, never guess a folder's path, as there are a number of reasons why it may not be what you think it is. Use :ref:`folders.getParentFolders` or :ref:`folders.getSubFolders` to obtain hierarchy information.","!type":"string"},"subFolders":{"!doc":"Subfolders are only included if requested.","!type":"[+folders.MailFolder]"},"type":{"!doc":"The type of folder, for several common types.","!type":"string"}},"folders.MailFolderInfo":{"!doc":"An object containing additional information about a mail folder.","favorite":{"!doc":"Whether this folder is a favorite folder.","!type":"bool"},"totalMessageCount":{"!doc":"Number of messages in this folder.","!type":"number"},"unreadMessageCount":{"!doc":"Number of unread messages in this folder.","!type":"number"}},"identities.MailIdentity":{"accountId":{"!doc":"The id of the :ref:`accounts.MailAccount` this identity belongs to. The ``accountId`` property is read-only.","!type":"string"},"composeHtml":{"!doc":"If the identity uses HTML as the default compose format.","!type":"bool"},"email":{"!doc":"The user's email address as used when messages are sent from this identity.","!type":"string"},"id":{"!doc":"A unique identifier for this identity. The ``id`` property is read-only.","!type":"string"},"label":{"!doc":"A user-defined label for this identity.","!type":"string"},"name":{"!doc":"The user's name as used when messages are sent from this identity.","!type":"string"},"replyTo":{"!doc":"The reply-to email address associated with this identity.","!type":"string"},"organization":{"!doc":"The organization associated with this identity.","!type":"string"},"signature":{"!doc":"The signature of the identity.","!type":"string"},"signatureIsPlainText":{"!doc":"If the signature should be interpreted as plain text or as HTML.","!type":"bool"}},"mailTabs.MailTab":{"id":{"!type":"number"},"windowId":{"!type":"number"},"active":{"!type":"bool"},"sortType":{"!doc":"Note: ``sortType`` and ``sortOrder`` depend on each other, so both should be present, or neither.","!type":"string"},"sortOrder":{"!doc":"Note: ``sortType`` and ``sortOrder`` depend on each other, so both should be present, or neither.","!type":"string"},"viewType":{"!type":"string"},"layout":{"!type":"string"},"folderPaneVisible":{"!type":"bool"},"messagePaneVisible":{"!type":"bool"},"displayedFolder":{"!doc":"The <permission>accountsRead</permission> permission is required for this property to be included.","!type":"+folders.MailFolder"}},"mailTabs.QuickFilterTextDetail":{"text":{"!doc":"String to match against the <var>recipients</var>, <var>author</var>, <var>subject</var>, or <var>body</var>.","!type":"string"},"recipients":{"!doc":"Shows messages where <var>text</var> matches the recipients.","!type":"bool"},"author":{"!doc":"Shows messages where <var>text</var> matches the author.","!type":"bool"},"subject":{"!doc":"Shows messages where <var>text</var> matches the subject.","!type":"bool"},"body":{"!doc":"Shows messages where <var>text</var> matches the message body.","!type":"bool"}},"menus.ContextType":{"!doc":"The different contexts a menu can appear in. Specifying <code>all</code> is equivalent to the combination of all other contexts excluding <code>tab</code> and <code>tools_menu</code>. More information about each context can be found in the `Supported UI Elements <https://developer.thunderbird.net/add-ons/mailextensions/supported-ui-elements#menu-items>`__ article on developer.thunderbird.net.","!type":"string"},"menus.ItemType":{"!doc":"The type of menu item.","!type":"string"},"menus.OnShowData":{"!doc":"Information sent when a context menu is being shown. For more information about each property, see :ref:`menus.OnClickData`. \nSome properties are only included if the extension has host permission for the given context, for example :permission:`activeTab` for content tabs, :permission:`compose` for compose tabs and :permission:`messagesRead` for message display tabs.","menuIds":{"!doc":"A list of IDs of the menu items that were shown.","!type":"[number]?, [string]?"},"contexts":{"!doc":"A list of all contexts that apply to the menu.","!type":"[+menus.ContextType]"},"viewType":{"!type":"+extension.ViewType"},"editable":{"!type":"bool"},"mediaType":{"!type":"string"},"linkUrl":{"!doc":"Host permission is required.","!type":"string"},"linkText":{"!doc":"Host permission is required.","!type":"string"},"srcUrl":{"!doc":"Host permission is required.","!type":"string"},"pageUrl":{"!doc":"Host permission is required.","!type":"string"},"frameUrl":{"!doc":"Host permission is required.","!type":"string"},"selectionText":{"!doc":"Host permission is required.","!type":"string"},"targetElementId":{"!type":"number"},"fieldId":{"!type":"string"},"selectedMessages":{"!type":"+messages.MessageList"},"displayedFolder":{"!type":"+folders.MailFolder"},"selectedFolder":{"!type":"+folders.MailFolder"},"selectedAccount":{"!type":"+accounts.MailAccount"},"attachments":{"!type":"[+compose.ComposeAttachment]"}},"menus.OnClickData":{"!doc":"Information sent when a context menu item is clicked.","menuItemId":{"!doc":"The ID of the menu item that was clicked.","!type":"[number]?, [string]?"},"parentMenuItemId":{"!doc":"The parent ID, if any, for the item clicked.","!type":"[number]?, [string]?"},"viewType":{"!doc":"The type of view where the menu is clicked. May be unset if the menu is not associated with a view.","!type":"+extension.ViewType"},"mediaType":{"!doc":"One of 'image', 'video', or 'audio' if the context menu was activated on one of these types of elements.","!type":"string"},"linkText":{"!doc":"If the element is a link, the text of that link.","!type":"string"},"linkUrl":{"!doc":"If the element is a link, the URL it points to.","!type":"string"},"srcUrl":{"!doc":"Will be present for elements with a 'src' URL.","!type":"string"},"pageUrl":{"!doc":"The URL of the page where the menu item was clicked. This property is not set if the click occurred in a context where there is no current page, such as in a launcher context menu.","!type":"string"},"frameId":{"!doc":"The id of the frame of the element where the context menu was clicked.","!type":"number"},"frameUrl":{"!doc":"The URL of the frame of the element where the context menu was clicked, if it was in a frame.","!type":"string"},"selectionText":{"!doc":"The text for the context selection, if any.","!type":"string"},"editable":{"!doc":"A flag indicating whether the element is editable (text input, textarea, etc.).","!type":"bool"},"wasChecked":{"!doc":"A flag indicating the state of a checkbox or radio item before it was clicked.","!type":"bool"},"checked":{"!doc":"A flag indicating the state of a checkbox or radio item after it is clicked.","!type":"bool"},"modifiers":{"!doc":"An array of keyboard modifiers that were held while the menu item was clicked.","!type":"[string]"},"button":{"!doc":"An integer value of button by which menu item was clicked.","!type":"number"},"targetElementId":{"!doc":"An identifier of the clicked content element, if any. Use menus.getTargetElement in the page to find the corresponding element.","!type":"number"},"fieldId":{"!doc":"An identifier of the clicked Thunderbird UI element, if any.","!type":"string"},"selectedMessages":{"!doc":"The selected messages, if the context menu was opened in the message list. The <permission>messagesRead</permission> permission is required.","!type":"+messages.MessageList"},"displayedFolder":{"!doc":"The displayed folder, if the context menu was opened in the message list. The <permission>accountsRead</permission> permission is required.","!type":"+folders.MailFolder"},"selectedFolder":{"!doc":"The selected folder, if the context menu was opened in the folder pane. The <permission>accountsRead</permission> permission is required.","!type":"+folders.MailFolder"},"selectedAccount":{"!doc":"The selected account, if the context menu was opened on an account entry in the folder pane. The <permission>accountsRead</permission> permission is required.","!type":"+accounts.MailAccount"},"attachments":{"!doc":"The selected attachments of a message being composed. The <permission>compose</permission> permission is required.","!type":"[+compose.ComposeAttachment]"}},"messageDisplayAction.Details":{"!doc":"Specifies to which tab or window the value should be set, or from which one it should be retrieved. If no tab nor window is specified, the global value is set or retrieved.","tabId":{"!doc":"When setting a value, it will be specific to the specified tab, and will automatically reset when the tab navigates. When getting, specifies the tab to get the value from; if there is no tab-specific value, the window one will be inherited.","!type":"number"},"windowId":{"!doc":"When setting a value, it will be specific to the specified window. When getting, specifies the window to get the value from; if there is no window-specific value, the global one will be inherited.","!type":"number"}},"messageDisplayAction.ColorArray":{"!doc":"An array of four integers in the range [0,255] that make up the RGBA color. For example, opaque red is <code>[255, 0, 0, 255]</code>.","!type":"[number]"},"messageDisplayAction.ImageDataType":{"!doc":"Pixel data for an image. Must be an ImageData object (for example, from a <code>canvas</code> element)."},"messageDisplayAction.ImageDataDictionary":{"!doc":"A ``{size: ImageDataType}`` dictionary representing the icon to be set. The actual :ref:`messageDisplayAction.ImageDataType` to be used is chosen depending on the screen's pixel density. See the `MDN documentation on browser styles <https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles>`__ for more information on this. At least one :ref:`messageDisplayAction.ImageDataType` must be specified."},"messageDisplayAction.OnClickData":{"!doc":"Information sent when a message display action is clicked.","modifiers":{"!doc":"An array of keyboard modifiers that were held while the menu item was clicked.","!type":"[string]"},"button":{"!doc":"An integer value of button by which menu item was clicked.","!type":"number"}},"messages.MessageHeader":{"!doc":"Basic information about a message.","author":{"!type":"string"},"bccList":{"!doc":"The Bcc recipients. Not populated for news/nntp messages.","!type":"[string]"},"ccList":{"!doc":"The Cc recipients. Not populated for news/nntp messages.","!type":"[string]"},"date":{"!type":"+extensionTypes.Date"},"flagged":{"!type":"bool"},"folder":{"!doc":"The <permission>accountsRead</permission> permission is required for this property to be included.","!type":"+folders.MailFolder"},"headerMessageId":{"!doc":"The message-id header of the message.","!type":"string"},"id":{"!type":"number"},"junk":{"!doc":"Not populated for news/nntp messages.","!type":"bool"},"junkScore":{"!type":"number"},"read":{"!type":"bool"},"recipients":{"!doc":"The To recipients. Not populated for news/nntp messages.","!type":"[string]"},"size":{"!doc":"The total size of the message in bytes.","!type":"number"},"subject":{"!type":"string"},"tags":{"!type":"[string]"}},"messages.MessageList":{"!doc":"See :doc:`how-to/messageLists` for more information.","id":{"!type":"string"},"messages":{"!type":"[+messages.MessageHeader]"}},"messages.MessagePart":{"!doc":"Represents an email message \"part\", which could be the whole message","body":{"!doc":"The content of the part","!type":"string"},"contentType":{"!type":"string"},"headers":{"!doc":"An object of part headers, with the header name as key, and an array of header values as value"},"name":{"!doc":"Name of the part, if it is a file","!type":"string"},"partName":{"!type":"string"},"parts":{"!doc":"Any sub-parts of this part","!type":"[+messages.MessagePart]"},"size":{"!type":"number"}},"messages.MessageChangeProperties":{"!doc":"Message properties that can be updated by the :ref:`messages.update` and that are monitored by :ref:`messages.onUpdated`.","read":{"!doc":"Message is read.","!type":"bool"},"junk":{"!doc":"Message is junk.","!type":"bool"},"flagged":{"!doc":"Message is flagged.","!type":"bool"},"tags":{"!doc":"Tags associated with this message. For a list of available tags, call the listTags method.","!type":"[string]"}},"messages.MessageTag":{"key":{"!doc":"Distinct tag identifier – use this string when referring to a tag","!type":"string"},"tag":{"!doc":"Human-readable tag name","!type":"string"},"color":{"!doc":"Tag color","!type":"string"},"ordinal":{"!doc":"Custom sort string (usually empty)","!type":"string"}},"messages.TagsDetail":{"!doc":"Used for filtering messages by tag in various methods. Note that functions using this type may have a partial implementation.","tags":{"!doc":"Object keys are tags to filter on, values are <code>true</code> if the message must have the tag, or <code>false</code> if it must not have the tag. For a list of available tags, call the :ref:`messages.listTags` method."},"mode":{"!doc":"Whether all of the tag filters must apply, or any of them.","!type":"string"}},"messages.Attachment":{"!doc":"Represents an attachment in a message.","contentType":{"!doc":"The content type of the attachment.","!type":"string"},"name":{"!doc":"The name, as displayed to the user, of this attachment. This is usually but not always the filename of the attached file.","!type":"string"},"partName":{"!doc":"Identifies the MIME part of the message associated with this attachment.","!type":"string"},"size":{"!doc":"The size in bytes of this attachment.","!type":"number"}},"tabs.Tab":{"id":{"!doc":"The ID of the tab. Tab IDs are unique within a browser session. Under some circumstances a Tab may not be assigned an ID. Tab ID can also be set to :ref:`tabs.TAB_ID_NONE` for apps and devtools windows.","!type":"number"},"index":{"!doc":"The zero-based index of the tab within its window.","!type":"number"},"windowId":{"!doc":"The ID of the window the tab is contained within.","!type":"number"},"selected":{"!doc":"Whether the tab is selected.","!type":"bool"},"highlighted":{"!doc":"Whether the tab is highlighted. Works as an alias of active","!type":"bool"},"active":{"!doc":"Whether the tab is active in its window. (Does not necessarily mean the window is focused.)","!type":"bool"},"url":{"!doc":"The URL the tab is displaying. This property is only present if the extension's manifest includes the <permission>tabs</permission> permission.","!type":"string"},"title":{"!doc":"The title of the tab. This property is only present if the extension's manifest includes the <permission>tabs</permission> permission.","!type":"string"},"favIconUrl":{"!doc":"The URL of the tab's favicon. This property is only present if the extension's manifest includes the <permission>tabs</permission> permission. It may also be an empty string if the tab is loading.","!type":"string"},"status":{"!doc":"Either <em>loading</em> or <em>complete</em>.","!type":"string"},"width":{"!doc":"The width of the tab in pixels.","!type":"number"},"height":{"!doc":"The height of the tab in pixels.","!type":"number"},"type":{"!type":"string"},"mailTab":{"!doc":"Whether the tab is a 3-pane tab.","!type":"bool"}},"tabs.TabStatus":{"!doc":"Whether the tabs have completed loading.","!type":"string"},"tabs.WindowType":{"!doc":"The type of a window. Under some circumstances a Window may not be assigned a type property.","!type":"string"},"tabs.UpdatePropertyName":{"!doc":"Event names supported in onUpdated.","!type":"string"},"tabs.UpdateFilter":{"!doc":"An object describing filters to apply to tabs.onUpdated events.","urls":{"!doc":"A list of URLs or URL patterns. Events that cannot match any of the URLs will be filtered out. Filtering with urls requires the <permission>tabs</permission> or <permission>activeTab</permission> permission.","!type":"[string]"},"properties":{"!doc":"A list of property names. Events that do not match any of the names will be filtered out.","!type":"[+tabs.UpdatePropertyName]"},"tabId":{"!type":"number"},"windowId":{"!type":"number"}},"windows.WindowType":{"!doc":"The type of a window. Under some circumstances a Window may not be assigned a type property.","!type":"string"},"windows.WindowState":{"!doc":"The state of this window.","!type":"string"},"windows.Window":{"id":{"!doc":"The ID of the window. Window IDs are unique within a session.","!type":"number"},"focused":{"!doc":"Whether the window is currently the focused window.","!type":"bool"},"top":{"!doc":"The offset of the window from the top edge of the screen in pixels.","!type":"number"},"left":{"!doc":"The offset of the window from the left edge of the screen in pixels.","!type":"number"},"width":{"!doc":"The width of the window, including the frame, in pixels.","!type":"number"},"height":{"!doc":"The height of the window, including the frame, in pixels.","!type":"number"},"tabs":{"!doc":"Array of :ref:`tabs.Tab` objects representing the current tabs in the window. Only included if requested by :ref:`windows.get`, :ref:`windows.getCurrent`, :ref:`windows.getAll` or :ref:`windows.getLastFocused` and the optional :ref:`windows.GetInfo` parameter has ``populate`` set to ``true``.","!type":"[+tabs.Tab]"},"incognito":{"!doc":"Whether the window is incognito.","!type":"bool"},"type":{"!doc":"The type of browser window this is.","!type":"+windows.WindowType"},"state":{"!doc":"The state of this browser window.","!type":"+windows.WindowState"},"alwaysOnTop":{"!doc":"Whether the window is set to be always on top.","!type":"bool"},"title":{"!doc":"The title of the window. Read-only.","!type":"string"}},"windows.CreateType":{"!doc":"Specifies what type of browser window to create. The 'panel' and 'detached_panel' types create a popup unless the '--enable-panels' flag is set.","!type":"string"},"windows.GetInfo":{"!doc":"Specifies additional requirements for the returned windows.","populate":{"!doc":"If true, the :ref:`windows.Window` returned will have a <var>tabs</var> property that contains an array of :ref:`tabs.Tab` objects representing the tabs inside the window. The :ref:`tabs.Tab` objects only contain the <code>url</code>, <code>title</code> and <code>favIconUrl</code> properties if the extension's manifest file includes the <permission>tabs</permission> permission.","!type":"bool"},"windowTypes":{"!doc":"If set, the :ref:`windows.Window` returned will be filtered based on its type. Supported by :ref:`windows.getAll` only, ignored in all other functions.","!type":"[+windows.WindowType]"}},"browsingData.RemovalOptions":{"!doc":"Options that determine exactly what data will be removed.","since":{"!doc":"Remove data accumulated on or after this date, represented in milliseconds since the epoch (accessible via the <code>getTime</code> method of the JavaScript <code>Date</code> object). If absent, defaults to 0 (which would remove all browsing data).","!type":"+extensionTypes.Date"},"hostnames":{"!doc":"Only remove data associated with these hostnames (only applies to cookies and localStorage).","!type":"[string]"},"cookieStoreId":{"!doc":"Only remove data associated with this specific cookieStoreId.","!type":"string"},"originTypes":{"!doc":"An object whose properties specify which origin types ought to be cleared. If this object isn't specified, it defaults to clearing only \"unprotected\" origins. Please ensure that you <em>really</em> want to remove application data before adding 'protectedWeb' or 'extensions'.","unprotectedWeb":{"!doc":"Normal websites.","!type":"bool"},"protectedWeb":{"!doc":"Websites that have been installed as hosted applications (be careful!).","!type":"bool"},"extension":{"!doc":"Extensions and packaged applications a user has installed (be _really_ careful!).","!type":"bool"}}},"browsingData.DataTypeSet":{"!doc":"A set of data types. Missing data types are interpreted as <code>false</code>.","cache":{"!doc":"The browser's cache. Note: when removing data, this clears the <em>entire</em> cache: it is not limited to the range you specify.","!type":"bool"},"cookies":{"!doc":"The browser's cookies.","!type":"bool"},"downloads":{"!doc":"The browser's download list.","!type":"bool"},"formData":{"!doc":"The browser's stored form data.","!type":"bool"},"history":{"!doc":"The browser's history.","!type":"bool"},"indexedDB":{"!doc":"Websites' IndexedDB data.","!type":"bool"},"localStorage":{"!doc":"Websites' local storage data.","!type":"bool"},"serverBoundCertificates":{"!doc":"Server-bound certificates.","!type":"bool"},"passwords":{"!doc":"Stored passwords.","!type":"bool"},"pluginData":{"!doc":"Plugins' data.","!type":"bool"},"serviceWorkers":{"!doc":"Service Workers.","!type":"bool"}},"commands.Command":{"!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/commands/Command","name":{"!doc":"The name of the Extension Command","!type":"string"},"description":{"!doc":"The Extension Command description","!type":"string"},"shortcut":{"!doc":"The shortcut active for this command, or blank if not active.","!type":"string"}},"contentScripts.RegisteredContentScriptOptions":{"!doc":"Details of a content script registered programmatically","matches":{"!type":"[+manifest.MatchPattern]"},"excludeMatches":{"!type":"[+manifest.MatchPattern]"},"includeGlobs":{"!type":"[string]"},"excludeGlobs":{"!type":"[string]"},"css":{"!doc":"The list of CSS files to inject","!type":"[+extensionTypes.ExtensionFileOrCode]"},"js":{"!doc":"The list of JS files to inject","!type":"[+extensionTypes.ExtensionFileOrCode]"},"allFrames":{"!doc":"If allFrames is <code>true</code>, implies that the JavaScript or CSS should be injected into all frames of current page. By default, it's <code>false</code> and is only injected into the top frame.","!type":"bool"},"matchAboutBlank":{"!doc":"If matchAboutBlank is true, then the code is also injected in about:blank and about:srcdoc frames if your extension has access to its parent document. Code cannot be inserted in top-level about:-frames. By default it is <code>false</code>.","!type":"bool"},"runAt":{"!doc":"The soonest that the JavaScript or CSS will be injected into the tab. Defaults to \"document_idle\".","!type":"+extensionTypes.RunAt"}},"contentScripts.RegisteredContentScript":{"!doc":"An object that represents a content script registered programmatically","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts/RegisteredContentScript","unregister":{"!doc":"Unregister a content script registered programmatically","!type":"fn()","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts/RegisteredContentScript/unregister"}},"experiments.ExperimentAPI":{"schema":{"!type":"+experiments.ExperimentURL"},"parent":{"events":{"!type":"+experiments.APIEvents"},"paths":{"!type":"+experiments.APIPaths"},"script":{"!type":"+experiments.ExperimentURL"},"scopes":{"!type":"[+experiments.APIParentScope]"}},"child":{"paths":{"!type":"+experiments.APIPaths"},"script":{"!type":"+experiments.ExperimentURL"},"scopes":{"!type":"[+experiments.APIChildScope]"}}},"experiments.ExperimentURL":{"!type":"string"},"experiments.APIPaths":{"!type":"[+experiments.APIPath]"},"experiments.APIPath":{"!type":"[string]"},"experiments.APIEvents":{"!type":"[+experiments.APIEvent]"},"experiments.APIEvent":{"!type":"string"},"experiments.APIParentScope":{"!type":"string"},"experiments.APIChildScope":{"!type":"string"},"extension.ViewType":{"!doc":"The type of extension view.","!type":"string","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/extension/ViewType"},"extensionTypes.ImageFormat":{"!doc":"The format of an image.","!type":"string","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/extensionTypes/ImageFormat"},"extensionTypes.ImageDetails":{"!doc":"Details about the format, quality, area and scale of the capture.","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/extensionTypes/ImageDetails","format":{"!doc":"The format of the resulting image. Default is <code>\"jpeg\"</code>.","!type":"+extensionTypes.ImageFormat"},"quality":{"!doc":"When format is <code>\"jpeg\"</code>, controls the quality of the resulting image. This value is ignored for PNG images. As quality is decreased, the resulting image will have more visual artifacts, and the number of bytes needed to store it will decrease.","!type":"number"},"rect":{"!doc":"The area of the document to capture, in CSS pixels, relative to the page. If omitted, capture the visible viewport.","x":{"!type":"number"},"y":{"!type":"number"},"width":{"!type":"number"},"height":{"!type":"number"}},"scale":{"!doc":"The scale of the resulting image. Defaults to <code>devicePixelRatio</code>.","!type":"number"},"resetScrollPosition":{"!doc":"If true, temporarily resets the scroll position of the document to 0. Only takes effect if rect is also specified.","!type":"bool"}},"extensionTypes.RunAt":{"!doc":"The soonest that the JavaScript or CSS will be injected into the tab.","!type":"string","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/extensionTypes/RunAt"},"extensionTypes.CSSOrigin":{"!doc":"The origin of the CSS to inject, this affects the cascading order (priority) of the stylesheet.","!type":"string"},"extensionTypes.InjectDetails":{"!doc":"Details of the script or CSS to inject. Either the code or the file property must be set, but both may not be set at the same time.","code":{"!doc":"JavaScript or CSS code to inject.<br><br><b>Warning:</b><br>Be careful using the <code>code</code> parameter. Incorrect use of it may open your extension to <a href=\"https://en.wikipedia.org/wiki/Cross-site_scripting\">cross site scripting</a> attacks.","!type":"string"},"file":{"!doc":"JavaScript or CSS file to inject.","!type":"string"},"allFrames":{"!doc":"If allFrames is <code>true</code>, implies that the JavaScript or CSS should be injected into all frames of current page. By default, it's <code>false</code> and is only injected into the top frame.","!type":"bool"},"matchAboutBlank":{"!doc":"If matchAboutBlank is true, then the code is also injected in about:blank and about:srcdoc frames if your extension has access to its parent document. Code cannot be inserted in top-level about:-frames. By default it is <code>false</code>.","!type":"bool"},"frameId":{"!doc":"The ID of the frame to inject the script into. This may not be used in combination with <code>allFrames</code>.","!type":"number"},"runAt":{"!doc":"The soonest that the JavaScript or CSS will be injected into the tab. Defaults to \"document_idle\".","!type":"+extensionTypes.RunAt"},"cssOrigin":{"!doc":"The css origin of the stylesheet to inject. Defaults to \"author\".","!type":"+extensionTypes.CSSOrigin"}},"extensionTypes.Date":{"!type":"[string]?, [number]?, [object]?"},"extensionTypes.ExtensionFileOrCode":{"!type":"[object]?, [object]?"},"extensionTypes.PlainJSONValue":{"!doc":"A plain JSON value","!type":"[null]?, [number]?, [string]?, [bool]?, [[+extensionTypes.PlainJSONValue]]?, [object]?"},"geckoProfiler.ProfilerFeature":{"!type":"string"},"geckoProfiler.supports":{"!type":"string"},"i18n.LanguageCode":{"!doc":"An ISO language code such as <code>en</code> or <code>fr</code>. For a complete list of languages supported by this method, see <a href='http://src.chromium.org/viewvc/chrome/trunk/src/third_party/cld/languages/internal/languages.cc'>kLanguageInfoTable</a>. For an unknown language, <code>und</code> will be returned, which means that [percentage] of the text is unknown to CLD","!type":"string","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/i18n/LanguageCode"},"identity.AccountInfo":{"!doc":"An object encapsulating an OAuth account id.","id":{"!doc":"A unique identifier for the account. This ID will not change for the lifetime of the account. ","!type":"string"}},"management.IconInfo":{"!doc":"Information about an icon belonging to an extension.","size":{"!doc":"A number representing the width and height of the icon. Likely values include (but are not limited to) 128, 48, 24, and 16.","!type":"number"},"url":{"!doc":"The URL for this icon image. To display a grayscale version of the icon (to indicate that an extension is disabled, for example), append <code>?grayscale=true</code> to the URL.","!type":"string"}},"management.ExtensionDisabledReason":{"!doc":"A reason the item is disabled.","!type":"string"},"management.ExtensionType":{"!doc":"The type of this extension, 'extension' or 'theme'.","!type":"string"},"management.ExtensionInstallType":{"!doc":"How the extension was installed. One of<br><var>development</var>: The extension was loaded unpacked in developer mode,<br><var>normal</var>: The extension was installed normally via an .xpi file,<br><var>sideload</var>: The extension was installed by other software on the machine,<br><var>other</var>: The extension was installed by other means.","!type":"string"},"management.ExtensionInfo":{"!doc":"Information about an installed extension.","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/management/ExtensionInfo","id":{"!doc":"The extension's unique identifier.","!type":"string"},"name":{"!doc":"The name of this extension.","!type":"string"},"shortName":{"!doc":"A short version of the name of this extension.","!type":"string"},"description":{"!doc":"The description of this extension.","!type":"string"},"version":{"!doc":"The <a href='manifest/version'>version</a> of this extension.","!type":"string"},"versionName":{"!doc":"The <a href='manifest/version#version_name'>version name</a> of this extension if the manifest specified one.","!type":"string"},"mayDisable":{"!doc":"Whether this extension can be disabled or uninstalled by the user.","!type":"bool"},"enabled":{"!doc":"Whether it is currently enabled or disabled.","!type":"bool"},"disabledReason":{"!doc":"A reason the item is disabled.","!type":"+management.ExtensionDisabledReason"},"type":{"!doc":"The type of this extension, 'extension' or 'theme'.","!type":"+management.ExtensionType"},"homepageUrl":{"!doc":"The URL of the homepage of this extension.","!type":"string"},"updateUrl":{"!doc":"The update URL of this extension.","!type":"string"},"optionsUrl":{"!doc":"The url for the item's options page, if it has one.","!type":"string"},"icons":{"!doc":"A list of icon information. Note that this just reflects what was declared in the manifest, and the actual image at that url may be larger or smaller than what was declared, so you might consider using explicit width and height attributes on img tags referencing these images. See the <a href='manifest/icons'>manifest documentation on icons</a> for more details.","!type":"[+management.IconInfo]"},"permissions":{"!doc":"Returns a list of API based permissions.","!type":"[string]"},"hostPermissions":{"!doc":"Returns a list of host based permissions.","!type":"[string]"},"installType":{"!doc":"How the extension was installed.","!type":"+management.ExtensionInstallType"}},"permissions.Permissions":{"!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/permissions/Permissions","permissions":{"!type":"[+manifest.OptionalPermission]"},"origins":{"!type":"[+manifest.MatchPattern]"}},"permissions.AnyPermissions":{"permissions":{"!type":"[+manifest.Permission]"},"origins":{"!type":"[+manifest.MatchPattern]"}},"runtime.Port":{"!doc":"An object which allows two way communication with other pages.","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port","name":{"!type":"string"},"disconnect":{"!type":"fn()"},"onDisconnect":{"!type":"+events.Event"},"onMessage":{"!type":"+events.Event"},"postMessage":{"!type":"fn()"},"sender":{"!doc":"This property will <b>only</b> be present on ports passed to onConnect/onConnectExternal listeners.","!type":"+runtime.MessageSender"}},"runtime.MessageSender":{"!doc":"An object containing information about the script context that sent a message or request.","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/MessageSender","tab":{"!doc":"The $(ref:tabs.Tab) which opened the connection, if any. This property will <strong>only</strong> be present when the connection was opened from a tab (including content scripts), and <strong>only</strong> if the receiver is an extension, not an app.","!type":"+tabs.Tab"},"frameId":{"!doc":"The $(topic:frame_ids)[frame] that opened the connection. 0 for top-level frames, positive for child frames. This will only be set when <code>tab</code> is set.","!type":"number"},"id":{"!doc":"The ID of the extension or app that opened the connection, if any.","!type":"string"},"url":{"!doc":"The URL of the page or frame that opened the connection. If the sender is in an iframe, it will be iframe's URL not the URL of the page which hosts it.","!type":"string"},"tlsChannelId":{"!doc":"The TLS channel ID of the page or frame that opened the connection, if requested by the extension or app, and if available.","!type":"string"}},"runtime.PlatformOs":{"!doc":"The operating system the browser is running on.","!type":"string","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/PlatformOs"},"runtime.PlatformArch":{"!doc":"The machine's processor architecture.","!type":"string","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/PlatformArch"},"runtime.PlatformInfo":{"!doc":"An object containing information about the current platform.","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/PlatformInfo","os":{"!doc":"The operating system the browser is running on.","!type":"+runtime.PlatformOs"},"arch":{"!doc":"The machine's processor architecture.","!type":"+runtime.PlatformArch"},"nacl_arch":{"!doc":"The native client architecture. This may be different from arch on some platforms.","!type":"+runtime.PlatformNaclArch"}},"runtime.BrowserInfo":{"!doc":"An object containing information about the current browser.","name":{"!doc":"The name of the browser, for example 'Firefox'.","!type":"string"},"vendor":{"!doc":"The name of the browser vendor, for example 'Mozilla'.","!type":"string"},"version":{"!doc":"The browser's version, for example '42.0.0' or '0.8.1pre'.","!type":"string"},"buildID":{"!doc":"The browser's build ID/date, for example '20160101'.","!type":"string"}},"runtime.RequestUpdateCheckStatus":{"!doc":"Result of the update check.","!type":"string","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/RequestUpdateCheckStatus"},"runtime.OnInstalledReason":{"!doc":"The reason that this event is being dispatched.","!type":"string","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/OnInstalledReason"},"runtime.OnRestartRequiredReason":{"!doc":"The reason that the event is being dispatched. 'app_update' is used when the restart is needed because the application is updated to a newer version. 'os_update' is used when the restart is needed because the browser/OS is updated to a newer version. 'periodic' is used when the system runs for more than the permitted uptime set in the enterprise policy.","!type":"string","!url":"https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/OnRestartRequiredReason"},"theme.ThemeUpdateInfo":{"!doc":"Info provided in the onUpdated listener.","theme":{"!doc":"The new theme after update"},"windowId":{"!doc":"The id of the window the theme has been applied to","!type":"number"}}},"browser":{"accounts":{"list":{"!doc":"Returns all mail accounts.","!type":"fn(includeFolders: bool, callback: fn(nameless: [+accounts.MailAccount]))"},"get":{"!doc":"Returns details of the requested account, or null if it doesn't exist.","!type":"fn(accountId: string, includeFolders: bool, callback: fn(nameless: +accounts.MailAccount))"},"getDefault":{"!doc":"Returns the default account, or null if it is not defined.","!type":"fn(includeFolders: bool, callback: fn(nameless: +accounts.MailAccount))"},"setDefaultIdentity":{"!doc":"Sets the default identity for an account.","!type":"fn(accountId: string, identityId: string)"},"getDefaultIdentity":{"!doc":"Returns the default identity for an account, or null if it is not defined.","!type":"fn(accountId: string, callback: fn(nameless: +identities.MailIdentity))"}},"addressBooks":{"openUI":{"!doc":"Opens the address book user interface.","!type":"fn()"},"closeUI":{"!doc":"Closes the address book user interface.","!type":"fn()"},"list":{"!doc":"Gets a list of the user's address books, optionally including all contacts and mailing lists.","!type":"fn(complete: bool, callback: fn(nameless: [+addressBooks.AddressBookNode]))"},"get":{"!doc":"Gets a single address book, optionally including all contacts and mailing lists.","!type":"fn(id: string, complete: bool, callback: fn(nameless: +addressBooks.AddressBookNode))"},"create":{"!doc":"Creates a new, empty address book.","!type":"fn(properties: object, callback: fn(nameless: string))"},"update":{"!doc":"Renames an address book.","!type":"fn(id: string, properties: object)"},"delete":{"!doc":"Removes an address book, and all associated contacts and mailing lists.","!type":"fn(id: string)"},"onCreated":{"!doc":"Fired when an address book is created.","!t