Add proper types for <webview> events

This commit is contained in:
Milan Burda
2016-03-30 19:13:30 +02:00
parent e20b68c998
commit 6d31749557
+141 -56
View File
@@ -2892,11 +2892,8 @@ declare namespace Electron {
on(event: 'new-window', listener: (event: Event,
url: string,
frameName: string,
disposition: 'default' | 'foreground-tab' | 'background-tab' | 'new-window' | 'other',
/**
* The options which will be used for creating the new BrowserWindow.
*/
options: any
disposition: NewWindowDisposition,
options: BrowserWindowOptions
) => void): this;
/**
* Emitted when a user or the page wants to start navigation.
@@ -2981,25 +2978,7 @@ declare namespace Electron {
/**
* Emitted when a result is available for webContents.findInPage request.
*/
on(event: 'found-in-page', listener: (event: Event, result: {
requestId: number;
/**
* ndicates if more responses are to follow.
*/
finalUpdate: boolean;
/**
* Position of the active match.
*/
activeMatchOrdinal?: number;
/**
* Number of Matches.
*/
matches?: number;
/**
* Coordinates of first match region.
*/
selectionArea?: any;
}) => void): this;
on(event: 'found-in-page', listener: (event: Event, result: FoundInPageResult) => void): this;
/**
* Emitted when media starts playing.
*/
@@ -3305,6 +3284,8 @@ declare namespace Electron {
debugger: Debugger;
}
type NewWindowDisposition = 'default' | 'foreground-tab' | 'background-tab' | 'new-window' | 'other';
/**
* Specifies the action to take place when ending webContents.findInPage request.
* 'clearSelection' - Translate the selection into a normal selection.
@@ -3421,6 +3402,26 @@ declare namespace Electron {
medialCapitalAsWordStart?: boolean;
}
interface FoundInPageResult {
requestId: number;
/**
* Indicates if more responses are to follow.
*/
finalUpdate: boolean;
/**
* Position of the active match.
*/
activeMatchOrdinal?: number;
/**
* Number of Matches.
*/
matches?: number;
/**
* Coordinates of first match region.
*/
selectionArea?: any;
}
interface DeviceEmulationParameters {
/**
* Specify the screen type to emulated
@@ -3875,68 +3876,68 @@ declare namespace Electron {
* Fired when a load has committed. This includes navigation within the current document
* as well as subframe document-level loads, but does not include asynchronous resource loads.
*/
addEventListener(type: 'load-commit', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'load-commit', listener: (event: WebViewElement.LoadCommitEvent) => void, useCapture?: boolean): void;
/**
* Fired when the navigation is done, i.e. the spinner of the tab will stop spinning, and the onload event is dispatched.
*/
addEventListener(type: 'did-finish-load', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-finish-load', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* This event is like did-finish-load, but fired when the load failed or was cancelled, e.g. window.stop() is invoked.
*/
addEventListener(type: 'did-fail-load', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-fail-load', listener: (event: WebViewElement.DidFailLoadEvent) => void, useCapture?: boolean): void;
/**
* Fired when a frame has done navigation.
*/
addEventListener(type: 'did-frame-finish-load', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-frame-finish-load', listener: (event: WebViewElement.DidFrameFinishLoadEvent) => void, useCapture?: boolean): void;
/**
* Corresponds to the points in time when the spinner of the tab starts spinning.
*/
addEventListener(type: 'did-start-loading', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-start-loading', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Corresponds to the points in time when the spinner of the tab stops spinning.
*/
addEventListener(type: 'did-stop-loading', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-stop-loading', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Fired when details regarding a requested resource is available.
* status indicates socket connection to download the resource.
*/
addEventListener(type: 'did-get-response-details', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-get-response-details', listener: (event: WebViewElement.DidGetResponseRetails) => void, useCapture?: boolean): void;
/**
* Fired when a redirect was received while requesting a resource.
*/
addEventListener(type: 'did-get-redirect-request', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-get-redirect-request', listener: (event: WebViewElement.DidGetRedirectRequestEvent) => void, useCapture?: boolean): void;
/**
* Fired when document in the given frame is loaded.
*/
addEventListener(type: 'dom-ready', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'dom-ready', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Fired when page title is set during navigation. explicitSet is false when title is synthesized from file URL.
*/
addEventListener(type: 'page-title-updated', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'page-title-updated', listener: (event: WebViewElement.PageTitleUpdatedEvent) => void, useCapture?: boolean): void;
/**
* Fired when page receives favicon URLs.
*/
addEventListener(type: 'page-favicon-updated', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'page-favicon-updated', listener: (event: WebViewElement.PageFaviconUpdatedEvent) => void, useCapture?: boolean): void;
/**
* Fired when page enters fullscreen triggered by HTML API.
*/
addEventListener(type: 'enter-html-full-screen', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'enter-html-full-screen', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Fired when page leaves fullscreen triggered by HTML API.
*/
addEventListener(type: 'leave-html-full-screen', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'leave-html-full-screen', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Fired when the guest window logs a console message.
*/
addEventListener(type: 'console-message', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'console-message', listener: (event: WebViewElement.ConsoleMessageEvent) => void, useCapture?: boolean): void;
/**
* Fired when a result is available for webview.findInPage request.
*/
addEventListener(type: 'found-in-page', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'found-in-page', listener: (event: WebViewElement.FoundInPageEvent) => void, useCapture?: boolean): void;
/**
* Fired when the guest page attempts to open a new browser window.
*/
addEventListener(type: 'new-window', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'new-window', listener: (event: WebViewElement.NewWindowEvent) => void, useCapture?: boolean): void;
/**
* Emitted when a user or the page wants to start navigation.
* It can happen when the window.location object is changed or a user clicks a link in the page.
@@ -3949,14 +3950,14 @@ declare namespace Electron {
*
* Calling event.preventDefault() does NOT have any effect.
*/
addEventListener(type: 'will-navigate', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'will-navigate', listener: (event: WebViewElement.NavigateEvent) => void, useCapture?: boolean): void;
/**
* Emitted when a navigation is done.
*
* This event is not emitted for in-page navigations, such as clicking anchor links
* or updating the window.location.hash. Use did-navigate-in-page event for this purpose.
*/
addEventListener(type: 'did-navigate', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-navigate', listener: (event: WebViewElement.NavigateEvent) => void, useCapture?: boolean): void;
/**
* Emitted when an in-page navigation happened.
*
@@ -3964,57 +3965,137 @@ declare namespace Electron {
* navigation outside of the page. Examples of this occurring are when anchor links
* are clicked or when the DOM hashchange event is triggered.
*/
addEventListener(type: 'did-navigate-in-page', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-navigate-in-page', listener: (event: WebViewElement.NavigateEvent) => void, useCapture?: boolean): void;
/**
* Fired when the guest page attempts to close itself.
*/
addEventListener(type: 'close', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'close', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Fired when the guest page has sent an asynchronous message to embedder page.
*/
addEventListener(type: 'ipc-message', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'ipc-message', listener: (event: WebViewElement.IpcMessageEvent) => void, useCapture?: boolean): void;
/**
* Fired when the renderer process is crashed.
*/
addEventListener(type: 'crashed', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'crashed', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Fired when the gpu process is crashed.
*/
addEventListener(type: 'gpu-crashed', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'gpu-crashed', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Fired when a plugin process is crashed.
*/
addEventListener(type: 'plugin-crashed', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'plugin-crashed', listener: (event: WebViewElement.PluginCrashedEvent) => void, useCapture?: boolean): void;
/**
* Fired when the WebContents is destroyed.
*/
addEventListener(type: 'destroyed', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'destroyed', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Emitted when media starts playing.
*/
addEventListener(type: 'media-started-playing', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'media-started-playing', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Emitted when media is paused or done playing.
*/
addEventListener(type: 'media-paused', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'media-paused', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Emitted when a page's theme color changes. This is usually due to encountering a meta tag:
* <meta name='theme-color' content='#ff0000'>
*/
addEventListener(type: 'did-change-theme-color', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'did-change-theme-color', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Emitted when DevTools is opened.
*/
addEventListener(type: 'devtools-opened', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'devtools-opened', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Emitted when DevTools is closed.
*/
addEventListener(type: 'devtools-closed', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: 'devtools-closed', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
/**
* Emitted when DevTools is focused / opened.
*/
addEventListener(type: 'devtools-focused', listener: (event: any) => void, useCapture?: boolean): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
addEventListener(type: 'devtools-focused', listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
addEventListener(type: string, listener: (event: WebViewElement.Event) => void, useCapture?: boolean): void;
}
namespace WebViewElement {
type Event = ElectronPrivate.GlobalEvent;
interface LoadCommitEvent extends Event {
url: string;
isMainFrame: string;
}
interface DidFailLoadEvent extends Event {
errorCode: number;
errorDescription: string;
validatedURL: string;
}
interface DidFrameFinishLoadEvent extends Event {
isMainFrame: boolean;
}
interface DidGetResponseRetails extends Event {
status: boolean;
newURL: string;
originalURL: string;
httpResponseCode: number;
requestMethod: string;
referrer: string;
headers: any;
}
interface DidGetRedirectRequestEvent extends Event {
oldURL: string;
newURL: string;
isMainFrame: boolean;
httpResponseCode: number;
requestMethod: string;
referrer: string;
headers: any;
}
interface PageTitleUpdatedEvent extends Event {
title: string;
explicitSet: string;
}
interface PageFaviconUpdatedEvent extends Event {
favicons: string[];
}
interface ConsoleMessageEvent extends Event {
level: number;
message: string;
line: number;
sourceId: string;
}
interface FoundInPageEvent extends Event {
result: FoundInPageResult;
}
interface NewWindowEvent extends Event {
url: string;
frameName: string;
disposition: NewWindowDisposition;
options: BrowserWindowOptions;
}
interface NavigateEvent extends Event {
url: string;
}
interface IpcMessageEvent extends Event {
channel: string;
args: any[];
}
interface PluginCrashedEvent extends Event {
name: string;
version: string;
}
}
/**
@@ -4083,6 +4164,10 @@ declare namespace Electron {
}
}
declare namespace ElectronPrivate {
type GlobalEvent = Event;
}
interface Document {
createElement(tagName: 'webview'): Electron.WebViewElement;
}