gecko/dom/webidl/XULElement.webidl
Boris Zbarsky 27b20c21af Bug 824589. Convert XULElement to WebIDL. r=peterv
The assertions in nsINode and nsWrapperCache are to eagerly catch
failures to override those methods.

The classinfo change for XULTreeBuilder is needed because one of those
is returned via an nsIXULTemplateBuilder attribute on XULElement.
Alternately, I could mark it notflattened in Bindings.conf, but Enn
said he prefers this anyway.

The change to the QI impl in BindingUtils is needed because when
XPConnect converts an IID from C++ to JS it makes is an nsJSID, not an
nsJSIID.  We've run into this before, sadly.

I removed "id" from nsIDOMXULElement because it's already on Element.
I suppose I could have left it there, but this seems cleaner.

The nsJSIID::HasInstance changes are needed to support XBL-implemented
interfaces.  Sadly, this does mean that if the underlying object QIs
to something but we didn't put those props on the WebIDL we'll end up
testing true for instanceof but not exposing the props.  I don't see
an obviously better way.  We should work on killing off uses of
"instanceof someinterface".

The browser.js change is needed to avoid throwing exceptions during
browser-chrome tests that are now getting reported because our
swapFrameLoaders is no longer an XPConnect method.
2013-01-29 12:51:55 -05:00

135 lines
3.6 KiB
Plaintext

/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
interface MozBoxObject;
interface MozControllers;
interface MozFrameLoader;
interface MozRDFCompositeDataSource;
interface MozRDFResource;
interface MozXULTemplateBuilder;
// Hack to make sure that we initialize the touch prefs properly
[PrefControlled]
interface XULElement : Element {
[SetterThrows]
attribute DOMString className;
// Layout properties
[SetterThrows]
attribute DOMString align;
[SetterThrows]
attribute DOMString dir;
[SetterThrows]
attribute DOMString flex;
[SetterThrows]
attribute DOMString flexGroup;
[SetterThrows]
attribute DOMString ordinal;
[SetterThrows]
attribute DOMString orient;
[SetterThrows]
attribute DOMString pack;
// Properties for hiding elements.
attribute boolean hidden;
attribute boolean collapsed;
// Property for hooking up to broadcasters
[SetterThrows]
attribute DOMString observes;
// Properties for hooking up to popups
[SetterThrows]
attribute DOMString menu;
[SetterThrows]
attribute DOMString contextMenu;
[SetterThrows]
attribute DOMString tooltip;
// Width/height properties
[SetterThrows]
attribute DOMString width;
[SetterThrows]
attribute DOMString height;
[SetterThrows]
attribute DOMString minWidth;
[SetterThrows]
attribute DOMString minHeight;
[SetterThrows]
attribute DOMString maxWidth;
[SetterThrows]
attribute DOMString maxHeight;
// Persistence
[SetterThrows]
attribute DOMString persist;
// Position properties for
// * popups - these are screen coordinates
// * other elements - these are client coordinates relative to parent stack.
[SetterThrows]
attribute DOMString left;
[SetterThrows]
attribute DOMString top;
// XUL Template Builder
[SetterThrows]
attribute DOMString datasources;
[SetterThrows]
attribute DOMString ref;
// Tooltip and status info
[SetterThrows]
attribute DOMString tooltipText;
[SetterThrows]
attribute DOMString statusText;
attribute boolean allowEvents;
readonly attribute MozRDFCompositeDataSource? database;
readonly attribute MozXULTemplateBuilder? builder;
[Throws]
readonly attribute MozRDFResource? resource;
[Throws]
readonly attribute MozControllers controllers;
[Throws]
readonly attribute MozBoxObject? boxObject;
[Throws]
void focus();
[Throws]
void blur();
[Throws]
void click();
void doCommand();
// XXXbz this isn't really a nodelist! See bug 818548
NodeList getElementsByAttribute(DOMString name,
DOMString value);
// XXXbz this isn't really a nodelist! See bug 818548
[Throws]
NodeList getElementsByAttributeNS(DOMString namespaceURI,
DOMString name,
DOMString value);
[Constant]
readonly attribute CSSStyleDeclaration style;
};
// And the things from nsIFrameLoaderOwner
[NoInterfaceObject]
interface MozFrameLoaderOwner {
[ChromeOnly]
readonly attribute MozFrameLoader? frameLoader;
[ChromeOnly, Throws]
void swapFrameLoaders(XULElement aOtherOwner);
};
XULElement implements GlobalEventHandlers;
XULElement implements NodeEventHandlers;
XULElement implements TouchEventHandlers;
XULElement implements MozFrameLoaderOwner;