Update WebIDL parser

This commit is contained in:
Anthony Ramine 2015-08-15 12:57:23 +02:00
parent 5ab9aa5013
commit efe982392e
3 changed files with 1174 additions and 448 deletions

View file

@ -918,7 +918,8 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
assert not type.treatNonObjectAsNull() or type.nullable() assert not type.treatNonObjectAsNull() or type.nullable()
assert not type.treatNonObjectAsNull() or not type.treatNonCallableAsNull() assert not type.treatNonObjectAsNull() or not type.treatNonCallableAsNull()
declType = CGGeneric('%s::%s' % (type.unroll().module(), type.unroll().identifier.name)) callback = type.unroll().callback
declType = CGGeneric('%s::%s' % (callback.module(), callback.identifier.name))
finalDeclType = CGTemplatedType("Rc", declType) finalDeclType = CGTemplatedType("Rc", declType)
conversion = CGCallbackTempRoot(declType.define()) conversion = CGCallbackTempRoot(declType.define())
@ -1285,8 +1286,8 @@ def getRetvalDeclarationForType(returnType, descriptorProvider):
result = CGWrapper(result, pre="Option<", post=">") result = CGWrapper(result, pre="Option<", post=">")
return result return result
if returnType.isCallback(): if returnType.isCallback():
result = CGGeneric('Rc<%s::%s>' % (returnType.unroll().module(), callback = returnType.unroll().callback
returnType.unroll().identifier.name)) result = CGGeneric('Rc<%s::%s>' % (callback.module(), callback.identifier.name))
if returnType.nullable(): if returnType.nullable():
result = CGWrapper(result, pre="Option<", post=">") result = CGWrapper(result, pre="Option<", post=">")
return result return result
@ -4936,7 +4937,7 @@ class CGBindingRoot(CGThing):
# Do codegen for all the callback interfaces. # Do codegen for all the callback interfaces.
cgthings.extend(CGList([CGCallbackInterface(x), cgthings.extend(CGList([CGCallbackInterface(x),
CGCallbackFunctionImpl(x)], "\n") CGCallbackFunctionImpl(x.interface)], "\n")
for x in callbackDescriptors) for x in callbackDescriptors)
# And make sure we have the right number of newlines at the end # And make sure we have the right number of newlines at the end
@ -5259,7 +5260,7 @@ impl ToJSValConvertible for ${type} {
self.callback().to_jsval(cx, rval); self.callback().to_jsval(cx, rval);
} }
}\ }\
""").substitute({"type": callback.name}) """).substitute({"type": callback.identifier.name})
CGGeneric.__init__(self, impl) CGGeneric.__init__(self, impl)
@ -5688,7 +5689,7 @@ class GlobalGenRoots():
def Bindings(config): def Bindings(config):
descriptors = (set(d.name + "Binding" for d in config.getDescriptors(register=True)) | descriptors = (set(d.name + "Binding" for d in config.getDescriptors(register=True)) |
set(d.unroll().module() for d in config.callbacks) | set(d.module() for d in config.callbacks) |
set(d.module() for d in config.getDictionaries())) set(d.module() for d in config.getDictionaries()))
curr = CGList([CGGeneric("pub mod %s;\n" % name) for name in sorted(descriptors)]) curr = CGList([CGGeneric("pub mod %s;\n" % name) for name in sorted(descriptors)])
curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT) curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT)

File diff suppressed because it is too large Load diff

View file

@ -7,8 +7,17 @@
callback BrowserElementNextPaintEventCallback = void (); callback BrowserElementNextPaintEventCallback = void ();
//enum BrowserFindCaseSensitivity { "case-sensitive", "case-insensitive" };
//enum BrowserFindDirection { "forward", "backward" };
//dictionary BrowserElementDownloadOptions { //dictionary BrowserElementDownloadOptions {
// DOMString? filename; // DOMString? filename;
// DOMString? referrer;
//};
//dictionary BrowserElementExecuteScriptOptions {
// DOMString? url;
// DOMString? origin;
//}; //};
[NoInterfaceObject] [NoInterfaceObject]
@ -22,22 +31,32 @@ BrowserElement implements BrowserElementPrivileged;
interface BrowserElementCommon { interface BrowserElementCommon {
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser embed-widgets"] // CheckAnyPermissions="browser embed-widgets"]
//void setVisible(boolean visible); //void setVisible(boolean visible);
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser embed-widgets"] // CheckAnyPermissions="browser embed-widgets"]
//DOMRequest getVisible(); //DOMRequest getVisible();
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser embed-widgets"] // CheckAnyPermissions="browser embed-widgets"]
//void setActive(boolean active);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser embed-widgets"]
//boolean getActive();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser embed-widgets"]
//void addNextPaintListener(BrowserElementNextPaintEventCallback listener); //void addNextPaintListener(BrowserElementNextPaintEventCallback listener);
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser embed-widgets"] // CheckAnyPermissions="browser embed-widgets"]
//void removeNextPaintListener(BrowserElementNextPaintEventCallback listener); //void removeNextPaintListener(BrowserElementNextPaintEventCallback listener);
}; };
@ -45,7 +64,7 @@ interface BrowserElementCommon {
interface BrowserElementPrivileged { interface BrowserElementPrivileged {
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAnyPermissions="browser"]
//void sendMouseEvent(DOMString type, //void sendMouseEvent(DOMString type,
// unsigned long x, // unsigned long x,
// unsigned long y, // unsigned long y,
@ -56,7 +75,7 @@ interface BrowserElementPrivileged {
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// Func="TouchEvent::PrefEnabled", // Func="TouchEvent::PrefEnabled",
// CheckPermissions="browser"] // CheckAnyPermissions="browser"]
//void sendTouchEvent(DOMString type, //void sendTouchEvent(DOMString type,
// sequence<unsigned long> identifiers, // sequence<unsigned long> identifiers,
// sequence<long> x, // sequence<long> x,
@ -70,70 +89,91 @@ interface BrowserElementPrivileged {
[Throws, [Throws,
Pref="dom.mozBrowserFramesEnabled", Pref="dom.mozBrowserFramesEnabled",
CheckPermissions="browser"] CheckAnyPermissions="browser"]
void goBack(); void goBack();
[Throws, [Throws,
Pref="dom.mozBrowserFramesEnabled", Pref="dom.mozBrowserFramesEnabled",
CheckPermissions="browser"] CheckAnyPermissions="browser"]
void goForward(); void goForward();
[Throws, [Throws,
Pref="dom.mozBrowserFramesEnabled", Pref="dom.mozBrowserFramesEnabled",
CheckPermissions="browser"] CheckAnyPermissions="browser"]
void reload(optional boolean hardReload = false); void reload(optional boolean hardReload = false);
[Throws, [Throws,
Pref="dom.mozBrowserFramesEnabled", Pref="dom.mozBrowserFramesEnabled",
CheckPermissions="browser"] CheckAnyPermissions="browser"]
void stop(); void stop();
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAnyPermissions="browser"]
//DOMRequest download(DOMString url, //DOMRequest download(DOMString url,
// optional BrowserElementDownloadOptions options); // optional BrowserElementDownloadOptions options);
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAnyPermissions="browser"]
//DOMRequest purgeHistory(); //DOMRequest purgeHistory();
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAnyPermissions="browser"]
//DOMRequest getScreenshot([EnforceRange] unsigned long width, //DOMRequest getScreenshot([EnforceRange] unsigned long width,
// [EnforceRange] unsigned long height, // [EnforceRange] unsigned long height,
// optional DOMString mimeType=""); // optional DOMString mimeType="");
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAnyPermissions="browser"]
//void zoom(float zoom); //void zoom(float zoom);
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAnyPermissions="browser"]
//DOMRequest getCanGoBack(); //DOMRequest getCanGoBack();
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAnyPermissions="browser"]
//DOMRequest getCanGoForward(); //DOMRequest getCanGoForward();
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAnyPermissions="browser"]
//DOMRequest getContentDimensions(); //DOMRequest getContentDimensions();
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAllPermissions="browser input-manage"]
//DOMRequest setInputMethodActive(boolean isActive); //DOMRequest setInputMethodActive(boolean isActive);
// Additional |nfc-manager| permission is required for setNFCFocus API
//[Throws, //[Throws,
// Pref="dom.mozBrowserFramesEnabled", // Pref="dom.mozBrowserFramesEnabled",
// CheckPermissions="browser"] // CheckAllPermissions="browser nfc-manager"]
//void setNFCFocus(boolean isFocus); //void setNFCFocus(boolean isFocus);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
//void findAll(DOMString searchString, BrowserFindCaseSensitivity caseSensitivity);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
//void findNext(BrowserFindDirection direction);
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAnyPermissions="browser"]
//void clearMatch();
//[Throws,
// Pref="dom.mozBrowserFramesEnabled",
// CheckAllPermissions="browser browser:universalxss"]
//DOMRequest executeScript(DOMString script,
// optional BrowserElementExecuteScriptOptions options);
}; };