Bug 795610 - Part c: Prepare HTMLElement.draggable for WebIDL bindings; r=mounir

This commit is contained in:
Ms2ger 2012-10-06 09:19:52 +02:00
parent 93441dfdf1
commit 44a7b29613
11 changed files with 43 additions and 81 deletions

View File

@ -1656,22 +1656,6 @@ nsGenericHTMLElement::SetSpellcheck(bool aSpellcheck)
return SetAttrHelper(nsGkAtoms::spellcheck, NS_LITERAL_STRING("false"));
}
NS_IMETHODIMP
nsGenericHTMLElement::GetDraggable(bool* aDraggable)
{
*aDraggable = AttrValueIs(kNameSpaceID_None, nsGkAtoms::draggable,
nsGkAtoms::_true, eIgnoreCase);
return NS_OK;
}
NS_IMETHODIMP
nsGenericHTMLElement::SetDraggable(bool aDraggable)
{
return SetAttrHelper(nsGkAtoms::draggable,
aDraggable ? NS_LITERAL_STRING("true")
: NS_LITERAL_STRING("false"));
}
bool
nsGenericHTMLElement::InNavQuirksMode(nsIDocument* aDoc)
{

View File

@ -93,6 +93,17 @@ public:
{
aError = SetIntAttr(nsGkAtoms::tabindex, aTabIndex);
}
virtual bool Draggable() const
{
return AttrValueIs(kNameSpaceID_None, nsGkAtoms::draggable,
nsGkAtoms::_true, eIgnoreCase);
}
void SetDraggable(bool aDraggable, mozilla::ErrorResult& aError)
{
aError = SetAttrHelper(nsGkAtoms::draggable,
aDraggable ? NS_LITERAL_STRING("true")
: NS_LITERAL_STRING("false"));
}
// nsIDOMHTMLElement methods. Note that these are non-virtual
// methods, implementations are expected to forward calls to these
@ -119,6 +130,17 @@ public:
SetTabIndex(aTabIndex, rv);
return rv.ErrorCode();
}
nsresult GetDraggable(bool* aDraggable)
{
*aDraggable = Draggable();
return NS_OK;
}
nsresult SetDraggable(bool aDraggable)
{
mozilla::ErrorResult rv;
SetDraggable(aDraggable, rv);
return rv.ErrorCode();
}
nsresult GetOffsetTop(int32_t* aOffsetTop);
nsresult GetOffsetLeft(int32_t* aOffsetLeft);
@ -132,9 +154,9 @@ public:
NS_IMETHOD InsertAdjacentHTML(const nsAString& aPosition,
const nsAString& aText);
nsresult ScrollIntoView(bool aTop, uint8_t optional_argc);
// Declare Focus(), Blur(), GetHidden(), SetHidden(), GetSpellcheck(),
// SetSpellcheck(), and GetDraggable() such that classes that inherit
// interfaces with those methods properly override them.
// Declare Focus(), Blur(), GetHidden(), SetHidden(), GetSpellcheck(), and
// SetSpellcheck() such that classes that inherit interfaces with those
// methods properly override them.
NS_IMETHOD Focus();
NS_IMETHOD Blur();
NS_IMETHOD Click();
@ -142,8 +164,6 @@ public:
NS_IMETHOD SetHidden(bool aHidden);
NS_IMETHOD GetSpellcheck(bool* aSpellcheck);
NS_IMETHOD SetSpellcheck(bool aSpellcheck);
NS_IMETHOD GetDraggable(bool* aDraggable);
NS_IMETHOD SetDraggable(bool aDraggable);
NS_IMETHOD GetItemScope(bool* aItemScope);
NS_IMETHOD SetItemScope(bool aItemScope);
NS_IMETHOD GetItemValue(nsIVariant** aValue);
@ -1378,7 +1398,6 @@ protected:
* This macro doesn't forward
* - Click
* - Focus
* - GetDraggable
* - GetInnerHTML
* - SetInnerHTML
* because sometimes elements want to override them.
@ -1480,6 +1499,9 @@ protected:
NS_IMETHOD GetAccessKeyLabel(nsAString& aAccessKeyLabel) { \
return _to GetAccessKeyLabel(aAccessKeyLabel); \
} \
NS_IMETHOD GetDraggable(bool* aDraggable) { \
return _to GetDraggable(aDraggable); \
} \
NS_IMETHOD SetDraggable(bool aDraggable) { \
return _to SetDraggable(aDraggable); \
} \

View File

@ -41,21 +41,9 @@ public:
NS_FORWARD_NSIDOMELEMENT(nsGenericHTMLElement::)
// nsIDOMHTMLElement
NS_FORWARD_NSIDOMHTMLELEMENT_BASIC(nsGenericHTMLElement::)
NS_IMETHOD Click() {
return nsGenericHTMLElement::Click();
}
NS_IMETHOD Focus() {
return nsGenericHTMLElement::Focus();
}
NS_IMETHOD GetDraggable(bool* aDraggable);
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) {
return nsGenericHTMLElement::GetInnerHTML(aInnerHTML);
}
NS_IMETHOD SetInnerHTML(const nsAString& aInnerHTML) {
return nsGenericHTMLElement::SetInnerHTML(aInnerHTML);
}
NS_FORWARD_NSIDOMHTMLELEMENT(nsGenericHTMLElement::)
virtual int32_t TabIndexDefault() MOZ_OVERRIDE;
virtual bool Draggable() const MOZ_OVERRIDE;
// nsIDOMHTMLAnchorElement
NS_DECL_NSIDOMHTMLANCHORELEMENT
@ -190,19 +178,18 @@ nsHTMLAnchorElement::SetItemValueText(const nsAString& aValue)
SetHref(aValue);
}
NS_IMETHODIMP
nsHTMLAnchorElement::GetDraggable(bool* aDraggable)
bool
nsHTMLAnchorElement::Draggable() const
{
// links can be dragged as long as there is an href and the
// draggable attribute isn't false
if (HasAttr(kNameSpaceID_None, nsGkAtoms::href)) {
*aDraggable = !AttrValueIs(kNameSpaceID_None, nsGkAtoms::draggable,
nsGkAtoms::_false, eIgnoreCase);
return NS_OK;
if (!HasAttr(kNameSpaceID_None, nsGkAtoms::href)) {
// no href, so just use the same behavior as other elements
return nsGenericHTMLElement::Draggable();
}
// no href, so just use the same behavior as other elements
return nsGenericHTMLElement::GetDraggable(aDraggable);
return !AttrValueIs(kNameSpaceID_None, nsGkAtoms::draggable,
nsGkAtoms::_false, eIgnoreCase);
}
void

View File

@ -34,9 +34,6 @@ public:
NS_IMETHOD Focus() {
return nsGenericHTMLElement::Focus();
}
NS_IMETHOD GetDraggable(bool* aDraggable) {
return nsGenericHTMLElement::GetDraggable(aDraggable);
}
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML);
NS_IMETHOD SetInnerHTML(const nsAString& aInnerHTML) {
return nsGenericHTMLElement::SetInnerHTML(aInnerHTML);

View File

@ -132,13 +132,12 @@ nsHTMLImageElement::SetItemValueText(const nsAString& aValue)
// just a string attr purposes of the DOM crossOrigin property.
NS_IMPL_STRING_ATTR(nsHTMLImageElement, CrossOrigin, crossorigin)
NS_IMETHODIMP
nsHTMLImageElement::GetDraggable(bool* aDraggable)
bool
nsHTMLImageElement::Draggable() const
{
// images may be dragged unless the draggable attribute is false
*aDraggable = !AttrValueIs(kNameSpaceID_None, nsGkAtoms::draggable,
nsGkAtoms::_false, eIgnoreCase);
return NS_OK;
return !AttrValueIs(kNameSpaceID_None, nsGkAtoms::draggable,
nsGkAtoms::_false, eIgnoreCase);
}
NS_IMETHODIMP

View File

@ -30,20 +30,8 @@ public:
NS_FORWARD_NSIDOMELEMENT(nsGenericHTMLElement::)
// nsIDOMHTMLElement
NS_FORWARD_NSIDOMHTMLELEMENT_BASIC(nsGenericHTMLElement::)
NS_IMETHOD Click() {
return nsGenericHTMLElement::Click();
}
NS_IMETHOD Focus() {
return nsGenericHTMLElement::Focus();
}
NS_IMETHOD GetDraggable(bool* aDraggable);
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) {
return nsGenericHTMLElement::GetInnerHTML(aInnerHTML);
}
NS_IMETHOD SetInnerHTML(const nsAString& aInnerHTML) {
return nsGenericHTMLElement::SetInnerHTML(aInnerHTML);
}
NS_FORWARD_NSIDOMHTMLELEMENT(nsGenericHTMLElement::)
virtual bool Draggable() const MOZ_OVERRIDE;
// nsIDOMHTMLImageElement
NS_DECL_NSIDOMHTMLIMAGEELEMENT

View File

@ -78,9 +78,6 @@ public:
NS_FORWARD_NSIDOMHTMLELEMENT_BASIC(nsGenericHTMLFormElement::)
NS_IMETHOD Click();
NS_IMETHOD Focus();
NS_IMETHOD GetDraggable(bool* aDraggable) {
return nsGenericHTMLFormElement::GetDraggable(aDraggable);
}
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) {
return nsGenericHTMLFormElement::GetInnerHTML(aInnerHTML);
}

View File

@ -46,9 +46,6 @@ public:
return nsGenericHTMLFormElement::Click();
}
NS_IMETHOD Focus();
NS_IMETHOD GetDraggable(bool* aDraggable) {
return nsGenericHTMLFormElement::GetDraggable(aDraggable);
}
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) {
return nsGenericHTMLFormElement::GetInnerHTML(aInnerHTML);
}

View File

@ -41,9 +41,6 @@ public:
return nsGenericHTMLElement::Click();
}
NS_IMETHOD Focus();
NS_IMETHOD GetDraggable(bool* aDraggable) {
return nsGenericHTMLElement::GetDraggable(aDraggable);
}
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) {
return nsGenericHTMLElement::GetInnerHTML(aInnerHTML);
}

View File

@ -56,9 +56,6 @@ public:
NS_IMETHOD Focus() {
return nsGenericHTMLElement::Focus();
}
NS_IMETHOD GetDraggable(bool* aDraggable) {
return nsGenericHTMLElement::GetDraggable(aDraggable);
}
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML);
NS_IMETHOD SetInnerHTML(const nsAString& aInnerHTML);

View File

@ -44,9 +44,6 @@ public:
NS_IMETHOD Focus() {
return nsGenericHTMLElement::Focus();
}
NS_IMETHOD GetDraggable(bool* aDraggable) {
return nsGenericHTMLElement::GetDraggable(aDraggable);
}
NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML);
NS_IMETHOD SetInnerHTML(const nsAString& aInnerHTML);