Bug 633602 - Implement Pointer Lock (Mouse Lock) API. r=roc,smaug

This commit is contained in:
David Humphrey (:humph) 2012-04-11 17:55:21 -04:00
Родитель 2b20a076f8
Коммит d33d12de03
173 изменённых файлов: 2470 добавлений и 194 удалений

Просмотреть файл

@ -784,6 +784,12 @@ public:
*/
static void ExitFullScreen(bool aRunAsync);
virtual void RequestPointerLock(Element* aElement) = 0;
static void UnlockPointer();
//----------------------------------------------------------------------
// Document notification API's

Просмотреть файл

@ -1295,6 +1295,8 @@ private:
NodeHasExplicitBaseURI,
// Set if the element has some style states locked
ElementHasLockedStyleStates,
// Set if element has pointer locked
ElementHasPointerLock,
// Set if the node may have DOMMutationObserver attached to it.
NodeMayHaveDOMMutationObserver,
// Guard value
@ -1358,6 +1360,9 @@ public:
void SetMayHaveDOMMutationObserver()
{ SetBoolFlag(NodeMayHaveDOMMutationObserver, true); }
bool HasListenerManager() { return HasFlag(NODE_HAS_LISTENERMANAGER); }
bool HasPointerLock() const { return GetBoolFlag(ElementHasPointerLock); }
void SetPointerLock() { SetBoolFlag(ElementHasPointerLock); }
void ClearPointerLock() { ClearBoolFlag(ElementHasPointerLock); }
protected:
void SetParentIsContent(bool aValue) { SetBoolFlag(ParentIsContent, aValue); }
void SetInDocument() { SetBoolFlag(IsInDocument); }

Просмотреть файл

@ -8684,6 +8684,13 @@ nsDocument::ExitFullScreen()
// dispatch to so that we dispatch in the specified order.
nsAutoTArray<nsIDocument*, 8> changed;
// We may also need to unlock the pointer, if it's locked.
nsCOMPtr<Element> pointerLockedElement =
do_QueryReferent(nsEventStateManager::sPointerLockedElement);
if (pointerLockedElement) {
UnlockPointer();
}
// Walk the tree of full-screen documents, and reset their full-screen state.
ResetFullScreen(root, static_cast<void*>(&changed));
@ -8714,12 +8721,20 @@ nsDocument::RestorePreviousFullScreenState()
return;
}
// If fullscreen mode is updated the pointer should be unlocked
nsCOMPtr<Element> pointerLockedElement =
do_QueryReferent(nsEventStateManager::sPointerLockedElement);
if (pointerLockedElement) {
UnlockPointer();
}
// Clear full-screen stacks in all descendant documents, bottom up.
nsCOMPtr<nsIDocument> fullScreenDoc(do_QueryReferent(sFullScreenDoc));
nsIDocument* doc = fullScreenDoc;
while (doc != this) {
NS_ASSERTION(doc->IsFullScreenDoc(), "Should be full-screen doc");
static_cast<nsDocument*>(doc)->ClearFullScreenStack();
UnlockPointer();
DispatchFullScreenChange(doc);
doc = doc->GetParentDocument();
}
@ -8728,6 +8743,7 @@ nsDocument::RestorePreviousFullScreenState()
NS_ASSERTION(doc == this, "Must have reached this doc.");
while (doc != nsnull) {
static_cast<nsDocument*>(doc)->FullScreenStackPop();
UnlockPointer();
DispatchFullScreenChange(doc);
if (static_cast<nsDocument*>(doc)->mFullScreenStack.IsEmpty()) {
// Full-screen stack in document is empty. Go back up to the parent
@ -9003,7 +9019,22 @@ nsDocument::RequestFullScreen(Element* aElement, bool aWasCallerChrome)
// Remember the root document, so that if a full-screen document is hidden
// we can reset full-screen state in the remaining visible full-screen documents.
sFullScreenRootDoc = do_GetWeakReference(nsContentUtils::GetRootDocument(this));
nsIDocument* fullScreenDoc = nsContentUtils::GetRootDocument(this);
sFullScreenRootDoc = do_GetWeakReference(fullScreenDoc);
// If a document is already in fullscreen, then unlock the mouse pointer
// before setting a new document to fullscreen
if (fullScreenDoc) {
UnlockPointer();
}
// If a document is already in fullscreen, then unlock the mouse pointer
// before setting a new document to fullscreen
nsCOMPtr<Element> pointerLockedElement =
do_QueryReferent(nsEventStateManager::sPointerLockedElement);
if (pointerLockedElement) {
UnlockPointer();
}
// Set the full-screen element. This sets the full-screen style on the
// element, and the full-screen-ancestor styles on ancestors of the element
@ -9167,6 +9198,223 @@ nsDocument::IsFullScreenEnabled(bool aCallerIsChrome, bool aLogFailure)
return true;
}
static void
DispatchPointerLockChange(nsIDocument* aTarget)
{
nsRefPtr<nsAsyncDOMEvent> e =
new nsAsyncDOMEvent(aTarget,
NS_LITERAL_STRING("mozpointerlockchange"),
true,
false);
e->PostDOMEvent();
}
static void
DispatchPointerLockError(nsIDocument* aTarget)
{
nsRefPtr<nsAsyncDOMEvent> e =
new nsAsyncDOMEvent(aTarget,
NS_LITERAL_STRING("mozpointerlockerror"),
true,
false);
e->PostDOMEvent();
}
void
nsDocument::RequestPointerLock(Element* aElement)
{
NS_ASSERTION(aElement,
"Must pass non-null element to nsDocument::RequestPointerLock");
nsCOMPtr<Element> pointerLockedElement =
do_QueryReferent(nsEventStateManager::sPointerLockedElement);
if (aElement == pointerLockedElement) {
DispatchPointerLockChange(this);
return;
}
if (!ShouldLockPointer(aElement) ||
!SetPointerLock(aElement, NS_STYLE_CURSOR_NONE)) {
DispatchPointerLockError(this);
return;
}
aElement->SetPointerLock();
nsEventStateManager::sPointerLockedElement = do_GetWeakReference(aElement);
nsEventStateManager::sPointerLockedDoc =
do_GetWeakReference(static_cast<nsIDocument*>(this));
DispatchPointerLockChange(this);
}
bool
nsDocument::ShouldLockPointer(Element* aElement)
{
// Check if pointer lock pref is enabled
if (!Preferences::GetBool("full-screen-api.pointer-lock.enabled")) {
NS_WARNING("ShouldLockPointer(): Pointer Lock pref not enabled");
return false;
}
if (aElement != GetFullScreenElement()) {
NS_WARNING("ShouldLockPointer(): Element not in fullscreen");
return false;
}
if (!aElement->IsInDoc()) {
NS_WARNING("ShouldLockPointer(): Element without Document");
return false;
}
// Check if the element is in a document with a docshell.
nsCOMPtr<nsIDocument> ownerDoc = aElement->OwnerDoc();
if (!ownerDoc) {
return false;
}
if (!nsCOMPtr<nsISupports>(ownerDoc->GetContainer())) {
return false;
}
nsCOMPtr<nsPIDOMWindow> ownerWindow = ownerDoc->GetWindow();
if (!ownerWindow) {
return false;
}
nsCOMPtr<nsPIDOMWindow> ownerInnerWindow = ownerDoc->GetInnerWindow();
if (!ownerInnerWindow) {
return false;
}
if (ownerWindow->GetCurrentInnerWindow() != ownerInnerWindow) {
return false;
}
return true;
}
bool
nsDocument::SetPointerLock(Element* aElement, int aCursorStyle)
{
// NOTE: aElement will be nsnull when unlocking.
nsCOMPtr<nsPIDOMWindow> window = GetWindow();
if (!window) {
NS_WARNING("SetPointerLock(): No Window");
return false;
}
nsIDocShell *docShell = window->GetDocShell();
if (!docShell) {
NS_WARNING("SetPointerLock(): No DocShell (window already closed?)");
return false;
}
nsRefPtr<nsPresContext> presContext;
docShell->GetPresContext(getter_AddRefs(presContext));
if (!presContext) {
NS_WARNING("SetPointerLock(): Unable to get presContext in \
domWindow->GetDocShell()->GetPresContext()");
return false;
}
nsCOMPtr<nsIPresShell> shell = presContext->PresShell();
if (!shell) {
NS_WARNING("SetPointerLock(): Unable to find presContext->PresShell()");
return false;
}
nsIFrame* rootFrame = shell->GetRootFrame();
if (!rootFrame) {
NS_WARNING("SetPointerLock(): Unable to get root frame");
return false;
}
nsCOMPtr<nsIWidget> widget = rootFrame->GetNearestWidget();
if (!widget) {
NS_WARNING("SetPointerLock(): Unable to find widget in \
shell->GetRootFrame()->GetNearestWidget();");
return false;
}
if (aElement && (aElement->OwnerDoc() != this)) {
NS_WARNING("SetPointerLock(): Element not in this document.");
return false;
}
// Hide the cursor and set pointer lock for future mouse events
nsRefPtr<nsEventStateManager> esm = presContext->EventStateManager();
esm->SetCursor(aCursorStyle, nsnull, false,
0.0f, 0.0f, widget, true);
esm->SetPointerLock(widget, aElement);
return true;
}
void
nsDocument::UnlockPointer()
{
if (!nsEventStateManager::sIsPointerLocked) {
return;
}
nsCOMPtr<nsIDocument> pointerLockedDoc =
do_QueryReferent(nsEventStateManager::sPointerLockedDoc);
if (!pointerLockedDoc) {
return;
}
nsDocument* doc = static_cast<nsDocument*>(pointerLockedDoc.get());
if (!doc->SetPointerLock(nsnull, NS_STYLE_CURSOR_AUTO)) {
return;
}
nsCOMPtr<Element> pointerLockedElement =
do_QueryReferent(nsEventStateManager::sPointerLockedElement);
if (!pointerLockedElement) {
return;
}
nsEventStateManager::sPointerLockedElement = nsnull;
nsEventStateManager::sPointerLockedDoc = nsnull;
pointerLockedElement->ClearPointerLock();
DispatchPointerLockChange(pointerLockedDoc);
}
void
nsIDocument::UnlockPointer()
{
nsDocument::UnlockPointer();
}
NS_IMETHODIMP
nsDocument::MozExitPointerLock()
{
UnlockPointer();
return NS_OK;
}
NS_IMETHODIMP
nsDocument::GetMozPointerLockElement(nsIDOMElement** aPointerLockedElement)
{
NS_ENSURE_ARG_POINTER(aPointerLockedElement);
*aPointerLockedElement = nsnull;
nsCOMPtr<Element> pointerLockedElement =
do_QueryReferent(nsEventStateManager::sPointerLockedElement);
if (!pointerLockedElement) {
return NS_OK;
}
// Make sure pointer locked element is in the same document and domain.
nsCOMPtr<nsIDocument> pointerLockedDoc =
do_QueryReferent(nsEventStateManager::sPointerLockedDoc);
nsDocument* doc = static_cast<nsDocument*>(pointerLockedDoc.get());
if (doc != this) {
return NS_OK;
}
nsCOMPtr<nsIDOMNode> pointerLockedNode =
do_QueryInterface(pointerLockedElement);
nsresult rv = nsContentUtils::CheckSameOrigin(this, pointerLockedNode.get());
if (NS_FAILED(rv)) {
return NS_OK;
}
return CallQueryInterface(pointerLockedElement, aPointerLockedElement);
}
#define EVENT(name_, id_, type_, struct_) \
NS_IMETHODIMP nsDocument::GetOn##name_(JSContext *cx, jsval *vp) { \
return nsINode::GetOn##name_(cx, vp); \

Просмотреть файл

@ -986,6 +986,11 @@ public:
// Returns the top element from the full-screen stack.
Element* FullScreenStackTop();
void RequestPointerLock(Element* aElement);
bool ShouldLockPointer(Element* aElement);
bool SetPointerLock(Element* aElement, int aCursorStyle);
static void UnlockPointer();
// This method may fire a DOM event; if it does so it will happen
// synchronously.
void UpdateVisibilityState();

Просмотреть файл

@ -3280,6 +3280,9 @@ nsGenericElement::UnbindFromTree(bool aDeep, bool aNullParent)
// Fully exit full-screen.
nsIDocument::ExitFullScreen(false);
}
if (HasPointerLock()) {
nsIDocument::UnlockPointer();
}
if (GetParent()) {
NS_RELEASE(mParent);
} else {
@ -6456,6 +6459,13 @@ nsINode::Contains(nsIDOMNode* aOther, bool* aReturn)
return NS_OK;
}
NS_IMETHODIMP
nsGenericElement::MozRequestPointerLock()
{
OwnerDoc()->RequestPointerLock(this);
return NS_OK;
}
PRUint32
nsINode::Length() const
{

Просмотреть файл

@ -593,6 +593,8 @@ GK_ATOM(mousethrough, "mousethrough")
GK_ATOM(mouseup, "mouseup")
GK_ATOM(mozfullscreenchange, "mozfullscreenchange")
GK_ATOM(mozfullscreenerror, "mozfullscreenerror")
GK_ATOM(mozpointerlockchange, "mozpointerlockchange")
GK_ATOM(mozpointerlockerror, "mozpointerlockerror")
GK_ATOM(moz_opaque, "moz-opaque")
GK_ATOM(moz_action_hint, "mozactionhint")
GK_ATOM(x_moz_errormessage, "x-moz-errormessage")
@ -714,6 +716,8 @@ GK_ATOM(onmouseup, "onmouseup")
GK_ATOM(onMozAfterPaint, "onMozAfterPaint")
GK_ATOM(onmozfullscreenchange, "onmozfullscreenchange")
GK_ATOM(onmozfullscreenerror, "onmozfullscreenerror")
GK_ATOM(onmozpointerlockchange, "onmozpointerlockchange")
GK_ATOM(onmozpointerlockerror, "onmozpointerlockerror")
GK_ATOM(onMozMousePixelScroll, "onMozMousePixelScroll")
GK_ATOM(onMozScrolledAreaChanged, "onMozScrolledAreaChanged")
GK_ATOM(ononline, "ononline")

Просмотреть файл

@ -275,6 +275,14 @@ EVENT(mozfullscreenerror,
NS_FULLSCREENERROR,
EventNameType_HTML,
NS_EVENT_NULL)
EVENT(mozpointerlockchange,
NS_POINTERLOCKCHANGE,
EventNameType_HTML,
NS_EVENT_NULL)
EVENT(mozpointerlockerror,
NS_POINTERLOCKERROR,
EventNameType_HTML,
NS_EVENT_NULL)
// Not supported yet; probably never because "wheel" is a better idea.
// EVENT(mousewheel)
EVENT(pause,

Просмотреть файл

@ -100,6 +100,8 @@ static const char* const sEventNames[] = {
"MozBeforeResize",
"mozfullscreenchange",
"mozfullscreenerror",
"mozpointerlockchange",
"mozpointerlockerror",
"MozSwipeGesture",
"MozMagnifyGestureStart",
"MozMagnifyGestureUpdate",
@ -1170,6 +1172,10 @@ nsDOMEvent::GetScreenCoords(nsPresContext* aPresContext,
nsEvent* aEvent,
nsIntPoint aPoint)
{
if (nsEventStateManager::sIsPointerLocked) {
return nsEventStateManager::sLastScreenPoint;
}
if (!aEvent ||
(aEvent->eventStructType != NS_MOUSE_EVENT &&
aEvent->eventStructType != NS_POPUP_EVENT &&
@ -1225,6 +1231,10 @@ nsDOMEvent::GetClientCoords(nsPresContext* aPresContext,
nsIntPoint aPoint,
nsIntPoint aDefaultPoint)
{
if (nsEventStateManager::sIsPointerLocked) {
return nsEventStateManager::sLastClientPoint;
}
if (!aEvent ||
(aEvent->eventStructType != NS_MOUSE_EVENT &&
aEvent->eventStructType != NS_POPUP_EVENT &&

Просмотреть файл

@ -183,6 +183,8 @@ public:
eDOMEvents_beforeresize,
eDOMEvents_mozfullscreenchange,
eDOMEvents_mozfullscreenerror,
eDOMEvents_mozpointerlockchange,
eDOMEvents_mozpointerlockerror,
eDOMEvents_MozSwipeGesture,
eDOMEvents_MozMagnifyGestureStart,
eDOMEvents_MozMagnifyGestureUpdate,

Просмотреть файл

@ -233,6 +233,24 @@ nsDOMMouseEvent::GetRelatedTarget(nsIDOMEventTarget** aRelatedTarget)
return NS_OK;
}
NS_IMETHODIMP
nsDOMMouseEvent::GetMozMovementX(PRInt32* aMovementX)
{
NS_ENSURE_ARG_POINTER(aMovementX);
*aMovementX = GetMovementPoint().x;
return NS_OK;
}
NS_IMETHODIMP
nsDOMMouseEvent::GetMozMovementY(PRInt32* aMovementY)
{
NS_ENSURE_ARG_POINTER(aMovementY);
*aMovementY = GetMovementPoint().y;
return NS_OK;
}
NS_METHOD nsDOMMouseEvent::GetScreenX(PRInt32* aScreenX)
{
NS_ENSURE_ARG_POINTER(aScreenX);

Просмотреть файл

@ -49,7 +49,6 @@
#include "nsContentUtils.h"
#include "nsEventStateManager.h"
#include "nsIFrame.h"
#include "nsLayoutUtils.h"
#include "nsIScrollableFrame.h"
#include "DictionaryHelpers.h"
@ -58,6 +57,9 @@ nsDOMUIEvent::nsDOMUIEvent(nsPresContext* aPresContext, nsGUIEvent* aEvent)
static_cast<nsEvent *>(aEvent) :
static_cast<nsEvent *>(new nsUIEvent(false, 0, 0)))
, mClientPoint(0, 0), mLayerPoint(0, 0), mPagePoint(0, 0)
, mIsPointerLocked(nsEventStateManager::sIsPointerLocked)
, mLastScreenPoint(nsEventStateManager::sLastScreenPoint)
, mLastClientPoint(nsEventStateManager::sLastClientPoint)
{
if (aEvent) {
mEventIsInternal = false;
@ -124,7 +126,7 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(nsDOMUIEvent)
NS_INTERFACE_MAP_END_INHERITING(nsDOMEvent)
nsIntPoint
nsDOMUIEvent::GetScreenPoint()
nsDOMUIEvent::GetMovementPoint()
{
if (!mEvent ||
(mEvent->eventStructType != NS_MOUSE_EVENT &&
@ -136,43 +138,41 @@ nsDOMUIEvent::GetScreenPoint()
return nsIntPoint(0, 0);
}
if (!((nsGUIEvent*)mEvent)->widget ) {
return mEvent->refPoint;
if (!((nsGUIEvent*)mEvent)->widget) {
return mEvent->lastRefPoint;
}
nsIntPoint offset = mEvent->refPoint +
// Calculate the delta between the previous screen point and the current one.
nsIntPoint currentPoint = CalculateScreenPoint(mPresContext, mEvent);
// Adjust previous event's refPoint so it compares to current screenX, screenY
nsIntPoint offset = mEvent->lastRefPoint +
((nsGUIEvent*)mEvent)->widget->WidgetToScreenOffset();
nscoord factor = mPresContext->DeviceContext()->UnscaledAppUnitsPerDevPixel();
return nsIntPoint(nsPresContext::AppUnitsToIntCSSPixels(offset.x * factor),
nsIntPoint lastPoint = nsIntPoint(nsPresContext::AppUnitsToIntCSSPixels(offset.x * factor),
nsPresContext::AppUnitsToIntCSSPixels(offset.y * factor));
return currentPoint - lastPoint;
}
nsIntPoint
nsDOMUIEvent::GetScreenPoint()
{
if (mIsPointerLocked) {
return mLastScreenPoint;
}
return CalculateScreenPoint(mPresContext, mEvent);
}
nsIntPoint
nsDOMUIEvent::GetClientPoint()
{
if (!mEvent ||
(mEvent->eventStructType != NS_MOUSE_EVENT &&
mEvent->eventStructType != NS_POPUP_EVENT &&
mEvent->eventStructType != NS_MOUSE_SCROLL_EVENT &&
mEvent->eventStructType != NS_MOZTOUCH_EVENT &&
mEvent->eventStructType != NS_DRAG_EVENT &&
mEvent->eventStructType != NS_SIMPLE_GESTURE_EVENT) ||
!mPresContext ||
!((nsGUIEvent*)mEvent)->widget) {
return mClientPoint;
if (mIsPointerLocked) {
return mLastClientPoint;
}
nsPoint pt(0, 0);
nsIPresShell* shell = mPresContext->GetPresShell();
if (!shell) {
return nsIntPoint(0, 0);
}
nsIFrame* rootFrame = shell->GetRootFrame();
if (rootFrame)
pt = nsLayoutUtils::GetEventCoordinatesRelativeTo(mEvent, rootFrame);
return nsIntPoint(nsPresContext::AppUnitsToIntCSSPixels(pt.x),
nsPresContext::AppUnitsToIntCSSPixels(pt.y));
return CalculateClientPoint(mPresContext, mEvent, &mClientPoint);
}
NS_IMETHODIMP

Просмотреть файл

@ -41,6 +41,7 @@
#include "nsIDOMUIEvent.h"
#include "nsDOMEvent.h"
#include "nsLayoutUtils.h"
class nsDOMUIEvent : public nsDOMEvent,
public nsIDOMUIEvent
@ -66,10 +67,67 @@ public:
virtual nsresult InitFromCtor(const nsAString& aType,
JSContext* aCx, jsval* aVal);
static nsIntPoint CalculateScreenPoint(nsPresContext* aPresContext,
nsEvent* aEvent)
{
if (!aEvent ||
(aEvent->eventStructType != NS_MOUSE_EVENT &&
aEvent->eventStructType != NS_POPUP_EVENT &&
aEvent->eventStructType != NS_MOUSE_SCROLL_EVENT &&
aEvent->eventStructType != NS_MOZTOUCH_EVENT &&
aEvent->eventStructType != NS_DRAG_EVENT &&
aEvent->eventStructType != NS_SIMPLE_GESTURE_EVENT)) {
return nsIntPoint(0, 0);
}
if (!((nsGUIEvent*)aEvent)->widget ) {
return aEvent->refPoint;
}
nsIntPoint offset = aEvent->refPoint +
((nsGUIEvent*)aEvent)->widget->WidgetToScreenOffset();
nscoord factor = aPresContext->DeviceContext()->UnscaledAppUnitsPerDevPixel();
return nsIntPoint(nsPresContext::AppUnitsToIntCSSPixels(offset.x * factor),
nsPresContext::AppUnitsToIntCSSPixels(offset.y * factor));
}
static nsIntPoint CalculateClientPoint(nsPresContext* aPresContext,
nsEvent* aEvent,
nsIntPoint* aDefaultClientPoint)
{
if (!aEvent ||
(aEvent->eventStructType != NS_MOUSE_EVENT &&
aEvent->eventStructType != NS_POPUP_EVENT &&
aEvent->eventStructType != NS_MOUSE_SCROLL_EVENT &&
aEvent->eventStructType != NS_MOZTOUCH_EVENT &&
aEvent->eventStructType != NS_DRAG_EVENT &&
aEvent->eventStructType != NS_SIMPLE_GESTURE_EVENT) ||
!aPresContext ||
!((nsGUIEvent*)aEvent)->widget) {
return (nsnull == aDefaultClientPoint ? nsIntPoint(0, 0) :
nsIntPoint(aDefaultClientPoint->x, aDefaultClientPoint->y));
}
nsPoint pt(0, 0);
nsIPresShell* shell = aPresContext->GetPresShell();
if (!shell) {
return nsIntPoint(0, 0);
}
nsIFrame* rootFrame = shell->GetRootFrame();
if (rootFrame) {
pt = nsLayoutUtils::GetEventCoordinatesRelativeTo(aEvent, rootFrame);
}
return nsIntPoint(nsPresContext::AppUnitsToIntCSSPixels(pt.x),
nsPresContext::AppUnitsToIntCSSPixels(pt.y));
}
protected:
// Internal helper functions
nsIntPoint GetScreenPoint();
nsIntPoint GetClientPoint();
nsIntPoint GetMovementPoint();
nsIntPoint GetLayerPoint();
nsIntPoint GetPagePoint();
@ -88,6 +146,10 @@ protected:
// Screenpoint is mEvent->refPoint.
nsIntPoint mLayerPoint;
nsIntPoint mPagePoint;
nsIntPoint mMovement;
bool mIsPointerLocked;
nsIntPoint mLastScreenPoint;
nsIntPoint mLastClientPoint;
};
#define NS_FORWARD_TO_NSDOMUIEVENT \

Просмотреть файл

@ -137,6 +137,8 @@
#include "mozilla/LookAndFeel.h"
#include "sampler.h"
#include "nsIDOMClientRect.h"
#ifdef XP_MACOSX
#import <ApplicationServices/ApplicationServices.h>
#endif
@ -159,6 +161,15 @@ bool nsEventStateManager::sNormalLMouseEventInProcess = false;
nsEventStateManager* nsEventStateManager::sActiveESM = nsnull;
nsIDocument* nsEventStateManager::sMouseOverDocument = nsnull;
nsWeakFrame nsEventStateManager::sLastDragOverFrame = nsnull;
nsIntPoint nsEventStateManager::sLastRefPoint = nsIntPoint(0,0);
nsIntPoint nsEventStateManager::sLastScreenOffset = nsIntPoint(0,0);
nsIntPoint nsEventStateManager::sLastScreenPoint = nsIntPoint(0,0);
nsIntPoint nsEventStateManager::sLastClientPoint = nsIntPoint(0,0);
bool nsEventStateManager::sIsPointerLocked = false;
// Reference to the pointer locked element.
nsWeakPtr nsEventStateManager::sPointerLockedElement;
// Reference to the document which requested pointer lock.
nsWeakPtr nsEventStateManager::sPointerLockedDoc;
nsCOMPtr<nsIContent> nsEventStateManager::sDragOverContent = nsnull;
static PRUint32 gMouseOrKeyboardEventCounter = 0;
@ -772,6 +783,7 @@ nsMouseWheelTransaction::LimitToOnePageScroll(PRInt32 aScrollLines,
nsEventStateManager::nsEventStateManager()
: mLockCursor(0),
mPreLockPoint(0,0),
mCurrentTarget(nsnull),
mLastMouseOverFrame(nsnull),
// init d&d gesture state machine variables
@ -1046,6 +1058,23 @@ nsEventStateManager::PreHandleEvent(nsPresContext* aPresContext,
NS_ASSERTION(mCurrentTarget, "mCurrentTarget is null. this should not happen. see bug #13007");
if (!mCurrentTarget) return NS_ERROR_NULL_POINTER;
}
#ifdef DEBUG
if (NS_IS_DRAG_EVENT(aEvent) && sIsPointerLocked) {
NS_ASSERTION(sIsPointerLocked,
"sIsPointerLocked is true. Drag events should be suppressed when the pointer is locked.");
}
#endif
// Store last known screenPoint and clientPoint so pointer lock
// can use these values as constants.
if (NS_IS_TRUSTED_EVENT(aEvent) &&
(NS_IS_MOUSE_EVENT_STRUCT(aEvent) &&
IsMouseEventReal(aEvent)) ||
aEvent->eventStructType == NS_MOUSE_SCROLL_EVENT) {
if (!sIsPointerLocked) {
sLastScreenPoint = nsDOMUIEvent::CalculateScreenPoint(aPresContext, aEvent);
sLastClientPoint = nsDOMUIEvent::CalculateClientPoint(aPresContext, aEvent, nsnull);
}
}
// Do not take account NS_MOUSE_ENTER/EXIT so that loading a page
// when user is not active doesn't change the state to active.
@ -3779,6 +3808,25 @@ nsEventStateManager::DispatchMouseEvent(nsGUIEvent* aEvent, PRUint32 aMessage,
nsIContent* aTargetContent,
nsIContent* aRelatedContent)
{
// http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html#methods
// "[When the mouse is locked on an element...e]vents that require the concept
// of a mouse cursor must not be dispatched (for example: mouseover, mouseout).
if (sIsPointerLocked &&
(aMessage == NS_MOUSELEAVE ||
aMessage == NS_MOUSEENTER ||
aMessage == NS_MOUSE_ENTER_SYNTH ||
aMessage == NS_MOUSE_EXIT_SYNTH)) {
mCurrentTargetContent = nsnull;
nsCOMPtr<Element> pointerLockedElement =
do_QueryReferent(nsEventStateManager::sPointerLockedElement);
if (!pointerLockedElement) {
NS_WARNING("Should have pointer locked element, but didn't.");
return nsnull;
}
nsCOMPtr<nsIContent> content = do_QueryInterface(pointerLockedElement);
return mPresContext->GetPrimaryFrameFor(content);
}
SAMPLE_LABEL("Input", "DispatchMouseEvent");
nsEventStatus status = nsEventStatus_eIgnore;
nsMouseEvent event(NS_IS_TRUSTED_EVENT(aEvent), aMessage, aEvent->widget,
@ -3989,6 +4037,26 @@ nsEventStateManager::GenerateMouseEnterExit(nsGUIEvent* aEvent)
switch(aEvent->message) {
case NS_MOUSE_MOVE:
{
if (sIsPointerLocked && aEvent->widget) {
// Perform mouse lock by recentering the mouse directly, then remembering the deltas.
nsIntRect bounds;
aEvent->widget->GetScreenBounds(bounds);
aEvent->lastRefPoint = GetMouseCoords(bounds);
// refPoint should not be the centre on mousemove
if (aEvent->refPoint.x == aEvent->lastRefPoint.x &&
aEvent->refPoint.y == aEvent->lastRefPoint.y) {
aEvent->refPoint = sLastRefPoint;
} else {
aEvent->widget->SynthesizeNativeMouseMove(aEvent->lastRefPoint);
}
} else {
aEvent->lastRefPoint = nsIntPoint(sLastRefPoint.x, sLastRefPoint.y);
}
// Update the last known refPoint with the current refPoint.
sLastRefPoint = nsIntPoint(aEvent->refPoint.x, aEvent->refPoint.y);
// Get the target content target (mousemove target == mouseover target)
nsCOMPtr<nsIContent> targetElement = GetEventTargetContent(aEvent);
if (!targetElement) {
@ -4024,6 +4092,79 @@ nsEventStateManager::GenerateMouseEnterExit(nsGUIEvent* aEvent)
mCurrentTargetContent = targetBeforeEvent;
}
void
nsEventStateManager::SetPointerLock(nsIWidget* aWidget,
nsIContent* aElement)
{
// NOTE: aElement will be nsnull when unlocking.
sIsPointerLocked = !!aElement;
if (!aWidget) {
return;
}
// Reset mouse wheel transaction
nsMouseWheelTransaction::EndTransaction();
// Deal with DnD events
nsCOMPtr<nsIDragService> dragService =
do_GetService("@mozilla.org/widget/dragservice;1");
if (sIsPointerLocked) {
// Store the last known ref point so we can reposition the pointer after unlock.
mPreLockPoint = sLastRefPoint + sLastScreenOffset;
nsIntRect bounds;
aWidget->GetScreenBounds(bounds);
sLastRefPoint = GetMouseCoords(bounds);
aWidget->SynthesizeNativeMouseMove(sLastRefPoint);
// Retarget all events to this element via capture.
nsIPresShell::SetCapturingContent(aElement, CAPTURE_POINTERLOCK);
// Suppress DnD
if (dragService) {
dragService->Suppress();
}
} else {
// Unlocking, so return pointer to the original position
aWidget->SynthesizeNativeMouseMove(sLastScreenPoint);
// Don't retarget events to this element any more.
nsIPresShell::SetCapturingContent(nsnull, CAPTURE_POINTERLOCK);
// Unsuppress DnD
if (dragService) {
dragService->Unsuppress();
}
}
}
nsIntPoint
nsEventStateManager::GetMouseCoords(nsIntRect aBounds)
{
NS_ASSERTION(sIsPointerLocked, "GetMouseCoords when not pointer locked!");
nsCOMPtr<nsIDocument> pointerLockedDoc =
do_QueryReferent(nsEventStateManager::sPointerLockedDoc);
if (!pointerLockedDoc) {
NS_WARNING("GetMouseCoords(): No Document");
return nsIntPoint(0, 0);
}
nsCOMPtr<nsPIDOMWindow> domWin = pointerLockedDoc->GetInnerWindow();
if (!domWin) {
NS_WARNING("GetMouseCoords(): No Window");
return nsIntPoint(0, 0);
}
int innerHeight;
domWin->GetInnerHeight(&innerHeight);
return nsIntPoint((aBounds.width / 2) + aBounds.x,
(innerHeight / 2) + (aBounds.y + (aBounds.height - innerHeight)));
}
void
nsEventStateManager::GenerateDragDropEnterExit(nsPresContext* aPresContext,
nsGUIEvent* aEvent)

Просмотреть файл

@ -228,6 +228,12 @@ public:
static bool IsRemoteTarget(nsIContent* aTarget);
static nsIntPoint sLastScreenPoint;
static nsIntPoint sLastClientPoint;
static bool sIsPointerLocked;
static nsWeakPtr sPointerLockedElement;
static nsWeakPtr sPointerLockedDoc;
protected:
friend class MouseEnterLeaveDispatcher;
@ -480,11 +486,16 @@ private:
PRInt32 mLockCursor;
// Point when mouse was locked, used to reposition after unlocking.
nsIntPoint mPreLockPoint;
nsWeakFrame mCurrentTarget;
nsCOMPtr<nsIContent> mCurrentTargetContent;
nsWeakFrame mLastMouseOverFrame;
nsCOMPtr<nsIContent> mLastMouseOverElement;
static nsWeakFrame sLastDragOverFrame;
static nsIntPoint sLastRefPoint;
static nsIntPoint sLastScreenOffset;
// member variables for the d&d gesture state machine
nsIntPoint mGestureDownPoint; // screen coordinates
@ -556,6 +567,9 @@ public:
nsGUIEvent* inMouseDownEvent ) ;
void KillClickHoldTimer ( ) ;
void FireContextClick ( ) ;
void SetPointerLock(nsIWidget* aWidget, nsIContent* aElement) ;
nsIntPoint GetMouseCoords(nsIntRect aBounds);
static void sClickHoldCallback ( nsITimer* aTimer, void* aESM ) ;
};

Просмотреть файл

@ -48,6 +48,8 @@ var gTestWindows = [
var testWindow = null;
var gTestIndex = 0;
// TODO: if ever we remove these checks for XP and Lion, we should do the same
// in dom/tests/mochitest/pointerlock/test_pointerlock-api.html, which uses the same pattern.
const isWinXP = navigator.userAgent.indexOf("Windows NT 5.1") != -1;
const isOSXLion = navigator.userAgent.indexOf("Mac OS X 10.7") != -1;

Просмотреть файл

@ -66,7 +66,7 @@ interface nsIDOMLocation;
* http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html
*/
[scriptable, uuid(ac4942fe-1679-4000-aaa7-41dee590a120)]
[scriptable, uuid(FDB92F4F-C6B4-4509-A29D-A309981E28AC)]
interface nsIDOMDocument : nsIDOMNode
{
readonly attribute nsIDOMDocumentType doctype;
@ -396,6 +396,21 @@ interface nsIDOMDocument : nsIDOMNode
*/
readonly attribute boolean mozFullScreenEnabled;
/**
* The element to which the mouse pointer is locked, if any, as per the
* DOM pointer lock api.
*
* @see <http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html>
*/
readonly attribute nsIDOMElement mozPointerLockElement;
/**
* Exit pointer is lock if locked, as per the DOM pointer lock api.
*
* @see <http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html>
*/
void mozExitPointerLock();
/**
* Inline event handler for readystatechange events.
*/

Просмотреть файл

@ -49,7 +49,7 @@
* http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-element
*/
[scriptable, uuid(295e05d9-9174-48ae-bc59-d7e6a8757726)]
[scriptable, uuid(69D44CE2-B544-49A8-BB5F-87804B971EE4)]
interface nsIDOMElement : nsIDOMNode
{
readonly attribute DOMString tagName;
@ -228,4 +228,12 @@ interface nsIDOMElement : nsIDOMNode
* @see <https://wiki.mozilla.org/index.php?title=Gecko:FullScreenAPI>
*/
void mozRequestFullScreen();
/**
* Requests that this element be made the pointer-locked element, as per the DOM
* pointer lock api.
*
* @see <http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html>
*/
void mozRequestPointerLock();
};

Просмотреть файл

@ -38,7 +38,7 @@
#include "nsIDOMDocument.idl"
[scriptable, uuid(2ba0cbad-d03e-424d-a47f-560541192bc3)]
[scriptable, uuid(18C55EFC-560B-4BDD-9776-A8D239EF7052)]
interface nsIDOMXMLDocument : nsIDOMDocument
{
// DOM Level 3 Load & Save, DocumentLS

Просмотреть файл

@ -82,6 +82,8 @@ interface nsIInlineEventHandlers : nsISupports
// [implicit_jscontext] attribute jsval onmousewheel;
[implicit_jscontext] attribute jsval onmozfullscreenchange;
[implicit_jscontext] attribute jsval onmozfullscreenerror;
[implicit_jscontext] attribute jsval onmozpointerlockchange;
[implicit_jscontext] attribute jsval onmozpointerlockerror;
[implicit_jscontext] attribute jsval onpause;
[implicit_jscontext] attribute jsval onplay;
[implicit_jscontext] attribute jsval onplaying;

Просмотреть файл

@ -48,12 +48,15 @@
* http://www.w3.org/TR/DOM-Level-2-Events/
*/
[scriptable, uuid(7f57aa45-6792-4d8b-ba5b-201533cf0b2f)]
[scriptable, uuid(53E29996-F851-4032-B896-8AAFBD0BDF25)]
interface nsIDOMMouseEvent : nsIDOMUIEvent
{
readonly attribute long screenX;
readonly attribute long screenY;
readonly attribute long mozMovementX;
readonly attribute long mozMovementY;
readonly attribute long clientX;
readonly attribute long clientY;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(8ca68d9c-1701-47e0-87d4-ddf9d36609a2)]
[scriptable, uuid(68F49F8F-5FFD-44EB-A59F-D2B3F4817299)]
interface nsIDOMHTMLAnchorElement : nsIDOMHTMLElement
{
attribute DOMString href;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(27b49244-7752-43d4-8f2c-e22f26ebea0e)]
[scriptable, uuid(F3D34247-A6E9-416A-AE37-761E26A3881E)]
interface nsIDOMHTMLAppletElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(eaf79702-058c-4a02-b5e5-5606b3d60255)]
[scriptable, uuid(D3043539-158A-43EC-B845-175B5726AEB7)]
interface nsIDOMHTMLAreaElement : nsIDOMHTMLElement
{
attribute DOMString alt;

Просмотреть файл

@ -52,7 +52,7 @@
* @status UNDER_DEVELOPMENT
*/
[scriptable, uuid(ecf4ed75-83b0-4a96-af11-d6cefab59dc0)]
[scriptable, uuid(D5844B73-30E2-46D5-894C-108967E05C80)]
interface nsIDOMHTMLAudioElement : nsIDOMHTMLMediaElement
{
// Setup the audio stream for writing

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(b0cde271-9773-43dd-a5c4-22159bd6addb)]
[scriptable, uuid(11D1C93A-9538-4BE3-8E90-372E25AB9D61)]
interface nsIDOMHTMLBRElement : nsIDOMHTMLElement
{
attribute DOMString clear;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(66a5612b-66e4-4455-b805-6df735889e8d)]
[scriptable, uuid(CC18F6D7-560F-485E-BC37-23354B2384F4)]
interface nsIDOMHTMLBaseElement : nsIDOMHTMLElement
{
attribute DOMString href;

Просмотреть файл

@ -54,7 +54,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(9b4bd03e-cc71-4fab-b0b8-51156c666cb4)]
[scriptable, uuid(D8F00C8B-D317-4DF2-A9BF-4A1E6F19F945)]
interface nsIDOMHTMLBodyElement : nsIDOMHTMLElement
{
attribute DOMString aLink;

Просмотреть файл

@ -52,7 +52,7 @@
interface nsIDOMValidityState;
[scriptable, uuid(6b78685d-1ef4-4d89-9d6b-823c3dac361f)]
[scriptable, uuid(8E40D4D7-C204-4192-802A-0B5602E9C669)]
interface nsIDOMHTMLButtonElement : nsIDOMHTMLElement
{
attribute boolean autofocus;

Просмотреть файл

@ -56,7 +56,7 @@ interface nsIDOMFile;
interface nsIVariant;
interface nsIInputStreamCallback;
[scriptable, uuid(21296a59-25d8-45fb-8c27-290044c88922)]
[scriptable, uuid(5929542B-C68E-48AB-84F9-D9642DA39720)]
interface nsIDOMHTMLCanvasElement : nsIDOMHTMLElement
{
attribute unsigned long width;

Просмотреть файл

@ -46,7 +46,7 @@
* @status UNDER_DEVELOPMENT
*/
[scriptable, uuid(2ee6f391-342a-42b9-a9f6-f0f7e6d1701b)]
[scriptable, uuid(A6963C8F-6475-4631-B7E0-41DD7DC8F388)]
interface nsIDOMHTMLCommandElement : nsIDOMHTMLElement
{
attribute DOMString type;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(0344a153-f2c7-4d0c-9b4c-b7616db89728)]
[scriptable, uuid(957E223E-217A-4BBF-B6D8-D723ACFB9168)]
interface nsIDOMHTMLDListElement : nsIDOMHTMLElement
{
attribute boolean compact;

Просмотреть файл

@ -49,7 +49,7 @@
interface nsIDOMHTMLCollection;
[scriptable, uuid(a652777e-9ad9-4afe-861d-172f888c2f46)]
[scriptable, uuid(EEB039A1-FD4E-41A3-805A-B367BA235DC2)]
interface nsIDOMHTMLDataListElement : nsIDOMHTMLElement
{
readonly attribute nsIDOMHTMLCollection options;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(c60c67d6-ef9a-40ce-8608-9c837da7fbbc)]
[scriptable, uuid(2C83A5C4-67AB-4DC5-A133-CFDAF260963C)]
interface nsIDOMHTMLDirectoryElement : nsIDOMHTMLElement
{
attribute boolean compact;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(32b88969-3c24-4c4b-be73-13b29a73cc81)]
[scriptable, uuid(A9651DAE-DBD8-4CBE-B42B-A20124C2FE6D)]
interface nsIDOMHTMLDivElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -47,7 +47,7 @@
*/
interface nsISelection;
[scriptable, uuid(3dae5807-3615-4567-913f-c3956a2aa251)]
[scriptable, uuid(1B93973F-28CC-4F33-8E7B-B89C63AA9200)]
interface nsIDOMHTMLDocument : nsIDOMDocument
{
readonly attribute DOMString URL;

Просмотреть файл

@ -53,7 +53,7 @@ interface nsIDOMHTMLMenuElement;
* with changes from the work-in-progress WHATWG HTML specification:
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(b5d80fa5-91bc-4b3b-b8bc-1becb563ae15)]
[scriptable, uuid(5C8B21BC-EF6E-4599-A26F-FACC05B4ADBE)]
interface nsIDOMHTMLElement : nsIDOMElement
{
// metadata attributes

Просмотреть файл

@ -47,7 +47,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/#the-embed-element
*/
[scriptable, uuid(e4c2af44-3a99-47d7-b9b2-4ccc5c832618)]
[scriptable, uuid(BF234467-1F2E-4A6A-A5AA-74EC86299150)]
interface nsIDOMHTMLEmbedElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -52,7 +52,7 @@
interface nsIDOMValidityState;
[scriptable, uuid(7b26c8d8-f802-4b04-b114-b44201000faf)]
[scriptable, uuid(AB2F9E30-1217-4172-9A95-262480FEC534)]
interface nsIDOMHTMLFieldSetElement : nsIDOMHTMLElement
{
attribute boolean disabled;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(833bb94c-5069-4d79-8228-d658d90cf970)]
[scriptable, uuid(EFF9CEAC-BE69-4A94-9DD4-0C023DEF00B3)]
interface nsIDOMHTMLFontElement : nsIDOMHTMLElement
{
attribute DOMString color;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(13a92ac0-7b39-4a5b-8c0d-e75064646c62)]
[scriptable, uuid(59C0DC07-D784-410B-8B5E-C26BAF7CB8A6)]
interface nsIDOMHTMLFormElement : nsIDOMHTMLElement
{
attribute DOMString acceptCharset;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(1169be36-b8b6-4a8e-9456-274409fce393)]
[scriptable, uuid(2AA7855A-0667-47C3-AF1E-9101002816C1)]
interface nsIDOMHTMLFrameElement : nsIDOMHTMLElement
{
attribute DOMString frameBorder;

Просмотреть файл

@ -54,7 +54,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(1c2925dc-8374-4ed8-8981-a38445b6e4ed)]
[scriptable, uuid(B4D06FF4-877A-4FA3-9EFB-A75D2C843520)]
interface nsIDOMHTMLFrameSetElement : nsIDOMHTMLElement
{
attribute DOMString cols;

Просмотреть файл

@ -51,7 +51,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(cc836228-8f6e-4a8d-a973-3931e4660ed2)]
[scriptable, uuid(739078CD-3251-44C9-B5F9-128C0AF23707)]
interface nsIDOMHTMLHRElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(8d2107f9-d045-40eb-915b-9de87a950ce7)]
[scriptable, uuid(8B38545F-7FA5-47D5-A902-C8EA8E78FB0D)]
interface nsIDOMHTMLHeadElement : nsIDOMHTMLElement
{
};

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(ee1169f0-67d8-4f2a-af10-016ba3bf9794)]
[scriptable, uuid(B302D445-7B7B-4B6D-9C6D-AEC30CE4F2E0)]
interface nsIDOMHTMLHeadingElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(f44f6721-1cb3-4a98-b458-2a1a29c25e2f)]
[scriptable, uuid(73706343-BA89-4C80-932E-E636E5E8D8E2)]
interface nsIDOMHTMLHtmlElement : nsIDOMHTMLElement
{
attribute DOMString version;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(0ead5a5c-e4d3-4e4d-88b8-7c9dc9d2665c)]
[scriptable, uuid(97E4F0E1-BD27-40EC-9287-5634DAF15B73)]
interface nsIDOMHTMLIFrameElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(cb711ec9-17e8-4259-9045-ca9ad128f62e)]
[scriptable, uuid(AACA79C6-FC1D-4AC6-B358-C5CF9595A797)]
interface nsIDOMHTMLImageElement : nsIDOMHTMLElement
{
attribute DOMString alt;

Просмотреть файл

@ -54,7 +54,7 @@ interface nsIDOMValidityState;
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(0c8e11b5-94f3-405a-aa1b-c5e7eec4ba4d)]
[scriptable, uuid(05FEDF7E-3050-4143-AB97-B994F3CC9329)]
interface nsIDOMHTMLInputElement : nsIDOMHTMLElement
{
attribute DOMString accept;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(f4949a2d-ca29-47a8-88f3-c83570f9e3d4)]
[scriptable, uuid(C233D9D0-F0ED-4322-B3DB-C075711B816C)]
interface nsIDOMHTMLLIElement : nsIDOMHTMLElement
{
attribute DOMString type;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(4e5d92a3-8f9b-438d-98d8-42a1526369be)]
[scriptable, uuid(479F4997-6551-4F8F-AEE5-5FF6F176B0ED)]
interface nsIDOMHTMLLabelElement : nsIDOMHTMLElement
{
readonly attribute nsIDOMHTMLFormElement form;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(1fbae5ab-036e-4941-8b09-754ab8f217cc)]
[scriptable, uuid(457A1606-1FDA-4C2B-869E-050C58D9C32E)]
interface nsIDOMHTMLLegendElement : nsIDOMHTMLElement
{
readonly attribute nsIDOMHTMLFormElement form;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(36c22a1c-d53d-4e59-bb84-c8e538ba9621)]
[scriptable, uuid(59AE3529-170A-41E4-8D7A-241DCA6B5760)]
interface nsIDOMHTMLLinkElement : nsIDOMHTMLElement
{
attribute boolean disabled;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(39ed3fe6-1ff6-4d1d-bf77-7a10a35bfccc)]
[scriptable, uuid(34CD4620-62BA-4264-8D29-E5007F2641A6)]
interface nsIDOMHTMLMapElement : nsIDOMHTMLElement
{
readonly attribute nsIDOMHTMLCollection areas;

Просмотреть файл

@ -57,7 +57,7 @@
#endif
%}
[scriptable, uuid(60ea8009-022b-4e65-a452-054b0483182e)]
[scriptable, uuid(02FB205D-68B5-4722-982B-1D12238FBF72)]
interface nsIDOMHTMLMediaElement : nsIDOMHTMLElement
{
// error state

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(be2d054e-e9cd-45bd-b075-58783cdca8a4)]
[scriptable, uuid(8A3975C9-729A-45A5-AB20-DD2B47EE9508)]
interface nsIDOMHTMLMenuElement : nsIDOMHTMLElement
{
attribute boolean compact;

Просмотреть файл

@ -43,7 +43,7 @@
* @status UNDER_DEVELOPMENT
*/
[scriptable, uuid(74ffab29-3a81-4099-8f38-55b1ad3a6988)]
[scriptable, uuid(685E02FF-8148-4414-A0D6-319E817F3B56)]
interface nsIDOMHTMLMenuItemElement : nsIDOMHTMLCommandElement
{
};

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(75f9f39c-7389-4acb-9100-cda379151b12)]
[scriptable, uuid(AA3B1280-669C-43ED-8815-B60B395A8D66)]
interface nsIDOMHTMLMetaElement : nsIDOMHTMLElement
{
attribute DOMString content;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(34cc420e-ac88-44ac-817f-6c6bf39e5dc1)]
[scriptable, uuid(4564C9EF-795B-4080-AE48-C4527855390C)]
interface nsIDOMHTMLModElement : nsIDOMHTMLElement
{
attribute DOMString cite;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(bdae649e-9cfd-4010-b9f6-5ff29c75aeaa)]
[scriptable, uuid(64155DCA-83CA-4FFE-8B64-A7F82F29586F)]
interface nsIDOMHTMLOListElement : nsIDOMHTMLElement
{
attribute boolean compact;

Просмотреть файл

@ -52,7 +52,7 @@
interface nsIDOMValidityState;
[scriptable, uuid(b85a1d53-77b8-4550-98ae-d9c4339f2ef9)]
[scriptable, uuid(A70595DD-68A5-41F5-AB52-73A47D98BD78)]
interface nsIDOMHTMLObjectElement : nsIDOMHTMLElement
{
readonly attribute nsIDOMHTMLFormElement form;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(466575ed-ea87-459e-931e-978877db9d41)]
[scriptable, uuid(BEDB0D8D-030E-409A-B3B5-28DC0E0D9C34)]
interface nsIDOMHTMLOptGroupElement : nsIDOMHTMLElement
{
attribute boolean disabled;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(f3cbd120-a456-41bf-807e-1aa648c02363)]
[scriptable, uuid(68A5D794-39BF-4B00-AEFE-754B9E8F7EC6)]
interface nsIDOMHTMLOptionElement : nsIDOMHTMLElement
{
attribute boolean disabled;

Просмотреть файл

@ -50,7 +50,7 @@
interface nsIDOMDOMSettableTokenList;
interface nsIDOMValidityState;
[scriptable, uuid(b13de107-dd83-4b1b-8970-c25a0890e799)]
[scriptable, uuid(01542000-CD00-4E8A-841C-9BAAD6BA0368)]
interface nsIDOMHTMLOutputElement : nsIDOMHTMLElement
{
readonly attribute nsIDOMDOMSettableTokenList htmlFor;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(c3f56887-058b-4143-ac75-de01fbd088c7)]
[scriptable, uuid(32840748-F8A8-414C-B0DE-DD947E5B0BD0)]
interface nsIDOMHTMLParagraphElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(9e2e501c-28a0-420c-9a4d-476db717ea41)]
[scriptable, uuid(1FBEC0F8-C7CF-4DC8-84BE-247985A65E07)]
interface nsIDOMHTMLParamElement : nsIDOMHTMLElement
{
attribute DOMString name;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(75825309-f449-451f-a252-c3ac83c857af)]
[scriptable, uuid(FDAF779F-BCCA-4653-91AE-CD4D23E4CC69)]
interface nsIDOMHTMLPreElement : nsIDOMHTMLElement
{
attribute long width;

Просмотреть файл

@ -47,7 +47,7 @@
* @status UNDER_DEVELOPMENT
*/
[scriptable, uuid(6312474b-9c6c-4eb4-8408-2a1754799e30)]
[scriptable, uuid(842AEE33-8381-4DA4-A347-9E70C797BC3E)]
interface nsIDOMHTMLProgressElement : nsIDOMHTMLElement
{
attribute double value;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(e6a8a758-079c-4411-a3e5-b9c47f3e92b1)]
[scriptable, uuid(38409533-9A85-4542-B734-BB2012966480)]
interface nsIDOMHTMLQuoteElement : nsIDOMHTMLElement
{
attribute DOMString cite;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(2a9a1a1b-d4cf-4594-a71c-f47ebd790f0d)]
[scriptable, uuid(E2F548F6-9955-4820-A9E6-3A9FD43C7111)]
interface nsIDOMHTMLScriptElement : nsIDOMHTMLElement
{
attribute DOMString src;

Просмотреть файл

@ -53,7 +53,7 @@
interface nsIDOMValidityState;
[scriptable, uuid(828961d4-cca1-4024-aaf1-dc0e0d1e6d98)]
[scriptable, uuid(2A50D295-8DB8-4223-AE0D-070C6EB6C76E)]
interface nsIDOMHTMLSelectElement : nsIDOMHTMLElement
{
attribute boolean autofocus;

Просмотреть файл

@ -48,7 +48,7 @@
* @status UNDER_DEVELOPMENT
*/
[scriptable, uuid(cff81c92-fefa-4d0f-8d07-a4d98fabb6b6)]
[scriptable, uuid(4BF58085-9986-47B5-BB03-62BAA0451497)]
interface nsIDOMHTMLSourceElement : nsIDOMHTMLElement
{
attribute DOMString src;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(6687fa89-8141-421c-bd76-70f9b89bccc9)]
[scriptable, uuid(830D9170-F8EB-4749-B721-16D60D6B0F1B)]
interface nsIDOMHTMLStyleElement : nsIDOMHTMLElement
{
attribute boolean disabled;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(77d7863a-1a8d-4c25-9b3a-33ef760c78e5)]
[scriptable, uuid(526C4DC4-25CD-46DE-A9B2-1501D624F7DF)]
interface nsIDOMHTMLTableCaptionElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(89cc7b76-0c34-42c1-93b8-1db28d54ce67)]
[scriptable, uuid(8434C7E8-5E4E-4AB5-9192-3F1C00815920)]
interface nsIDOMHTMLTableCellElement : nsIDOMHTMLElement
{
readonly attribute long cellIndex;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(f8656d47-dea5-4f00-bc63-a6a9c12e2a14)]
[scriptable, uuid(8F98865C-1600-4282-A553-838D87CC9F1F)]
interface nsIDOMHTMLTableColElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(f9710237-bd89-4411-a67a-cf972430e3cc)]
[scriptable, uuid(AE50DE74-BC26-402E-85DC-A980F506B655)]
interface nsIDOMHTMLTableElement : nsIDOMHTMLElement
{
// Modified in DOM Level 2:

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(365b26ba-b077-4a98-8a0f-9691ac6677f1)]
[scriptable, uuid(0AC4A382-4F97-4143-A3B3-DE0A54978C67)]
interface nsIDOMHTMLTableRowElement : nsIDOMHTMLElement
{
// Modified in DOM Level 2:

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(3c402173-8315-43ed-9e2c-130b159d7c8f)]
[scriptable, uuid(006D2482-0B89-401B-9A16-EDE4D9971F02)]
interface nsIDOMHTMLTableSectionElement : nsIDOMHTMLElement
{
attribute DOMString align;

Просмотреть файл

@ -53,7 +53,7 @@ interface nsIDOMValidityState;
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(81efc7a5-ea76-494c-a3ce-02556afba337)]
[scriptable, uuid(2A395065-2D92-48C1-AC00-643DE9CA681B)]
interface nsIDOMHTMLTextAreaElement : nsIDOMHTMLElement
{
attribute boolean autofocus;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(1c03280b-324b-4c83-bfdf-76738cdc70c1)]
[scriptable, uuid(DB0440CC-FB98-4FB0-84E8-6ADD4764A48F)]
interface nsIDOMHTMLTitleElement : nsIDOMHTMLElement
{
attribute DOMString text;

Просмотреть файл

@ -50,7 +50,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/
*/
[scriptable, uuid(dfe7d584-6330-44de-a46f-a0e9d55fa9f4)]
[scriptable, uuid(7DFD92D6-4DC3-4C52-8384-BA35E0AE4B8B)]
interface nsIDOMHTMLUListElement : nsIDOMHTMLElement
{
attribute boolean compact;

Просмотреть файл

@ -43,7 +43,7 @@
*
* @see <http://www.whatwg.org/html/#htmlunknownelement>
*/
[scriptable, uuid(d74ee527-8397-4a09-b161-f9bcb0382924)]
[scriptable, uuid(74ACC5C9-A18D-4AEC-AEFC-A719EF69499C)]
interface nsIDOMHTMLUnknownElement : nsIDOMHTMLElement
{
};

Просмотреть файл

@ -48,7 +48,7 @@
* @status UNDER_DEVELOPMENT
*/
[scriptable, uuid(9904233c-1345-440d-aa0f-1d3dd4457d83)]
[scriptable, uuid(E3763903-928B-47C4-AC3B-C47EB43884CA)]
interface nsIDOMHTMLVideoElement : nsIDOMHTMLMediaElement
{
attribute long width;

Просмотреть файл

@ -44,7 +44,7 @@
interface nsIDOMSVGAnimatedString;
[scriptable, uuid(bc060816-4cab-4552-af1f-39e15e6f4f59)]
[scriptable, uuid(DBC9B56C-3DE3-4475-A934-EE88D3BCB03C)]
interface nsIDOMSVGAElement
: nsIDOMSVGElement
/*

Просмотреть файл

@ -35,7 +35,7 @@
#include "nsIDOMSVGTextPositionElem.idl"
[scriptable, uuid(289aa3c3-9724-48a3-81cc-a0bc7c1f1fea)]
[scriptable, uuid(D7274F91-0FC7-42F1-AD56-3C58AF2B0113)]
interface nsIDOMSVGAltGlyphElement : nsIDOMSVGTextPositioningElement
/*
The SVG DOM makes use of multiple interface inheritance.

Просмотреть файл

@ -37,5 +37,5 @@
#include "nsIDOMSVGAnimationElement.idl"
[scriptable, uuid(a662ffce-086f-4c5b-886b-78acb654db10)]
[scriptable, uuid(11E98EA0-C8D2-4471-88B0-A3E6708021E4)]
interface nsIDOMSVGAnimateElement : nsIDOMSVGAnimationElement {};

Просмотреть файл

@ -37,5 +37,5 @@
#include "nsIDOMSVGAnimationElement.idl"
[scriptable, uuid(3d1d0c0d-9d5b-4e30-9fc8-97ec7e49ec18)]
[scriptable, uuid(964CDA18-C400-4D1E-B113-2000B4BF777E)]
interface nsIDOMSVGAnimateMotionElement : nsIDOMSVGAnimationElement { };

Просмотреть файл

@ -37,5 +37,5 @@
#include "nsIDOMSVGAnimationElement.idl"
[scriptable, uuid(1c7be1dc-a799-4837-865f-4c0bd1e51255)]
[scriptable, uuid(EF6A356E-AA64-49EB-931B-5D9EFC62FC97)]
interface nsIDOMSVGAnimateTransformElement : nsIDOMSVGAnimationElement {};

Просмотреть файл

@ -37,7 +37,7 @@
#include "nsIDOMSVGElement.idl"
[scriptable, uuid(2dfaf726-a479-4a9d-8e16-cd5d07696eea)]
[scriptable, uuid(26BF6187-A720-47AA-B453-DEFB98FF433C)]
interface nsIDOMSVGAnimationElement
: nsIDOMSVGElement
/*

Просмотреть файл

@ -40,7 +40,7 @@
interface nsIDOMSVGAnimatedLength;
[scriptable, uuid(79314559-4561-4259-9839-f9b8df90e050)]
[scriptable, uuid(150C9D2F-66D1-4EC4-A351-4F53534FA314)]
interface nsIDOMSVGCircleElement
: nsIDOMSVGElement
/*

Просмотреть файл

@ -47,7 +47,7 @@
interface nsIDOMSVGAnimatedEnumeration;
[scriptable, uuid(77909883-71d3-46a4-87df-baab182eea6c)]
[scriptable, uuid(5A4D77E5-D887-4050-A9F7-0D690AD35500)]
interface nsIDOMSVGClipPathElement
: nsIDOMSVGElement
/*

Просмотреть файл

@ -38,7 +38,7 @@
#include "nsIDOMSVGElement.idl"
[scriptable, uuid(50a7b30c-fbad-4f60-baca-a6e018e66a06)]
[scriptable, uuid(3F8D6B9C-CF03-45A6-B8A5-57ECBB7655DA)]
interface nsIDOMSVGDefsElement
: nsIDOMSVGElement
/*

Просмотреть файл

@ -38,7 +38,7 @@
#include "nsIDOMSVGElement.idl"
[scriptable, uuid(18c4a5f0-9f12-4f7a-bc14-91d575238a34)]
[scriptable, uuid(ED14BA6A-090D-4096-A225-08BD56678FE6)]
interface nsIDOMSVGDescElement
: nsIDOMSVGElement
/*

Просмотреть файл

@ -39,7 +39,7 @@
interface nsIDOMSVGSVGElement;
[scriptable, uuid(b3c5a715-ccee-48e4-8d2b-dcf7fa6ccb7c)]
[scriptable, uuid(4AEBF9E7-F275-4147-AA90-601626476132)]
interface nsIDOMSVGDocument : nsIDOMDocument
{
readonly attribute DOMString domain;

Просмотреть файл

@ -40,7 +40,7 @@
interface nsIDOMSVGSVGElement;
[scriptable, uuid(0eb0952f-05a9-44e8-ab48-66bed5641ebf)]
[scriptable, uuid(9B16734D-DBFD-4465-8EAF-354694934A1D)]
interface nsIDOMSVGElement : nsIDOMElement
{
attribute DOMString id;

Просмотреть файл

@ -40,7 +40,7 @@
interface nsIDOMSVGAnimatedLength;
[scriptable, uuid(a19b7c99-3b3f-4860-aa94-d66789afa021)]
[scriptable, uuid(C03C3C5F-7510-4392-BA7A-DADC0AB92E28)]
interface nsIDOMSVGEllipseElement
: nsIDOMSVGElement
/*

Просмотреть файл

@ -40,7 +40,7 @@ interface nsIDOMSVGAnimatedLength;
interface nsIDOMSVGAnimatedEnumeration;
interface nsIDOMSVGAnimatedInteger;
[scriptable, uuid(34bf1f97-ec77-48b4-9f3b-c61ef957ebf7)]
[scriptable, uuid(974C7633-0258-4BE7-B1AE-E0ED1964C87F)]
interface nsIDOMSVGFilterElement
: nsIDOMSVGElement
/*

Просмотреть файл

@ -45,7 +45,7 @@ interface nsIDOMSVGAnimatedNumberList;
interface nsIDOMSVGAnimatedInteger;
interface nsIDOMSVGAnimatedBoolean;
[scriptable, uuid(f96cedb9-568c-43d0-b07f-565d5116ae34)]
[scriptable, uuid(117CFA4C-B0EB-4C0F-A590-F77FBF42E76D)]
interface nsIDOMSVGFilterPrimitiveStandardAttributes : nsIDOMSVGElement
{
readonly attribute nsIDOMSVGAnimatedLength x;
@ -55,7 +55,7 @@ interface nsIDOMSVGFilterPrimitiveStandardAttributes : nsIDOMSVGElement
readonly attribute nsIDOMSVGAnimatedString result;
};
[scriptable, uuid(215023bc-e4d6-473d-b0fd-db96727b9e0d)]
[scriptable, uuid(02DB0A51-087B-4EA4-ABC4-3DCAB65BFE83)]
interface nsIDOMSVGFEBlendElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
const unsigned short SVG_MODE_UNKNOWN = 0;
@ -70,7 +70,7 @@ interface nsIDOMSVGFEBlendElement : nsIDOMSVGFilterPrimitiveStandardAttributes
readonly attribute nsIDOMSVGAnimatedEnumeration mode;
};
[scriptable, uuid(92205955-4d55-4097-9b93-b38d7e5a72e4)]
[scriptable, uuid(BB966D00-CF60-4696-9954-43525401E209)]
interface nsIDOMSVGFEColorMatrixElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
// Color Matrix Types
@ -85,13 +85,13 @@ interface nsIDOMSVGFEColorMatrixElement : nsIDOMSVGFilterPrimitiveStandardAttrib
readonly attribute nsIDOMSVGAnimatedNumberList values;
};
[scriptable, uuid(69612612-c893-4d2c-902d-5a4887ebfe0a)]
[scriptable, uuid(539000B3-2272-4F1A-BF24-23340DD408AF)]
interface nsIDOMSVGFEComponentTransferElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
readonly attribute nsIDOMSVGAnimatedString in1;
};
[scriptable, uuid(1b758c80-c6f2-4f57-a8cf-964c98c8d0f0)]
[scriptable, uuid(75FAB13E-9D34-4653-B992-BF7DF78BA379)]
interface nsIDOMSVGComponentTransferFunctionElement : nsIDOMSVGElement
{
// Component Transfer Types
@ -111,7 +111,7 @@ interface nsIDOMSVGComponentTransferFunctionElement : nsIDOMSVGElement
readonly attribute nsIDOMSVGAnimatedNumber offset;
};
[scriptable, uuid(71142479-68eb-44a3-9964-19faa09c4720)]
[scriptable, uuid(32887E8E-A5DE-4FBB-84F2-842743FEE02B)]
interface nsIDOMSVGFECompositeElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
// Operator Types
@ -135,27 +135,27 @@ interface nsIDOMSVGFECompositeElement : nsIDOMSVGFilterPrimitiveStandardAttribut
};
[scriptable, uuid(4f358571-3dcb-4ac5-990b-19e3fd355d43)]
[scriptable, uuid(B0FDBC88-ACE2-4EA1-A37B-A3D49A49C014)]
interface nsIDOMSVGFEFuncRElement : nsIDOMSVGComponentTransferFunctionElement
{
};
[scriptable, uuid(a2b6baf7-4f8a-4b3a-86e9-6e232ad25889)]
[scriptable, uuid(7F03F95A-5C78-4872-9CF6-856F66C76F8B)]
interface nsIDOMSVGFEFuncGElement : nsIDOMSVGComponentTransferFunctionElement
{
};
[scriptable, uuid(b6d6522d-6721-453b-99f9-a08349d84dd0)]
[scriptable, uuid(1AE3374C-1F60-4DD0-BC08-3B16FF9A63B0)]
interface nsIDOMSVGFEFuncBElement : nsIDOMSVGComponentTransferFunctionElement
{
};
[scriptable, uuid(70c084fc-d823-43b3-b4f1-476387b40079)]
[scriptable, uuid(EF68B840-E84F-45B6-89A6-B716D6A0BFEC)]
interface nsIDOMSVGFEFuncAElement : nsIDOMSVGComponentTransferFunctionElement
{
};
[scriptable, uuid(bd19cfb2-5259-4551-abf5-3f9a9967ccf0)]
[scriptable, uuid(32741F93-2AC4-4173-96AE-B1E65634C1EF)]
interface nsIDOMSVGFEGaussianBlurElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
readonly attribute nsIDOMSVGAnimatedString in1;
@ -165,35 +165,35 @@ interface nsIDOMSVGFEGaussianBlurElement : nsIDOMSVGFilterPrimitiveStandardAttri
void setStdDeviation ( in float stdDeviationX, in float stdDeviationY );
};
[scriptable, uuid(ebb57b0d-e198-4f10-b5a9-4ab5b0729c85)]
[scriptable, uuid(F698E5A2-DA0E-4D6F-9F45-C57D6464ECF1)]
interface nsIDOMSVGFEMergeElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
};
[scriptable, uuid(5b701f2f-b636-4bbb-8d2a-c74fa79b0280)]
[scriptable, uuid(517828DE-69F7-4FAB-915E-862E4F77493D)]
interface nsIDOMSVGFEMergeNodeElement : nsIDOMSVGElement {
readonly attribute nsIDOMSVGAnimatedString in1;
};
[scriptable, uuid(15746ca6-8b27-4cc1-bd84-3422d3aea18c)]
[scriptable, uuid(0BAE928A-92FE-4C5F-A8CB-DAED171FA6A2)]
interface nsIDOMSVGFEOffsetElement : nsIDOMSVGFilterPrimitiveStandardAttributes {
readonly attribute nsIDOMSVGAnimatedString in1;
readonly attribute nsIDOMSVGAnimatedNumber dx;
readonly attribute nsIDOMSVGAnimatedNumber dy;
};
[scriptable, uuid(436ca74a-eba8-4a50-8947-c180eb612a34)]
[scriptable, uuid(F1635489-F34F-4554-8284-C848500FE0DD)]
interface nsIDOMSVGFEFloodElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
};
[scriptable, uuid(4cf173d3-6b67-4e2c-8050-61412e6e9d7c)]
[scriptable, uuid(C587EFE9-0A22-44E6-9964-B68DA564804A)]
interface nsIDOMSVGFETileElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
readonly attribute nsIDOMSVGAnimatedString in1;
};
[scriptable, uuid(9235e6a7-ba2c-4a41-9e80-20735159014b)]
[scriptable, uuid(15BB448A-B589-4769-AA92-7C680A919F76)]
interface nsIDOMSVGFETurbulenceElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
// Turbulence Types
@ -213,7 +213,7 @@ interface nsIDOMSVGFETurbulenceElement : nsIDOMSVGFilterPrimitiveStandardAttribu
readonly attribute nsIDOMSVGAnimatedEnumeration type;
};
[scriptable, uuid(b994b0e3-cff1-4550-bfb2-f5de7679acb9)]
[scriptable, uuid(645DEF2E-C176-47CC-A2C4-C9CC49D0AFC8)]
interface nsIDOMSVGFEMorphologyElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
// Operator Types
@ -229,7 +229,7 @@ interface nsIDOMSVGFEMorphologyElement : nsIDOMSVGFilterPrimitiveStandardAttribu
void setRadius ( in float rx, in float ry );
};
[scriptable, uuid(b64766fa-c393-4985-a775-deedb5b07ed2)]
[scriptable, uuid(42A1FB88-DCD7-4211-9DD7-431460708D12)]
interface nsIDOMSVGFEConvolveMatrixElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
// Edge Mode Values
@ -252,7 +252,7 @@ interface nsIDOMSVGFEConvolveMatrixElement : nsIDOMSVGFilterPrimitiveStandardAtt
readonly attribute nsIDOMSVGAnimatedBoolean preserveAlpha;
};
[scriptable, uuid(47343967-4da5-4309-a3a4-c37ffab05b1f)]
[scriptable, uuid(43662657-4DA9-4B64-8891-033B08DBD11B)]
interface nsIDOMSVGFEDiffuseLightingElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
readonly attribute nsIDOMSVGAnimatedString in1;
@ -262,7 +262,7 @@ interface nsIDOMSVGFEDiffuseLightingElement : nsIDOMSVGFilterPrimitiveStandardA
readonly attribute nsIDOMSVGAnimatedNumber kernelUnitLengthY;
};
[scriptable, uuid(b647355f-1be8-40da-9c3b-05dce4c0eaa4)]
[scriptable, uuid(473A96B5-E644-4BAC-93B8-8C923F6568F7)]
interface nsIDOMSVGFESpecularLightingElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
readonly attribute nsIDOMSVGAnimatedString in1;
@ -273,20 +273,20 @@ interface nsIDOMSVGFESpecularLightingElement : nsIDOMSVGFilterPrimitiveStandardA
readonly attribute nsIDOMSVGAnimatedNumber kernelUnitLengthY;
};
[scriptable, uuid(1073827f-77e5-4096-81c5-6ebffefe258b)]
[scriptable, uuid(3C166FDD-A486-4089-9247-DEAC33001BD3)]
interface nsIDOMSVGFEDistantLightElement : nsIDOMSVGElement {
readonly attribute nsIDOMSVGAnimatedNumber azimuth;
readonly attribute nsIDOMSVGAnimatedNumber elevation;
};
[scriptable, uuid(d75d49ad-4265-4774-aa5c-02e4cdbfa2b1)]
[scriptable, uuid(88C14474-3B95-454C-A62E-7FBE05DBD4A9)]
interface nsIDOMSVGFEPointLightElement : nsIDOMSVGElement {
readonly attribute nsIDOMSVGAnimatedNumber x;
readonly attribute nsIDOMSVGAnimatedNumber y;
readonly attribute nsIDOMSVGAnimatedNumber z;
};
[scriptable, uuid(8cbaa2ea-159d-4b28-a963-8e42979eae84)]
[scriptable, uuid(CDF0A4CD-99A0-4B8D-9E17-9EA7513A34B9)]
interface nsIDOMSVGFESpotLightElement : nsIDOMSVGElement {
readonly attribute nsIDOMSVGAnimatedNumber x;
readonly attribute nsIDOMSVGAnimatedNumber y;
@ -298,7 +298,7 @@ interface nsIDOMSVGFESpotLightElement : nsIDOMSVGElement {
readonly attribute nsIDOMSVGAnimatedNumber limitingConeAngle;
};
[scriptable, uuid(f46d36a1-5ea5-4152-9d73-2dd967c3a709)]
[scriptable, uuid(6457A423-0686-486F-AB12-846B9542DFCF)]
interface nsIDOMSVGFEImageElement : nsIDOMSVGFilterPrimitiveStandardAttributes
/*
nsIDOMSVGURIReference,
@ -308,7 +308,7 @@ interface nsIDOMSVGFEImageElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
};
[scriptable, uuid(84db9e0e-ea0b-4906-8929-d97b4fd637c3)]
[scriptable, uuid(9B82CB0B-004D-4F26-BF3C-4E2BD4E1E82C)]
interface nsIDOMSVGFEDisplacementMapElement : nsIDOMSVGFilterPrimitiveStandardAttributes
{
// Channel Selectors

Просмотреть файл

@ -40,7 +40,7 @@
interface nsIDOMSVGAnimatedLength;
[scriptable, uuid(aa51c975-0450-4deb-9c15-a0b8c01ca4e2)]
[scriptable, uuid(4F9EB1B8-5949-4BD4-8843-35EFA8384929)]
interface nsIDOMSVGForeignObjectElement
: nsIDOMSVGElement
/*

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше