// Type definitions for Chrome extension development // Project: http://developer.chrome.com/extensions/ // Definitions by: Matthew Kimber , otiai10 // Definitions: https://github.com/borisyankov/DefinitelyTyped //////////////////// // Alarms //////////////////// declare module chrome.alarms { interface AlarmCreateInfo { delayInMinutes?: number; periodInMinutes?: number; when?: number; } interface Alarm { periodInMinutes?: number; scheduledTime: number; name: string; } interface AlarmEvent extends chrome.events.Event { addListener(callback: (alarm: Alarm) => void) : void; } export function create(alarmInfo: AlarmCreateInfo): void; export function create(name: string, alarmInfo: AlarmCreateInfo): void; export function getAll(callback: (alarms: Alarm[]) => void): void; export function clearAll(): void; export function clear(name?: string): void; export function get(callback: (alarm: Alarm) => void): void; export function get(name: string, callback: (alarm: Alarm) => void): void; var onAlarm: AlarmEvent; } //////////////////// // Bookmarks //////////////////// declare module chrome.bookmarks { interface BookmarkTreeNode { index?: number; dateAdded?: number; title: string; url?: string; dateGroupModified?: number; id: string; parentId?: string; children?: BookmarkTreeNode[]; } interface BookmarkRemoveInfo { index: number; parentId: string; } interface BookmarkMoveInfo { index: number; oldIndex: number; parentId: string; oldParentId: string; } interface BookmarkChangeInfo { url?: string; title: string; } interface BookmarkReorderInfo { childIds: string[]; } interface BookmarkRemovedEvent extends chrome.events.Event { addListener(callback: (id: string, removeInfo: BookmarkRemoveInfo) => void): void; } interface BookmarkImportEndedEvent extends chrome.events.Event { addListener(callback: Function): void; } interface BookmarkMovedEvent extends chrome.events.Event { addListener(callback: (id: string, moveInfo: BookmarkMoveInfo) => void): void; } interface BookmarkImportBeganEvent extends chrome.events.Event { addListener(callback: Function): void; } interface BookmarkChangedEvent extends chrome.events.Event { addListener(callback: (id: string, changeInfo: BookmarkChangeInfo) => void): void; } interface BookmarkCreatedEvent extends chrome.events.Event { addListener(callback: (id: string, bookmark: BookmarkTreeNode) => void): void; } interface BookmarkChildrenReordered extends chrome.events.Event { addListener(callback: (id: string, reorderInfo: BookmarkReorderInfo) => void): void; } var MAX_WRITE_OPERATIONS_PER_HOUR: number; var MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE: number; export function search(query: string, callback: (results: BookmarkTreeNode[]) => void): void; export function getTree(callback: (results: BookmarkTreeNode[]) => void): void; export function getRecent(numberOfItems: number, callback: (results: BookmarkTreeNode[]) => void): void; export function get(id: string, callback: (results: BookmarkTreeNode[]) => void): void; export function get(idList: string[], callback: (results: BookmarkTreeNode[]) => void): void; export function create(bookmark: Object, callback?: (result: BookmarkTreeNode) => void): void; export function move(id: string, destination: Object, callback?: (result: BookmarkTreeNode) => void): void; export function update(id: string, changes: Object, callback?: (result: BookmarkTreeNode) => void): void; export function remove(id: string, callback?: Function): void; export function getChildren(id: string, callback: (results: BookmarkTreeNode[]) => void): void; export function getSubTree(id: string, callback: (results: BookmarkTreeNode[]) => void): void; export function removeTree(id: string, callback?: Function): void; var onRemoved: BookmarkRemovedEvent; var onImportEnded: BookmarkImportEndedEvent; var onImportBegan: BookmarkImportBeganEvent; var onChanged: BookmarkChangedEvent; var onCreated: BookmarkCreatedEvent; var onChildrenReordered: BookmarkChildrenReordered; } //////////////////// // Browser Action //////////////////// declare module chrome.browserAction { interface BadgeBackgroundColorDetails { color: any; tabId?: number; } interface BadgeTextDetails { text: string; tabId?: number; } interface TitleDetails { title: string; tabId?: number; } interface TabDetails { tabId?: number; } interface TabIconDetails { path?: any; tabId?: number; imageData?: ImageData; } interface PopupDetails { tabId?: number; popup: string; } interface BrowserClickedEvent extends chrome.events.Event { addListener(callback: (tab: chrome.tabs.Tab) => void): void; } export function enable(tabId?: number): void; export function setBadgeBackgroundColor(details: BadgeBackgroundColorDetails): void; export function setBadgeText(details: BadgeTextDetails): void; export function setTitle(details: TitleDetails): void; export function getBadgeText(details: TabDetails, callback: (result: string) => void): void; export function setPopup(details: PopupDetails): void; export function disable(tabId?: number): void; export function getTitle(details: TabDetails, callback: (result: string) => void): void; export function getBadgeBackgroundColor(details: TabDetails, callback: (result: number[]) => void): void; export function getPopup(details: TabDetails, callback: (result: string) => void): void; export function setIcon(details: TabIconDetails, callback?: Function): void; var onClicked: BrowserClickedEvent; } //////////////////// // Browsing Data //////////////////// declare module chrome.browsingData { interface OriginTypes { protectedWeb?: boolean; extension?: boolean; unprotectedWeb?: boolean; } interface RemovalOptions { originTypes?: OriginTypes; since?: number; } interface DataToRemove { webSQL?: boolean; indexedDB?: boolean; cookies?: boolean; passwords?: boolean; serverBoundCertificates?: boolean; downloads?: boolean; cache?: boolean; appcache?: boolean; fileSystems?: boolean; pluginData?: boolean; localStorage?: boolean; formData?: boolean; history?: boolean; } export function removePluginData(options: RemovalOptions, callback?: Function): void; export function removeFormData(options: RemovalOptions, callback?: Function): void; export function removeFileSystems(options: RemovalOptions, callback?: Function): void; export function remove(options: RemovalOptions, dataToRemove: DataToRemove, callback?: Function): void; export function removePasswords(options: RemovalOptions, callback?: Function): void; export function removeCookies(options: RemovalOptions, callback?: Function): void; export function removeWebSQL(options: RemovalOptions, callback?: Function): void; export function removeAppcache(options: RemovalOptions, callback?: Function): void; export function removeDownloads(options: RemovalOptions, callback?: Function): void; export function removeLocalStorage(options: RemovalOptions, callback?: Function): void; export function removeCache(options: RemovalOptions, callback?: Function): void; export function removeHistory(options: RemovalOptions, callback?: Function): void; export function removeIndexedDB(options: RemovalOptions, callback?: Function): void; } //////////////////// // Commands //////////////////// declare module chrome.commands { interface CommandEvent extends chrome.events.Event { addListener(callback: (command: string) => void): void; } var onCommand: CommandEvent; } //////////////////// // Content Settings //////////////////// declare module chrome.contentSettings { interface ClearDetails { scope?: string; } interface SetDetails { resourceIdentifier?: ResourceIdentifier; setting: any; secondaryPattern?: string; scope?: string; primaryPattern: string; } interface GetDetails { secondaryUrl?: string; resourceIdentifier?: ResourceIdentifier; incognito?: boolean; primaryUrl: string; } interface ReturnedDetails { setting: any; } interface ContentSetting { clear(details: ClearDetails, callback?: Function): void; set(details: SetDetails, callback?: Function): void; getResourceIdentifiers(callback: (resourceIdentifiers: ResourceIdentifier[]) => void): void; get(details: GetDetails, callback: (details: ReturnedDetails) => void): void; } interface ResourceIdentifier { id: string; description?: string; } var cookies: ContentSetting; var popups: ContentSetting; var javascript: ContentSetting; var notifications: ContentSetting; var plugins: ContentSetting; var images: ContentSetting; } //////////////////// // Context Menus //////////////////// declare module chrome.contextMenus { interface OnClickData { selectionText?: string; checked?: boolean; menuItemId: any; frameUrl?: string; editable: boolean; mediaType?: string; wasChecked?: boolean; pageUrl: string; linkUrl?: string; parentMenuItemId?: any; } interface CreateProperties { documentUrlPatterns?: string[]; checked?: boolean; title?: string; contexts?: string[]; enabled?: boolean; targetUrlPatterns?: string[]; onclick?: (info: OnClickData, tab: chrome.tabs.Tab) => void; parentId?: any; type?: string; id?: string; } interface UpdateProperties { documentUrlPatterns?: string[]; checked?: boolean; title?: string; contexts?: string[]; enabled?: boolean; targetUrlPatterns?: string[]; onclick?: Function; parentId?: any; type?: string; } interface MenuClickedEvent extends chrome.events.Event { addListener(callback: (info: OnClickData, tab?: chrome.tabs.Tab) => void): void; } export function removeAll(callback?: Function): void; export function create(createProperties: CreateProperties, callback?: Function): void; export function update(id: any, updateProperties: UpdateProperties, callback?: Function): void; export function remove(menuItemId: any, callback?: Function): void; var onClicked: MenuClickedEvent; } //////////////////// // Cookies //////////////////// declare module chrome.cookies { interface Cookie { domain: string; name: string; storeId: string; value: string; session: boolean; hostOnly: boolean; expirationDate?: number; path: string; httpOnly: boolean; secure: boolean; } interface CookieStore { id: string; tabIds: number[]; } interface GetAllDetails { domain?: string; name?: string; url?: string; storeId?: string; session?: boolean; path?: string; secure?: boolean; } interface SetDetails { domain?: string; name?: string; url: string; storeId?: string; value?: string; expirationDate?: number; path?: string; httpOnly?: boolean; secure?: boolean; } interface Details { name: string; url: string; storeId?: string; } interface CookieChangeInfo { cookie: Cookie; removed: boolean; cause: string; } interface CookieChangedEvent extends chrome.events.Event { addListener(callback: (changeInfo: CookieChangeInfo) => void): void; } export function getAllCookieStores(callback: (cookieStores: CookieStore[]) => void): void; export function getAll(details: GetAllDetails, callback: (cookies: Cookie) => void): void; export function set(details: SetDetails, callback?: (cookie?: Cookie) => void): void; export function remove(details: Details, callback?: (details: Details) => void): void; export function get(details: Details, callback: (cookie?: Cookie) => void): void; var onChanged: CookieChangedEvent; } //////////////////// // Debugger //////////////////// declare module "chrome.debugger" { interface Debuggee { tabId: number; } interface DebuggerDetachedEvent extends chrome.events.Event { addListener(callback: (source: Debuggee) => void): void; } interface DebuggerEventEvent extends chrome.events.Event { addListener(callback: (source: Debuggee, method: string, params?: Object) => void): void; } export function attach(target: Debuggee, requiredVersion: string, callback?: Function): void; export function detach(target: Debuggee, callback?: Function): void; export function sendCommand(target: Debuggee, method: string, commandParams?: Object, callback?: (result: Object) => void): void; var onDetach: DebuggerDetachedEvent; var onEvent: DebuggerEventEvent; } //////////////////// // Declarative Web Request //////////////////// declare module chrome.declarativeWebRequest { interface HeaderFilter { nameEquals?: string; valueContains?: any; nameSuffix?: string; valueSuffix?: string; valuePrefix?: string; nameContains?: any; valueEquals?: string; namePrefix?: string; } interface AddResponseHeader { name: string; value: string; } interface RemoveResponseCookie { filter: ResponseCookie; } interface RemoveResponseHeader { name: string; value?: string; } interface RequestMatcher { contentType?: string[]; url?: chrome.events.UrlFilter; excludeContentType?: string[]; excludeResponseHeader?: HeaderFilter[]; resourceType?: string; responseHeaders?: HeaderFilter[]; } interface IgnoreRules { lowerPriorityThan: number; } interface RedirectToEmptyDocument {} interface RedirectRequest { redirectUrl: string; } interface ResponseCookie { domain?: string; name?: string; expires?: string; maxAge?: number; value?: string; path?: string; httpOnly?: string; secure?: string; } interface AddResponseCookie { cookie: ResponseCookie; } interface EditResponseCookie { filter: ResponseCookie; modification: ResponseCookie; } interface CancelRequest {} interface RemoveRequestHeader { name: string; } interface EditRequestCookie { filter: RequestCookie; modification: RequestCookie; } interface SetRequestHeader { name: string; value: string; } interface RequestCookie { name?: string; value?: string; } interface RedirectByRegEx { to: string; from: string; } interface RedirectToTransparentImage {} interface AddRequestCookie { cookie: RequestCookie; } interface RemoveRequestCookie { filter: RequestCookie; } interface RequestedEvent extends chrome.events.Event { addListener(callback: Function): void; } var onRequest: RequestedEvent; } //////////////////// // Dev Tools - Inspected Window //////////////////// declare module chrome.devtools.inspectedWindow { interface Resource { url: string; getContent(callback: (content: string, encoding: string) => void): void; setContent(content: string, commit: boolean, callback?: (error: Object) => void): void; } interface ReloadOptions { userAgent?: string; ignoreCache?: boolean; injectedScript?: boolean; } interface ResourceAddedEvent extends chrome.events.Event { addListener(callback: (resource: Resource) => void): void; } interface ResourceContentCommittedEvent extends chrome.events.Event { addListener(callback: (resource: Resource, content: string) => void): void; } var tabId: number; export function reload(reloadOptions: ReloadOptions): void; export function eval(expression: string, callback?: (result: Object, isException: boolean) => void): void; export function getResources(callback: (resources: Resource[]) => void): void; var onResourceAdded: ResourceAddedEvent; var onResourceContentCommitted: ResourceContentCommittedEvent; } //////////////////// // Dev Tools - Network //////////////////// declare module chrome.devtools.network { interface Request { getContent(callback: (content: string, encoding: string) => void): void; } interface RequestFinishedEvent extends chrome.events.Event { addListener(callback: (request: Request) => void): void; } interface NavigatedEvent extends chrome.events.Event { addListener(callback: (url: string) => void): void; } export function getHAR(callback: (harLog: Object) => void): void; var onRequestFinished: RequestFinishedEvent; var onNavigated: NavigatedEvent; } //////////////////// // Dev Tools - Panels //////////////////// declare module chrome.devtools.panels { interface PanelShownEvent extends chrome.events.Event { addListener(callback: (window: chrome.windows.Window) => void): void; } interface PanelHiddenEvent extends chrome.events.Event { addListener(callback: Function): void; } interface PanelSearchEvent extends chrome.events.Event { addListener(callback: (action: string, queryString?: string) => void): void; } interface ExtensionPanel { createStatusButton(iconPath: string, tooltipText: string, disabled: boolean): Button; onShown: PanelShownEvent; onHidden: PanelHiddenEvent; onSearch: PanelSearchEvent; } interface ButtonClickedEvent extends chrome.events.Event { addListener(callback: Function): void; } interface Button { update(iconPath?: string, tooltipText?: string, disabled?: boolean): void; onClicked: ButtonClickedEvent; } interface SelectionChangedEvent extends chrome.events.Event { addListener(callback: Function): void; } interface ElementsPanel { createSidebarPane(title: string, callback?: (result: ExtensionSidebarPane) => void): void; onSelectionChanged: SelectionChangedEvent; } interface ExtensionSidebarPaneShownEvent extends chrome.events.Event { addListener(callback: (window: chrome.windows.Window) => void): void; } interface ExtensionSidebarPaneHiddenEvent extends chrome.events.Event { addListener(callback: Function): void; } interface ExtensionSidebarPane { setHeight(height: string): void; setExpression(expression: string, rootTitle?: string, callback?: Function): void; setObject(jsonObject: string, rootTitle?: string, callback?: Function): void; setPage(path: string): void; onShown: ExtensionSidebarPaneShownEvent; onHidden: ExtensionSidebarPaneHiddenEvent; } var elements: ElementsPanel; export function create(title: string, iconPath: string, pagePath: string, callback?: (panel: ExtensionPanel) => void): void; export function setOpenResourceHandler(callback: (resource: chrome.devtools.inspectedWindow.Resource) => void): void; } //////////////////// // Dev Tools - Downloads //////////////////// declare module chrome.downloads { interface HeaderNameValuePair { name: string; value: string; } interface DownloadOptions { body?: string; saveAs?: boolean; url: string; filename?: string; headers?: HeaderNameValuePair[]; method?: string; } interface DownloadDelta { danger?: DownloadStringDiff; url?: DownloadStringDiff; totalBytes?: DownloadStringDiff; dangerAccepted?: DownloadBooleanDiff; filename?: DownloadStringDiff; paused?: DownloadBooleanDiff; state?: DownloadStringDiff; mime?: DownloadStringDiff; fileSize?: DownloadLongDiff; startTime?: DownloadLongDiff; error?: DownloadLongDiff; endTime?: DownloadLongDiff; id: number; } interface DownloadBooleanDiff { current?: boolean; previous?: boolean; } interface DownloadLongDiff { current?: number; previous?: number; } interface DownloadStringDiff { current?: string; previous?: string; } interface DownloadItem { bytesReceived: number; danger: string; url: string; totalBytes: number; dangerAccepted?: boolean; filename: string; paused: boolean; state: string; mime: string; fileSize: number; startTime: number; error?: number; endTime?: number; id: number; incognito: boolean; } interface GetFileIconOptions { size?: number; } interface DownloadQuery { orderBy?: string; urlRegex?: string; endedBefore?: number; totalBytesGreater?: number; danger?: string; totalBytes?: number; paused?: boolean; filenameRegex?: string; query?: string; totalBytesLess?: number; id?: number; bytesReceived?: number; endedAfter?: number; filename?: string; state?: string; startedAfter?: number; dangerAccepted?: boolean; mime?: string; fileSize?: number; startTime?: number; url?: string; startedBefore?: number; limit?: number; error?: number; endTime?: number; } interface DownloadChangedEvent extends chrome.events.Event { addListener(callback: (downloadDelta: DownloadDelta) => void): void; } interface DownloadCreatedEvent extends chrome.events.Event { addListener(callback: (downloadItem: DownloadItem) => void): void; } interface DownloadErasedEvent extends chrome.events.Event { addListener(callback: (downloadId: number) => void): void; } export function search(query: DownloadQuery, callback: (results: DownloadItem[]) => void): void; export function pause(downloadId: number, callback?: Function): void; export function getFileIcon(downloadId: number, callback: (iconURL: string) => void): void; export function getFileIcon(downloadId: number, options: GetFileIconOptions, callback: (iconURL: string) => void): void; export function resume(downloadId: number, callback?: Function): void; export function cancel(downloadId: number, callback?: Function): void; export function download(options: DownloadOptions, callback?: (downloadId: number) => void): void; export function open(downloadId: number): void; export function show(downloadId: number): void; export function showDefaultFolder(): void; export function erase(query: DownloadQuery, callback: (results: DownloadItem[]) => void): void; export function removeFile(downloadId: number, callback: () => void): void; export function acceptDanger(downloadId: number, callback: () => void): void; export function drag(downloadId: number): void; export function setShelfEnabled(enabled: boolean): void; var onChanged: DownloadChangedEvent; var onCreated: DownloadCreatedEvent; var onErased: DownloadErasedEvent; } //////////////////// // Events //////////////////// declare module chrome.events { interface UrlFilter { schemes?: string[]; urlMatches?: string; pathContains?: string; hostSuffix?: string; hostPrefix?: string; hostContains?: string; urlContains?: string; querySuffix?: string; urlPrefix?: string; hostEquals?: string; urlEquals?: string; queryContains?: string; pathPrefix?: string; pathEquals?: string; pathSuffix?: string; queryEquals?: string; queryPrefix?: string; urlSuffix?: string; ports?: any[]; } interface Event { addListener(callback: Function): void; getRules(callback: (rules: Rule[]) => void): void; getRules(ruleIdentifiers: string[], callback: (rules: Rule[]) => void): void; hasListener(callback: Function): void; removeRules(ruleIdentifiers?: string[], callback?: Function): void; addRules(rules: Rule[], callback?: (rules: Rule[]) => void): void; removeListener(callback: Function): void; hasListeners(): boolean; } interface Rule { priority?: number; conditions: any[]; id?: string; actions: any[]; } } //////////////////// // Extension //////////////////// declare module chrome.extension { interface FetchProperties { windowId?: number; type?: string; } interface LastError { message?: string; } var inIncognitoContext: boolean; var lastError: LastError; export function getBackgroundPage(): Window; export function getURL(path: string): string; export function setUpdateUrlData(data: string): void; export function getViews(fetchProperties?: FetchProperties): Window[]; export function isAllowedFileSchemeAccess(callback: (isAllowedAccess: boolean) => void): void; export function isAllowedIncognitoAccess(callback: (isAllowedAccess: boolean) => void): void; } //////////////////// // File Browser Handler //////////////////// declare module chrome.fileBrowserHandler { interface SelectionParams { allowedFileExtensions?: string[]; suggestedName: string; } interface SelectionResult { entry?: Object; success: boolean; } interface FileHandlerExecuteEventDetails { tab_id?: number; entries: any[]; selectFile(selectionParams: SelectionParams, callback:(result: SelectionResult) => void): void; } interface FileBrowserHandlerExecuteEvent extends chrome.events.Event { addListener(callback: (id: string, details: FileHandlerExecuteEventDetails) => void): void; } var onExecute: FileBrowserHandlerExecuteEvent; } //////////////////// // Font Settings //////////////////// declare module chrome.fontSettings { interface FontName { displayName: string; fontId: string; } interface DefaultFontSizeDetails { pixelSize: number; } interface FontDetails { genericFamily: string; script?: string; } interface FullFontDetails { genericFamily: string; levelOfControl: string; script?: string; fontId: string; } interface FontDetailsResult { levelOfControl: string; fontId: string; } interface FontSizeDetails { pixelSize: number; levelOfControl: string; } interface SetFontSizeDetails { pixelSize: number; } interface SetFontDetails { genericFamily: string; script?: string; fontId: string; } interface DefaultFixedFontSizeChangedEvent extends chrome.events.Event { addListener(callback: (details: FontSizeDetails) => void): void; } interface DefaultFontSizeChangedEvent extends chrome.events.Event { addListener(callback: (details: FontSizeDetails) => void): void; } interface MinimumFontSizeChangedEvent extends chrome.events.Event { addListener(callback: (details: FontSizeDetails) => void): void; } interface FontChangedEvent extends chrome.events.Event { addListener(callback: (details: FullFontDetails) => void): void; } export function setDefaultFontSize(details: DefaultFontSizeDetails, callback?: Function): void; export function getFont(details: FontDetails, callback?: (details: FontDetailsResult) => void): void; export function getDefaultFontSize(details?: FontSizeDetails, callback?: (options: FontSizeDetails) => void): void; export function getMinimumFontSize(details?: FontSizeDetails, callback?: (options: FontSizeDetails) => void): void; export function setMinimumFontSize(details: SetFontSizeDetails, callback?: Function): void; export function getDefaultFixedFontSize(details?: Object, callback?: (details: FontSizeDetails) => void): void; export function clearDefaultFontSize(details?: Object, callback?: Function): void; export function setDefaultFixedFontSize(details: SetFontSizeDetails, callback?: Function): void; export function clearFont(details: FontDetails, callback?: Function): void; export function setFont(details: SetFontDetails, callback?: Function): void; export function clearMinimumFontSize(details?: Object, callback?: Function): void; export function getFontList(callback: (results: FontName[]) => void): void; export function clearDefaultFixedFontSize(details: Object, callback?: Function): void; var onDefaultFixedFontSizeChanged: DefaultFixedFontSizeChangedEvent; var onDefaultFontSizeChanged: DefaultFontSizeChangedEvent; var onMinimumFontSizeChanged: MinimumFontSizeChangedEvent; var onFontChanged: FontChangedEvent; } //////////////////// // History //////////////////// declare module chrome.history { interface VisitItem { transition: string; visitTime?: number; visitId: string; referringVisitId: string; id: string; } interface HistoryItem { typedCount?: number; title?: string; url?: string; lastVisitTime?: number; visitCount?: number; id: string; } interface HistoryQuery { text: string; maxResults?: number; startTime?: number; endTime?: number; } interface Url { url: string; } interface Range { endTime: number; startTime: number; } interface RemovedResult { allHistory: boolean; urls?: string[]; } interface HistoryVisitedEvent extends chrome.events.Event { addListener(callback: (result: HistoryItem) => void): void; } interface HistoryVisitRemovedEvent extends chrome.events.Event { addListener(callback: (removed: RemovedResult) => void): void; } export function search(query: HistoryQuery, callback: (results: HistoryItem[]) => void): void; export function addUrl(details: Url, callback?: Function): void; export function deleteRange(range: Range, callback: Function): void; export function deleteAll(callback: Function): void; export function getVisits(details: Url, callback: (results: VisitItem[]) => void): void; export function deleteUrl(details: Url, callback?: Function): void; var onVisited: HistoryVisitedEvent; var onVisitRemoved: HistoryVisitRemovedEvent; } //////////////////// // Identity //////////////////// declare module chrome.identity { var getAuthToken: (options:any, cb:(token:{})=>void)=>void; } //////////////////// // Internationalization //////////////////// declare module chrome.i18n { export function getMessage(messageName: string, substitutions?: any): string; export function getAcceptLanguages(callback: (languages: string[]) => void): void; } //////////////////// // Idle //////////////////// declare module chrome.idle { interface IdleStateChangedEvent extends chrome.events.Event { addListener(callback: (newState: string) => void): void; } export function queryState(thresholdSeconds: number, callback: (newState: string) => void): void; var onStateChanged: IdleStateChangedEvent; } //////////////////// // Input - IME //////////////////// declare module chrome.input.ime { interface KeyboardEvent { shiftKey?: boolean; altKey?: boolean; requestId: string; key: string; ctrlKey?: boolean; type: string; } interface InputContext { contextID: number; type: string; } interface ImeParameters { items: Object[]; engineID: string; } interface CommitTextParameters { text: string; contextID: number; } interface CandidatesParameters { contextID: number; candidates: Object[]; } interface CompositionParameters { contextID: number; text: string; segments: Object[]; cursor: number; selectionStart?: number; selectionEnd?: number; } interface MenuItemParameters { items: Object[]; engineId: string; } interface CandidateWindowPropertiesParameters { cursorVisible?: boolean; vertical?: boolean; pageSize?: number; auxiliaryTextVisible?: boolean; auxiliaryText?: string; visible?: boolean; } interface ClearCompositionParameters { contextID: number; } interface CursorPositionParameters { candidateID: number; contextID: number; } interface BlurEvent extends chrome.events.Event { addListener(callback: (contextID: number) => void): void; } interface CandidateClickedEvent extends chrome.events.Event { addListener(callback: (engineID: string, candidateID: number, button: string) => void): void; } interface KeyEventEvent extends chrome.events.Event { addListener(callback: (engineID: string, keyData: KeyboardEvent) => void): void; } interface DeactivatedEvent extends chrome.events.Event { addListener(callback: (engineID: string) => void): void; } interface InputContextUpdateEvent extends chrome.events.Event { addListener(callback: (context: InputContext) => void): void; } interface ActivateEvent extends chrome.events.Event { addListener(callback: (engineID: string) => void): void; } interface FocusEvent extends chrome.events.Event { addListener(callback: (context: InputContext) => void): void; } interface MenuItemActivatedEvent extends chrome.events.Event { addListener(callback: (engineID: string, name: string) => void): void; } export function setMenuItems(parameters: ImeParameters, callback?: Function): void; export function commitText(parameters: CommitTextParameters, callback?: (success: boolean) => void): void; export function setCandidates(parameters: CandidatesParameters, callback?: (success: boolean) => void): void; export function setComposition(parameters: CompositionParameters, callback?: (success: boolean) => void): void; export function updateMenuItems(parameters: MenuItemParameters, callback?: Function): void; export function setCandidateWindowProperties(parameters: CandidateWindowPropertiesParameters, callback?: (success: boolean) => void): void; export function clearComposition(parameters: ClearCompositionParameters, callback?: (success: boolean) => void): void; export function setCursorPosition(parameters: CursorPositionParameters, callback?: (success: boolean) => void): void; var onBlur: BlurEvent; var onCandidateClicked: CandidateClickedEvent; var onKeyEvent: KeyEventEvent; var onDeactivated: DeactivatedEvent; var onInputContextUpdate: InputContextUpdateEvent; var onActivate: ActivateEvent; var onFocus: FocusEvent; var onMenuItemActivated: MenuItemActivatedEvent; } //////////////////// // Management //////////////////// declare module chrome.management { interface ExtensionInfo { disabledReason?: string; appLaunchUrl?: string; description: string; permissions: string[]; icons?: IconInfo[]; hostPermissions: string[]; enabled: boolean; homepageUrl?: string; mayDisable: boolean; installType: string; version: string; id: string; offlineEnabled: boolean; updateUrl?: string; type: string; optionsUrl: string; name: string; } interface IconInfo { url: string; size: number; } interface UninstallOptions { showConfirmDialog?: boolean; } interface ManagementDisabledEvent extends chrome.events.Event { addListener(callback: (info: ExtensionInfo) => void): void; } interface ManagementUninstalledEvent extends chrome.events.Event { addListener(callback: (id: string) => void): void; } interface ManagementInstalledEvent extends chrome.events.Event { addListener(callback: (info: ExtensionInfo) => void): void; } interface ManagementEnabledEvent extends chrome.events.Event { addListener(callback: (info: ExtensionInfo) => void): void; } export function setEnabled(id: string, enabled: boolean, callback?: Function): void; export function getPermissionWarningsById(id: string, callback?: (permissionWarnings: string[]) => void): void; export function get(id: string, callback?: (result: ExtensionInfo) => void): void; export function getAll(callback?: (result: ExtensionInfo[]) => void): void; export function getPermissionWarningsByManifest(manifestStr: string, callback?: (permissionwarnings: string[]) => void): void; export function launchApp(id: string, callback?: Function): void; export function uninstall(id: string, options: UninstallOptions, callback?: Function): void; var onDisabled: ManagementDisabledEvent; var onUninstalled: ManagementUninstalledEvent; var onInstalled: ManagementInstalledEvent; var onEnabled: ManagementEnabledEvent; } //////////////////// // Notifications // https://developer.chrome.com/extensions/notifications //////////////////// declare module chrome.notifications { interface ButtonOptions { title: string; iconUrl?: string; } interface ItemOptions { title: string; message: string; } interface NotificationOptions { type?: string; iconUrl?: string; title?: string; message?: string; contextMessage?: string; priority?: number; eventTime?: number; buttons?: Array; items?: Array; progress?: number; isClickable?: boolean; } interface OnClosed { addListener(callback: (notificationId: string, byUser: boolean) => void): void; } interface OnClicked { addListener(callback: (notificationId: string) => void): void; } interface OnButtonClicked { addListener(callback: (notificationId: string, buttonIndex: number) => void): void; } interface OnPermissionLevelChanged { addListener(callback: (level: string) => void): void; } interface OnShowSettings { addListener(callback: Function): void; } export var onClosed: OnClosed; export var onClicked: OnClicked; export var onButtonClicked: OnButtonClicked; export var onPermissionLevelChanged: OnPermissionLevelChanged; export var onShowSettings: OnShowSettings; export function create(notificationId: string, options: NotificationOptions, callback: (notificationId: string) => void): void; export function update(notificationId: string, options: NotificationOptions, callback: (wasUpdated: boolean) => void): void; export function clear(notificationId: string, callback: (wasCleared: boolean) => void): void; export function getAll(callback: (notifications: any) => void): void; export function getPermissionLevel(callback: (level: string) => void): void; } //////////////////// // Omnibox //////////////////// declare module chrome.omnibox { interface SuggestResult { content: string; description: string; } interface Suggestion { description: string; } interface OmniboxInputEnteredEvent extends chrome.events.Event { addListener(callback: (text: string) => void): void; } interface OmniboxInputChangedEvent extends chrome.events.Event { addListener(callback: (text: string, suggest: (suggestResults: SuggestResult[]) => void) => void): void; } interface OmniboxInputStartedEvent extends chrome.events.Event { addListener(callback: Function): void; } interface OmniboxInputCancelledEvent extends chrome.events.Event { addListener(callback: Function): void; } export function setDefaultSuggestion(suggestion: Suggestion): void; var onInputEntered: OmniboxInputEnteredEvent; var onInputChanged: OmniboxInputChangedEvent; var onInputStarted: OmniboxInputStartedEvent; var onInputCancelled: OmniboxInputCancelledEvent; } //////////////////// // Page Action //////////////////// declare module chrome.pageAction { interface PageActionClickedEvent extends chrome.events.Event { addListener(callback: (tab: chrome.tabs.Tab) => void): void; } interface TitleDetails { tabId: number; title: string; } interface GetDetails { tabId: number; } interface PopupDetails { tabId: number; popup: string; } interface IconDetails { tabId: number; iconIndex?: number; imageData?: ImageData; path?: any; } export function hide(tabId: number): void; export function show(tabId: number): void; export function setTitle(details: TitleDetails): void; export function setPopup(details: PopupDetails): void; export function getTitle(details: GetDetails, callback: (result: string) => void): void; export function getPopup(details: GetDetails, callback: (result: string) => void): void; export function setIcon(details: IconDetails, callback?: Function): void; var onClicked: PageActionClickedEvent; } //////////////////// // Page Capture //////////////////// declare module chrome.pageCapture { interface SaveDetails { tabId: number; } export function saveAsMHTML(details: SaveDetails, callback: (mhtmlData: any) => void): void; } //////////////////// // Permissions //////////////////// declare module chrome.permissions { interface Permissions { origins?: string[]; permissions?: string[]; } interface PermissionsRemovedEvent { addListener(callback: (permissions: Permissions) => void): void; } interface PermissionsAddedEvent { addListener(callback: (permissions: Permissions) => void): void; } export function contains(permissions: Permissions, callback: (result: boolean) => void): void; export function getAll(callback: (permissions: Permissions) => void): void; export function request(permissions: Permissions, callback?: (granted: boolean) => void): void; export function remove(permissions: Permissions, callback?: (removed: boolean) => void): void; var onRemoved: PermissionsRemovedEvent; var onAdded: PermissionsAddedEvent; } //////////////////// // Privacy //////////////////// declare module chrome.privacy { interface Services { spellingServiceEnabled: chrome.types.ChromeSetting; searchSuggestEnabled: chrome.types.ChromeSetting; instantEnabled: chrome.types.ChromeSetting; alternateErrorPagesEnabled: chrome.types.ChromeSetting; safeBrowsingEnabled: chrome.types.ChromeSetting; autofillEnabled: chrome.types.ChromeSetting; translationServiceEnabled: chrome.types.ChromeSetting; } interface Network { networkPredictionEnabled: chrome.types.ChromeSetting; } interface Websites { thirdPartyCookiesAllowed: chrome.types.ChromeSetting; referrersEnabled: chrome.types.ChromeSetting; hyperlinkAuditingEnabled: chrome.types.ChromeSetting; protectedContentEnabled: chrome.types.ChromeSetting; } var services: Services; var network: Network; var websites: Websites; } //////////////////// // Proxy //////////////////// declare module chrome.proxy { interface PacScript { url?: string; mandatory?: boolean; data?: string; } interface ProxyConfig { rules?: ProxyRules; pacScript?: PacScript; mode: string; } interface ProxyServer { host: string; scheme?: string; port?: number; } interface ProxyRules { proxyForFtp?: ProxyServer; proxyForHttp?: ProxyServer; facllbackProxy?: ProxyServer; singleProxy?: ProxyServer; proxyForHttps?: ProxyServer; bypassList?: string[]; } interface ErrorDetails { details: string; error: string; fatal: boolean; } interface ProxyErrorEvent extends chrome.events.Event { addListener(callback: (details: ErrorDetails) => void): void; } var settings: chrome.types.ChromeSetting; var onProxyError: ProxyErrorEvent; } //////////////////// // Runtime //////////////////// declare module chrome.runtime { var lastError: LastError; var id: string; interface LastError { message?: string; } interface ConnectInfo { name?: string; } interface InstalledDetails { reason: string; previousVersion?: string; } interface MessageOptions { includeTlsChannelId?: boolean; } interface MessageSender { id: string; tab?: chrome.tabs.Tab; } interface PlatformInfo { os: string; arch: string; nacl_arch: string; } interface Port { postMessage: Function; sender?: MessageSender; onDisconnect: chrome.events.Event; onMessage: chrome.events.Event; name: string; } interface UpdateAvailableDetails { version: string; } interface UpdateCheckDetails { version: string; } interface ExtensionMessageEvent extends chrome.events.Event { addListener(callback: (message: any, sender: MessageSender, sendResponse: Function) => void): void; } interface ExtensionMessageExternalEvent extends chrome.events.Event { addListener(callback: (message: any, sender: MessageSender, sendResponse: Function) => void): void; } interface ExtensionConnectEvent extends chrome.events.Event { addListener(callback: (port: Port) => void): void; } interface ExtensionConnectExternalEvent extends chrome.events.Event { addListener(callback: (port: Port) => void): void; } interface RuntimeSuspendEvent extends chrome.events.Event { addListener(callback: Function): void; } interface RuntimeStartupEvent extends chrome.events.Event { addListener(callback: Function): void; } interface RuntimeInstalledEvent extends chrome.events.Event { addListener(callback: (details: InstalledDetails) => void): void; } interface RuntimeSuspendCanceledEvent extends chrome.events.Event { addListener(callback: Function): void; } interface RuntimeMessageEvent extends chrome.events.Event { addListener(callback: Function): void; } interface RuntimeRestartRequiredEvent extends chrome.events.Event { addListener(callback: (reason: string) => void): void; } interface RuntimeUpdateAvailableEvent extends chrome.events.Event { addListener(callback: (details: UpdateAvailableDetails) => void): void; } export function connect(connectInfo?: ConnectInfo): Port; export function connect(extensionId: string, connectInfo?: ConnectInfo): Port; export function connectNative(application: string): Port; export function getBackgroundPage(callback: (backgroundPage?: Window) => void): void; export function getManifest(): Object; export function getPackageDirectoryEntry(callback: (directoryEntry: any) => void): void; export function getPlatformInfo(callback: (platformInfo: PlatformInfo) => void): void; export function getURL(path: string): string; export function reload(): void; export function requestUpdateCheck(callback: (status: string, details?: UpdateCheckDetails) => void): void; export function restart(): void; export function sendMessage(message: any, responseCallback?: (response: any) => void): void; export function sendMessage(message: any, options: MessageOptions, responseCallback?: (response: any) => void): void; export function sendMessage(extensionId: string, message: any, responseCallback?: (response: any) => void): void; export function sendMessage(extensionId: string, message: any, options: MessageOptions, responseCallback?: (response: any) => void): void; export function sendNativeMessage(application: string, message: any, responseCallback?: (response: any) => void ): void; export function setUninstallUrl(url: string): void; var onConnect: ExtensionConnectEvent; var onConnectExternal: ExtensionConnectExternalEvent; var onSuspend: RuntimeSuspendEvent; var onStartup: RuntimeStartupEvent; var onInstalled: RuntimeInstalledEvent; var onSuspendCanceled: RuntimeSuspendCanceledEvent; var onMessage: RuntimeMessageEvent; var onMessageExternal: RuntimeMessageEvent; var onRestartRequired: RuntimeRestartRequiredEvent; var onUpdateAvailable: RuntimeUpdateAvailableEvent; } //////////////////// // Script Badge //////////////////// declare module chrome.scriptBadge { interface GetPopupDetails { tabId: number; } interface AttentionDetails { tabId: number; } interface SetPopupDetails { tabId: number; popup: string; } interface ScriptBadgeClickedEvent extends chrome.events.Event { addListener(callback: (tab: chrome.tabs.Tab) => void): void; } export function getPopup(details: GetPopupDetails, callback: Function): void; export function getAttention(details: AttentionDetails): void; export function setPopup(details: SetPopupDetails): void; var onClicked: ScriptBadgeClickedEvent; } //////////////////// // Storage //////////////////// declare module chrome.storage { interface StorageArea { getBytesInUse(callback: (bytesInUse: number) => void): void; getBytesInUse(keys: string, callback: (bytesInUse: number) => void): void; getBytesInUse(keys: string[], callback: (bytesInUse: number) => void): void; clear(callback?: Function): void; set(items: Object, callback?: Function): void; remove(keys: string, callback?: Function): void; remove(keys: string[], callback?: Function): void; get(callback: (items: Object) => void): void; get(keys: string, callback: (items: Object) => void): void; get(keys: string[], callback: (items: Object) => void): void; get(keys: Object, callback: (items: Object) => void): void; } interface StorageChange { newValue?: any; oldValue?: any; } interface Local extends StorageArea { QUOTA_BYTES: number; } interface Sync extends StorageArea { MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE: number; QUOTA_BYTES: number; QUOTA_BYTES_PER_ITEM: number; MAX_ITEMS: number; MAX_WRITE_OPERATIONS_PER_HOUR: number; } interface StorageChangedEvent extends chrome.events.Event { addListener(callback: (changes: Object, areaName: string) => void): void; } var local: Local; var sync: Sync; var onChanged: StorageChangedEvent; } //////////////////// // Socket //////////////////// declare module chrome.socket { interface CreateInfo { socketId: number; } interface AcceptInfo { resultCode: number; socketId?: number; } interface ReadInfo { resultCode: number; data: ArrayBuffer; } interface WriteInfo { bytesWritten: number; } interface RecvFromInfo { resultCode: number; data: ArrayBuffer; port: number; address: string; } interface SocketInfo { socketType: string; localPort?: number; peerAddress?: string; peerPort?: number; localAddress?: string; connected: boolean; } interface NetworkInterface { name: string; address: string; } export function create(type: string, options?: Object, callback?: (createInfo: CreateInfo) => void): void; export function destroy(socketId: number): void; export function connect(socketId: number, hostname: string, port: number, callback: (result: number) => void): void; export function bind(socketId: number, address: string, port: number, callback: (result: number) => void): void; export function disconnect(socketId: number): void; export function read(socketId: number, bufferSize?: number, callback?: (readInfo: ReadInfo) => void): void; export function write(socketId: number, data: ArrayBuffer, callback?: (writeInfo: WriteInfo) => void): void; export function recvFrom(socketId: number, bufferSize?: number, callback?: (recvFromInfo: RecvFromInfo) => void): void; export function sendTo(socketId: number, data: ArrayBuffer, address: string, port: number, callback?: (writeInfo: WriteInfo) => void): void; export function listen(socketId: number, address: string, port: number, backlog?: number, callback?: (result: number) => void): void; export function accept(socketId: number, callback?: (acceptInfo: AcceptInfo) => void): void; export function setKeepAlive(socketId: number, enable: boolean, delay?: number, callback?: (result: boolean) => void): void; export function setNoDelay(socketId: number, noDelay: boolean, callback?: (result: boolean) => void): void; export function getInfo(socketId: number, callback: (result: SocketInfo) => void): void; export function getNetworkList(callback: (result: NetworkInterface[]) => void): void; } //////////////////// // Tabs //////////////////// declare module chrome.tabs { interface Tab { status?: string; index: number; openerTabId?: number; title?: string; url?: string; pinned: boolean; highlighted: boolean; windowId: number; active: boolean; favIconUrl?: string; id: number; incognito: boolean; } interface InjectDetails { allFrames?: boolean; code?: string; runAt?: string; file?: string; } interface CreateProperties { index?: number; openerTabId?: number; url?: string; pinned?: boolean; windowId?: number; active?: boolean; } interface MoveProperties { index: number; windowId?: number; } interface UpdateProperties { pinned?: boolean; openerTabId?: number; url?: string; highlighted?: boolean; active?: boolean; } interface CaptureVisibleTabOptions { quality?: number; format?: string; } interface ReloadProperties { bypassCache?: boolean; } interface ConnectInfo { name?: string; } interface HighlightInfo { tabs: number[]; windowId?: number; } interface QueryInfo { status?: string; lastFocusedWindow?: boolean; windowId?: number; windowType?: string; active?: boolean; index?: number; title?: string; url?: string; currentWindow?: boolean; highlighted?: boolean; pinned?: boolean; } interface TabHighlightInfo { windowId: number; tabIds: number[]; } interface TabRemoveInfo { windowId: number; isWindowClosing: boolean; } interface TabAttachInfo { newPosition: number; newWindowId: number; } interface TabChangeInfo { status?: string; pinned?: boolean; url?: string; } interface TabMoveInfo { toIndex: number; windowId: number; fromIndex: number; } interface TabDetachInfo { oldWindowId: number; oldPosition: number; } interface TabActiveInfo { tabId: number; windowId: number; } interface TabHighlightedEvent extends chrome.events.Event { addListener(callback: (highlightInfo: HighlightInfo) => void): void; } interface TabRemovedEvent extends chrome.events.Event { addListener(callback: (tabId: number, removeInfo: TabRemoveInfo) => void): void; } interface TabUpdatedEvent extends chrome.events.Event { addListener(callback: (tabId: number, changeInfo: TabChangeInfo, tab: Tab) => void): void; } interface TabAttachedEvent extends chrome.events.Event { addListener(callback: (tabId: number, attachInfo: TabAttachInfo) => void): void; } interface TabMovedEvent extends chrome.events.Event { addListener(callback: (tabId: number, moveInfo: TabMoveInfo) => void): void; } interface TabDetachedEvent extends chrome.events.Event { addListener(callback: (tabId: number, detachInfo: TabDetachInfo) => void): void; } interface TabCreatedEvent extends chrome.events.Event { addListener(callback: (tab: Tab) => void): void; } interface TabActivatedEvent extends chrome.events.Event { addListener(callback: (activeInfo: TabActiveInfo) => void): void; } interface TabReplacedEvent extends chrome.events.Event { addListener(callback: (addedTabId: number, removedTabId: number) => void): void; } export function executeScript(details: InjectDetails, callback?: (result: any[]) => void): void; export function executeScript(tabId: number, details: InjectDetails, callback?: (result: any[]) => void): void; export function get(tabId: number, callback: (tab: Tab) => void): void; export function getCurrent(callback: (tab?: Tab) => void): void; export function create(createProperties: CreateProperties, callback?: (tab: Tab) => void): void; export function move(tabId: number, moveProperties: MoveProperties, callback?: (tab: Tab) => void): void; export function move(tabIds: number[], moveProperties: MoveProperties, callback?: (tabs: Tab[]) => void): void; export function update(updateProperties: UpdateProperties, callback?: (tab?: Tab) => void): void; export function update(tabId: number, updateProperties: UpdateProperties, callback?: (tab?: Tab) => void): void; export function remove(tabId: number, callback?: Function): void; export function remove(tabIds: number[], callback?: Function): void; export function captureVisibleTab(callback: (dataUrl: string) => void): void; export function captureVisibleTab(windowId: number, callback: (dataUrl: string) => void): void; export function captureVisibleTab(options: CaptureVisibleTabOptions, callback: (dataUrl: string) => void): void; export function captureVisibleTab(windowId: number, options: CaptureVisibleTabOptions, callback: (dataUrl: string) => void): void; export function reload(tabId?: number, reloadProperties?: ReloadProperties, func?: Function): void; export function duplicate(tabId: number, callback?: (tab?: Tab) => void): void; export function sendMessage(tabId: number, message: any, responseCallback?: (response: any) => void): void; export function connect(tabId: number, connectInfo?: ConnectInfo): void; export function insertCSS(tabId: number, details: InjectDetails, callback?: Function): void; export function highlight(highlightInfo: HighlightInfo, callback: (window: chrome.windows.Window) => void): void; export function query(queryInfo: QueryInfo, callback: (result: Tab[]) => void): void; export function detectLanguage(callback: (language: string) => void): void; export function detectLanguage(tabId: number, callback: (language: string) => void): void; var onHighlighted: TabHighlightedEvent; var onRemoved: TabRemovedEvent; var onUpdated: TabUpdatedEvent; var onAttached: TabAttachedEvent; var onMoved: TabMovedEvent; var onDetached: TabDetachedEvent; var onCreated: TabCreatedEvent; var onActivated: TabActivatedEvent; var onReplaced: TabReplacedEvent; } //////////////////// // Top Sites //////////////////// declare module chrome.topSites { interface MostVisitedURL { url: string; title: string; } export function get(callback: (data: MostVisitedURL) => void): void; } //////////////////// // Text to Speech //////////////////// declare module chrome.tts { interface TtsEvent { charIndex?: number; errorMessage?: string; type: string; } interface TtsVoice { lang?: string; gender?: string; voiceName?: string; extensionsId?: string; eventTypes?: string[]; } interface SpeakOptions { volume?: number; enqueue?: boolean; rate?: number; onEvent?: (event: TtsEvent) => void; pitch?: number; lang?: string; voiceName?: string; extensionId?: string; gender?: string; requiredEventTypes?: string[]; desiredEventTypes?: string[]; } export function isSpeaking(callback?: (speaking: boolean) => void): void; export function stop(): void; export function getVoices(callback?: (voices: TtsVoice[]) => void): void; export function speak(utterance: string, options?: SpeakOptions, callback?: Function): void; } //////////////////// // Text to Speech Engine //////////////////// declare module chrome.ttsEngine { interface SpeakOptions { lang?: string; voiceName?: string; gender?: string; volume?: number; rate?: number; pitch?: number; } interface TtsEngineSpeakEvent extends chrome.events.Event { addListener(callback: (utterance: string, options: SpeakOptions, sendTtsEvent: (event: chrome.tts.TtsEvent) => void) => void): void; } interface TtsEngineStopEvent extends chrome.events.Event { addListener(callback: Function): void; } var onSpeak: TtsEngineSpeakEvent; var onStop: TtsEngineStopEvent; } //////////////////// // Types //////////////////// declare module chrome.types { interface ChromeSettingSetDetails { scope?: string; value: any; } interface ChromeSettingGetDetails { incognito?: boolean; } interface ChromeSettingGetResultDetails { levelOfControl: string; value: any; incognitoSpecific?: boolean; } interface ChromeSettingChangedEvent extends chrome.events.Event { addListener(callback: (details: ChromeSettingGetResultDetails) => void): void; } interface ChromeSetting { details: { scope?: string; callback?: Function; }; set(details: ChromeSettingSetDetails, callback?: Function): void; get(details: ChromeSettingGetDetails, callback?: ChromeSettingGetResultDetails): void; onChange: ChromeSettingChangedEvent; } } //////////////////// // Web Navigation //////////////////// declare module chrome.webNavigation { interface GetFrameDetails { processId: number; tabId: number; frameId: number; } interface GetFrameResultDetails { url: string; errorOccurred: boolean; } interface GetAllFrameDetails { tabId: number; } interface ReferenceFragmentUpdatedDetails { processId: number; tabId: number; transitionType: string; url: string; timeStamp: number; frameId: number; transitionQualifiers: string; } interface CompletedDetails { processId: number; tabId: number; url: string; timeStamp: number; frameId: number; } interface HistoryStateUpdatedDetails { processId: number; tabId: number; transitionType: string; url: string; timeStamp: number; frameId: number; transitionQualifiers: string[]; } interface CreatedNavigationTargetDetails { tabId: number; url: string; timeStamp: number; sourceTabId: number; sourceProcessId: number; sourceFrameId: number; } interface TabReplacedDetails { tabId: number; replacedTabId: number; timeStamp: number; } interface BeforeNavigateDetails { processId: number; tabId: number; url: string; timeStamp: number; frameId: number; } interface CommittedDetails { processId: number; tabId: number; transitionType: string; url: string; timeStamp: number; frameId: number; transitionQualifiers: string[]; } interface DomContentLoadedDetails { processId: number; tabId: number; url: string; timeStamp: number; frameId: number; } interface ErrorOccurredDetails { processId: number; tabId: number; url: string; timeStamp: number; frameId: number; error: string; } interface WebNavigationReferenceFragmentUpdatedEvent extends chrome.events.Event { addListener(callback: (details: ReferenceFragmentUpdatedDetails) => void): void; } interface WebNavigationCompletedEvent extends chrome.events.Event { addListener(callback: (details: CompletedDetails) => void): void; } interface WebNavigationHistoryStateUpdatedEvent extends chrome.events.Event { addListener(callback: (details: HistoryStateUpdatedDetails) => void): void; } interface WebNavigationCreatedNavigationTargetEvent extends chrome.events.Event { addListener(callback: (details: CreatedNavigationTargetDetails) => void): void; } interface WebNavigationTabReplacedEvent extends chrome.events.Event { addListener(callback: (details: TabReplacedDetails) => void): void; } interface WebNavigationBeforeNavigateEvent extends chrome.events.Event { addListener(callback: (details: BeforeNavigateDetails) => void): void; } interface WebNavigationCommittedEvent extends chrome.events.Event { addListener(callback: (details: CommittedDetails) => void): void; } interface WebNavigationDomContentLoadedEvent extends chrome.events.Event { addListener(callback: (details: DomContentLoadedDetails) => void): void; } interface WebNavigationErrorOccurredEvent extends chrome.events.Event { addListener(callback: (details: ErrorOccurredDetails) => void): void; } export function getFrame(details: GetFrameDetails, callback: (details?: GetFrameResultDetails) => void): void; export function getAllFrames(details: GetAllFrameDetails, callback: (details?: Object[]) => void): void; var onReferenceFragmentUpdated: WebNavigationReferenceFragmentUpdatedEvent; var onCompleted: WebNavigationCompletedEvent; var onHistoryStateUpdated: WebNavigationHistoryStateUpdatedEvent; var onCreatedNavigationTarget: WebNavigationCreatedNavigationTargetEvent; var onTabReplaced: WebNavigationTabReplacedEvent; var onBeforeNavigate: WebNavigationBeforeNavigateEvent; var onCommitted: WebNavigationCommittedEvent; var onDOMContentLoaded: WebNavigationDomContentLoadedEvent; var onErrorOccurred: WebNavigationErrorOccurredEvent; } //////////////////// // Web Request //////////////////// declare module chrome.webRequest { interface AuthCredentials { username: string; password: string; } interface BlockingResponse { cancel?: boolean; redirectUrl?: string; responseHeaders?: Object; authCredentials?: AuthCredentials; requestHeaders?: Object; } interface RequestFilter { tabId?: number; types?: string; urls: string[]; windowId?: number; } interface UploadData { bytes?: any[]; file?: string; } interface OnCompletedDetails { tabId: number; ip?: string; statusLine?: string; frameId: number; responseHeaders?: Object; parentFrameId: number; fromCache: boolean; url: string; timeStamp: number; requestId: string; type: string; method: string; statusCode: number; } interface OnHeadersReceivedDetails { tabId: number; parentFrameId: number; url: string; timeStamp: number; statusLine?: string; frameId: number; requestId: string; responseHeaders: Object; type: string; method: string; } interface OnBeforeRedirectDetails { tabId: number; ip?: string; statusLine?: string; frameId: number; responseHeaders?: Object; parentFrameId: number; fromCache: boolean; url: string; timeStamp: number; requestId: string; redirectUrl: string; type: string; method: string; statusCode: number; } interface Challenger { host: string; port: number; } interface OnAuthRequiredDetails { tabId: number; statusLine?: string; frameId: number; challenger: Challenger; responseHeaders: Object; isProxy: boolean; realm?: string; parentFrameId: number; url: string; timeStamp: number; requestId: string; scheme: string; type: string; method: string; } interface OnBeforeSendHeadersDetails { tabId: number; parentFrameId: number; url: string; timeStamp: number; frameId: number; requestId: number; requestHeaders?: Object; type: string; method: string; } interface OnErrorOccurredDetails { tabId: number; ip?: string; frameId: number; parentFrameId: number; fromCache: boolean; url: string; timeStamp: number; requestId: string; error: string; type: string; method: string; } interface OnResponseStartedDetails { tabId: number; ip?: string; statusLine?: string; frameId: number; responseHeaders?: Object; parentFrameId: number; fromCache: boolean; url: string; timeStamp: number; requestId: string; type: string; method: string; statusCode: number; } interface OnSendHeadersDetails { tabId: number; parentFrameId: number; url: string; timeStamp: number; frameId: number; requestId: string; requestHeaders: Object; type: string; method: string; } interface RequestBody { raw?: UploadData; error?: string; formData?: Object; } interface OnBeforeRequestDetails { tabId: number; parentFrameId: number; url: string; timeStamp: number; frameId: number; requestBody: RequestBody; } interface WebRequestCompletedEvent extends chrome.events.Event { addListener(callback: (details: OnCompletedDetails) => void, filter?: RequestFilter, opt_extraInfoSpec?: string[]): void; } interface WebRequestHeadersReceivedEvent extends chrome.events.Event { addListener(callback: (details: OnHeadersReceivedDetails) => void, filter?: RequestFilter, opt_extraInfoSpec?: string[]): void; } interface WebRequestBeforeRedirectEvent extends chrome.events.Event { addListener(callback: (details: OnBeforeRedirectDetails) => void, filter?: RequestFilter, opt_extraInfoSpec?: string[]): void; } interface WebRequestAuthRequiredEvent extends chrome.events.Event { addListener(callback: (details: OnAuthRequiredDetails, callback?: (response: BlockingResponse) => void, filter?: RequestFilter, opt_extraInfoSpec?: string[]) => void): void; } interface WebRequestBeforeSendHeadersEvent extends chrome.events.Event { addListener(callback: (details: OnBeforeSendHeadersDetails) => void, filter?: RequestFilter, opt_extraInfoSpec?: string[]): void; } interface WebRequestErrorOccurredEvent extends chrome.events.Event { addListener(callback: (details: OnErrorOccurredDetails) => void, filter?: RequestFilter, opt_extraInfoSpec?: string[]): void; } interface WebRequestResponseStartedEvent extends chrome.events.Event { addListener(callback: (details: OnResponseStartedDetails) => void, filter?: RequestFilter, opt_extraInfoSpec?: string[]): void; } interface WebRequestSendHeadersEvent extends chrome.events.Event { addListener(callback: (details: OnSendHeadersDetails) => void, filter?: RequestFilter, opt_extraInfoSpec?: string[]): void; } interface WebRequestBeforeRequestEvent extends chrome.events.Event { addListener(callback: (details: OnBeforeRequestDetails) => void, filter?: RequestFilter, opt_extraInfoSpec?: string[]): void; } var MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES: number; export function handlerBehaviorChanged(callback?: Function): void; var onCompleted: WebRequestCompletedEvent; var onHeadersReceived: WebRequestHeadersReceivedEvent; var onBeforeRedirect: WebRequestBeforeRedirectEvent; var onAuthRequired: WebRequestAuthRequiredEvent; var onBeforeSendHeaders: WebRequestBeforeSendHeadersEvent; var onErrorOccurred: WebRequestErrorOccurredEvent; var onResponseStarted: WebRequestResponseStartedEvent; var onSendHeaders: WebRequestSendHeadersEvent; var onBeforeRequest: WebRequestBeforeRequestEvent; } //////////////////// // Web Store //////////////////// declare module chrome.webstore { export function install(url?: string, successCallback?: Function, failureCallback?: (error: string) => void): void; } //////////////////// // Windows //////////////////// declare module chrome.windows { interface Window { tabs?: chrome.tabs.Tab[]; top: number; height: number; width: number; state: string; focused: boolean; alwaysOnTop: boolean; incognito: boolean; type: string; id: number; left: number; } interface GetInfo { populate?: boolean; } interface CreateData { tabId?: number; url?: string; top?: number; height?: number; width?: number; focused?: boolean; incognito?: boolean; type?: string; left?: number; } interface UpdateInfo { top?: number; drawAttention?: boolean; height?: number; width?: number; state?: string; focused?: boolean; left?: number; } interface WindowRemovedEvent extends chrome.events.Event { addListener(callback: (windowId: number) => void): void; } interface WindowCreatedEvent extends chrome.events.Event { addListener(callback: (window: Window) => void): void; } interface WindowFocusChangedEvent extends chrome.events.Event { addListener(callback: (windowId: number) => void): void; } var WINDOW_ID_CURRENT: number; var WINDOW_ID_NONE: number; export function get(windowId: number, callback: (window: chrome.windows.Window) => void): void; export function get(windowId: number, getInfo: GetInfo, callback: (window: chrome.windows.Window) => void): void; export function getCurrent(callback: (window: chrome.windows.Window) => void): void; export function getCurrent(getInfo: GetInfo, callback: (window: chrome.windows.Window) => void): void; export function create(createData?: CreateData, callback?: (window: chrome.windows.Window) => void): void; export function getAll(callback: (windows: chrome.windows.Window[]) => void): void; export function getAll(getInfo: GetInfo, callback: (windows: chrome.windows.Window[]) => void): void; export function update(windowId: number, updateInfo: UpdateInfo, callback?: (window: chrome.windows.Window) => void): void; export function remove(windowId: number, callback?: Function): void; export function getLastFocused(callback: (window: chrome.windows.Window) => void): void; export function getLastFocused(getInfo: GetInfo, callback: (window: chrome.windows.Window) => void): void; var onRemoved: WindowRemovedEvent; var onCreated: WindowCreatedEvent; var onFocusChanged: WindowFocusChangedEvent; }