Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix OnError handlers #108

Merged
merged 1 commit into from
May 19, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Fix OnError handler
  • Loading branch information
zhengbli committed May 16, 2016
commit 8bb70dd617b0693df24bf276c5bed19bcf383daf
13 changes: 13 additions & 0 deletions Shared.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,19 @@ let eNameToETypeWithoutCase =
|> List.map (fun (k, v) -> (k.ToLower(), v))
|> Map.ofList

let getEventTypeInInterface eName iName =
match iName, eName with
| "IDBDatabase", "abort"
| "IDBTransaction", "abort"
| "XMLHttpRequest", "abort"
| "MSBaseReader", "abort"
| "XMLHttpRequestEventTarget", "abort"
-> "Event"
| _ ->
match eNameToEType.TryFind eName with
| Some eType' -> eType'
| _ -> "Event"

/// Tag name to element name map
let tagNameToEleName =
let preferedElementMap =
Expand Down
24 changes: 13 additions & 11 deletions TS.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,16 @@ let EmitProperties flavor prefix (emitScope: EmitScope) (i: Browser.Interface)=
| None ->
let pType =
match p.Type with
| "EventHandler" -> String.Format("(ev: {0}) => any", ehNameToEType.[p.Name])
| "EventHandler" ->
// Sometimes event handlers with the same name may actually handle different
// events in different interfaces. For example, "onerror" handles "ErrorEvent"
// normally, but in "SVGSVGElement" it handles "SVGError" event instead.
let eType =
if p.EventHandler.IsSome then
getEventTypeInInterface p.EventHandler.Value i.Name
else
"Event"
String.Format("(ev: {0}) => any", eType)
| _ -> DomTypeToTsType p.Type
let pTypeAndNull = if p.Nullable.IsSome then makeNullable pType else pType
let readOnlyModifier = if p.ReadOnly.IsSome && prefix = "" then "readonly " else ""
Expand Down Expand Up @@ -316,19 +325,12 @@ let rec EmitAllMembers flavor (i:Browser.Interface) =

let EmitEventHandlers (prefix: string) (i:Browser.Interface) =
let emitEventHandler prefix (eHandler: EventHandler) =
let actualEventType =
match i.Name, eHandler.EventName with
| "IDBDatabase", "abort"
| "IDBTransaction", "abort"
| "XMLHttpRequest", "abort"
| "MSBaseReader", "abort"
| "XMLHttpRequestEventTarget", "abort"
-> "Event"
| _ -> eHandler.EventType
let eventType =
getEventTypeInInterface eHandler.EventName i.Name

Pt.printl
"%saddEventListener(type: \"%s\", listener: (ev: %s) => any, useCapture?: boolean): void;"
prefix eHandler.EventName actualEventType
prefix eHandler.EventName eventType

let fPrefix = if prefix.StartsWith "declare var" then "declare function " else ""

Expand Down
48 changes: 24 additions & 24 deletions baselines/dom.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -919,7 +919,7 @@ interface ApplicationCache extends EventTarget {
oncached: (ev: Event) => any;
onchecking: (ev: Event) => any;
ondownloading: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onnoupdate: (ev: Event) => any;
onobsolete: (ev: Event) => any;
onprogress: (ev: ProgressEvent) => any;
Expand Down Expand Up @@ -2410,7 +2410,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven
* Fires when the user aborts the download.
* @param ev The event.
*/
onabort: (ev: Event) => any;
onabort: (ev: UIEvent) => any;
/**
* Fires when the object is set as the active element.
* @param ev The event.
Expand Down Expand Up @@ -2512,7 +2512,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven
* Fires when an error occurs during object loading.
* @param ev The event.
*/
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
/**
* Fires when the object receives focus.
* @param ev The event.
Expand Down Expand Up @@ -4203,7 +4203,7 @@ interface HTMLBodyElement extends HTMLElement {
onbeforeprint: (ev: Event) => any;
onbeforeunload: (ev: BeforeUnloadEvent) => any;
onblur: (ev: FocusEvent) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onfocus: (ev: FocusEvent) => any;
onhashchange: (ev: HashChangeEvent) => any;
onload: (ev: Event) => any;
Expand Down Expand Up @@ -4542,7 +4542,7 @@ interface HTMLElement extends Element {
readonly offsetParent: Element;
readonly offsetTop: number;
readonly offsetWidth: number;
onabort: (ev: Event) => any;
onabort: (ev: UIEvent) => any;
onactivate: (ev: UIEvent) => any;
onbeforeactivate: (ev: UIEvent) => any;
onbeforecopy: (ev: ClipboardEvent) => any;
Expand Down Expand Up @@ -4570,7 +4570,7 @@ interface HTMLElement extends Element {
ondurationchange: (ev: Event) => any;
onemptied: (ev: Event) => any;
onended: (ev: MediaStreamErrorEvent) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onfocus: (ev: FocusEvent) => any;
oninput: (ev: Event) => any;
oninvalid: (ev: Event) => any;
Expand Down Expand Up @@ -5120,7 +5120,7 @@ interface HTMLFrameSetElement extends HTMLElement {
* Fires when the object loses the input focus.
*/
onblur: (ev: FocusEvent) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
/**
* Fires when the object receives focus.
*/
Expand Down Expand Up @@ -7574,7 +7574,7 @@ interface IDBDatabase extends EventTarget {
readonly name: string;
readonly objectStoreNames: DOMStringList;
onabort: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
version: number;
onversionchange: (ev: IDBVersionChangeEvent) => any;
close(): void;
Expand Down Expand Up @@ -7677,7 +7677,7 @@ declare var IDBOpenDBRequest: {

interface IDBRequest extends EventTarget {
readonly error: DOMError;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onsuccess: (ev: Event) => any;
readonly readyState: string;
readonly result: any;
Expand All @@ -7699,7 +7699,7 @@ interface IDBTransaction extends EventTarget {
readonly mode: string;
onabort: (ev: Event) => any;
oncomplete: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
abort(): void;
objectStore(name: string): IDBObjectStore;
readonly READ_ONLY: string;
Expand Down Expand Up @@ -7842,7 +7842,7 @@ declare var MSApp: MSApp;
interface MSAppAsyncOperation extends EventTarget {
readonly error: DOMError;
oncomplete: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
readonly readyState: number;
readonly result: any;
start(): void;
Expand Down Expand Up @@ -8202,7 +8202,7 @@ declare var MSStreamReader: {
interface MSWebViewAsyncOperation extends EventTarget {
readonly error: DOMError;
oncomplete: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
readonly readyState: number;
readonly result: any;
readonly target: MSHTMLWebViewElement;
Expand Down Expand Up @@ -9283,7 +9283,7 @@ declare var RTCDTMFToneChangeEvent: {

interface RTCDtlsTransport extends RTCStatsProvider {
ondtlsstatechange: ((ev: RTCDtlsTransportStateChangedEvent) => any) | null;
onerror: ((ev: Event) => any) | null;
onerror: ((ev: ErrorEvent) => any) | null;
readonly state: string;
readonly transport: RTCIceTransport;
getLocalParameters(): RTCDtlsParameters;
Expand Down Expand Up @@ -9338,7 +9338,7 @@ declare var RTCIceCandidatePairChangedEvent: {

interface RTCIceGatherer extends RTCStatsProvider {
readonly component: string;
onerror: ((ev: Event) => any) | null;
onerror: ((ev: ErrorEvent) => any) | null;
onlocalcandidate: ((ev: RTCIceGathererEvent) => any) | null;
createAssociatedGatherer(): RTCIceGatherer;
getLocalCandidates(): RTCIceCandidate[];
Expand Down Expand Up @@ -9397,7 +9397,7 @@ declare var RTCIceTransportStateChangedEvent: {
}

interface RTCRtpReceiver extends RTCStatsProvider {
onerror: ((ev: Event) => any) | null;
onerror: ((ev: ErrorEvent) => any) | null;
readonly rtcpTransport: RTCDtlsTransport;
readonly track: MediaStreamTrack | null;
readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport;
Expand All @@ -9417,7 +9417,7 @@ declare var RTCRtpReceiver: {
}

interface RTCRtpSender extends RTCStatsProvider {
onerror: ((ev: Event) => any) | null;
onerror: ((ev: ErrorEvent) => any) | null;
onssrcconflict: ((ev: RTCSsrcConflictEvent) => any) | null;
readonly rtcpTransport: RTCDtlsTransport;
readonly track: MediaStreamTrack;
Expand All @@ -9438,7 +9438,7 @@ declare var RTCRtpSender: {
}

interface RTCSrtpSdesTransport extends EventTarget {
onerror: ((ev: Event) => any) | null;
onerror: ((ev: ErrorEvent) => any) | null;
readonly transport: RTCIceTransport;
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
Expand Down Expand Up @@ -11557,7 +11557,7 @@ interface TextTrack extends EventTarget {
readonly language: string;
mode: any;
oncuechange: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onload: (ev: Event) => any;
readonly readyState: number;
addCue(cue: TextTrackCue): void;
Expand Down Expand Up @@ -12780,7 +12780,7 @@ interface WebSocket extends EventTarget {
readonly bufferedAmount: number;
readonly extensions: string;
onclose: (ev: CloseEvent) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onmessage: (ev: MessageEvent) => any;
onopen: (ev: Event) => any;
readonly protocol: string;
Expand Down Expand Up @@ -12855,7 +12855,7 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window
name: string;
readonly navigator: Navigator;
offscreenBuffering: string | boolean;
onabort: (ev: Event) => any;
onabort: (ev: UIEvent) => any;
onafterprint: (ev: Event) => any;
onbeforeprint: (ev: Event) => any;
onbeforeunload: (ev: BeforeUnloadEvent) => any;
Expand Down Expand Up @@ -13277,7 +13277,7 @@ declare var XSLTProcessor: {
}

interface AbstractWorker {
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
}
Expand Down Expand Up @@ -13436,7 +13436,7 @@ interface LinkStyle {

interface MSBaseReader {
onabort: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onload: (ev: Event) => any;
onloadend: (ev: ProgressEvent) => any;
onloadstart: (ev: Event) => any;
Expand Down Expand Up @@ -13600,7 +13600,7 @@ interface WindowTimersExtension {

interface XMLHttpRequestEventTarget {
onabort: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onload: (ev: Event) => any;
onloadend: (ev: ProgressEvent) => any;
onloadstart: (ev: Event) => any;
Expand Down Expand Up @@ -13746,7 +13746,7 @@ declare var msCredentials: MSCredentials;
declare var name: string;
declare var navigator: Navigator;
declare var offscreenBuffering: string | boolean;
declare var onabort: (ev: Event) => any;
declare var onabort: (ev: UIEvent) => any;
declare var onafterprint: (ev: Event) => any;
declare var onbeforeprint: (ev: Event) => any;
declare var onbeforeunload: (ev: BeforeUnloadEvent) => any;
Expand Down
20 changes: 10 additions & 10 deletions baselines/webworker.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ interface IDBDatabase extends EventTarget {
readonly name: string;
readonly objectStoreNames: DOMStringList;
onabort: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
version: number;
onversionchange: (ev: IDBVersionChangeEvent) => any;
close(): void;
Expand Down Expand Up @@ -426,7 +426,7 @@ declare var IDBOpenDBRequest: {

interface IDBRequest extends EventTarget {
readonly error: DOMError;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onsuccess: (ev: Event) => any;
readonly readyState: string;
readonly result: any;
Expand All @@ -448,7 +448,7 @@ interface IDBTransaction extends EventTarget {
readonly mode: string;
onabort: (ev: Event) => any;
oncomplete: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
abort(): void;
objectStore(name: string): IDBObjectStore;
readonly READ_ONLY: string;
Expand Down Expand Up @@ -516,7 +516,7 @@ declare var MSApp: MSApp;
interface MSAppAsyncOperation extends EventTarget {
readonly error: DOMError;
oncomplete: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
readonly readyState: number;
readonly result: any;
start(): void;
Expand Down Expand Up @@ -665,7 +665,7 @@ interface WebSocket extends EventTarget {
readonly bufferedAmount: number;
readonly extensions: string;
onclose: (ev: CloseEvent) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onmessage: (ev: MessageEvent) => any;
onopen: (ev: Event) => any;
readonly protocol: string;
Expand Down Expand Up @@ -766,14 +766,14 @@ declare var XMLHttpRequestUpload: {
}

interface AbstractWorker {
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
}

interface MSBaseReader {
onabort: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onload: (ev: Event) => any;
onloadend: (ev: ProgressEvent) => any;
onloadstart: (ev: Event) => any;
Expand Down Expand Up @@ -819,7 +819,7 @@ interface WindowConsole {

interface XMLHttpRequestEventTarget {
onabort: (ev: Event) => any;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
onload: (ev: Event) => any;
onloadend: (ev: ProgressEvent) => any;
onloadstart: (ev: Event) => any;
Expand Down Expand Up @@ -849,7 +849,7 @@ declare var FileReaderSync: {

interface WorkerGlobalScope extends EventTarget, WorkerUtils, DedicatedWorkerGlobalScope, WindowConsole {
readonly location: WorkerLocation;
onerror: (ev: Event) => any;
onerror: (ev: ErrorEvent) => any;
readonly self: WorkerGlobalScope;
close(): void;
msWriteProfilerMark(profilerMarkName: string): void;
Expand Down Expand Up @@ -975,7 +975,7 @@ interface FunctionStringCallback {
(data: string): void;
}
declare var location: WorkerLocation;
declare var onerror: (ev: Event) => any;
declare var onerror: (ev: ErrorEvent) => any;
declare var self: WorkerGlobalScope;
declare function close(): void;
declare function msWriteProfilerMark(profilerMarkName: string): void;
Expand Down