From 3fd551dbdf365088483639293a6585c3b379a0c9 Mon Sep 17 00:00:00 2001 From: Fabien Cazenave Date: Wed, 7 Sep 2011 13:34:58 -0400 Subject: [PATCH] Bug 462758 - elements with contenteditable=true and position:absolute can be moved around the page; r=ehsan --- .../libeditor/html/nsHTMLAnonymousUtils.cpp | 8 +++-- layout/base/crashtests/crashtests.list | 6 ++-- .../editor/462758-grabbers-resizers-ref.html | 34 +++++++++++++++++++ .../editor/462758-grabbers-resizers.html | 33 ++++++++++++++++++ layout/reftests/editor/reftest.list | 1 + 5 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 layout/reftests/editor/462758-grabbers-resizers-ref.html create mode 100644 layout/reftests/editor/462758-grabbers-resizers.html diff --git a/editor/libeditor/html/nsHTMLAnonymousUtils.cpp b/editor/libeditor/html/nsHTMLAnonymousUtils.cpp index 8fa94cd5353a..f7cf9761b0ac 100644 --- a/editor/libeditor/html/nsHTMLAnonymousUtils.cpp +++ b/editor/libeditor/html/nsHTMLAnonymousUtils.cpp @@ -368,9 +368,11 @@ nsHTMLEditor::CheckSelectionStateForAnonymousButtons(nsISelection * aSelection) } // now, let's display all contextual UI for good + nsIContent* hostContent = GetActiveEditingHost(); + nsCOMPtr hostNode = do_QueryInterface(hostContent); if (mIsObjectResizingEnabled && focusElement && - IsModifiableNode(focusElement)) { + IsModifiableNode(focusElement) && focusElement != hostNode) { if (nsEditProperty::img == focusTagAtom) mResizedObjectIsAnImage = PR_TRUE; if (mResizedObject) @@ -381,7 +383,7 @@ nsHTMLEditor::CheckSelectionStateForAnonymousButtons(nsISelection * aSelection) } if (mIsAbsolutelyPositioningEnabled && absPosElement && - IsModifiableNode(absPosElement)) { + IsModifiableNode(absPosElement) && absPosElement != hostNode) { if (mAbsolutelyPositionedObject) res = RefreshGrabber(); else @@ -390,7 +392,7 @@ nsHTMLEditor::CheckSelectionStateForAnonymousButtons(nsISelection * aSelection) } if (mIsInlineTableEditingEnabled && cellElement && - IsModifiableNode(cellElement)) { + IsModifiableNode(cellElement) && cellElement != hostNode) { if (mInlineEditedCell) res = RefreshInlineTableEditingUI(); else diff --git a/layout/base/crashtests/crashtests.list b/layout/base/crashtests/crashtests.list index bcf17aad7d39..54e3acc457d9 100644 --- a/layout/base/crashtests/crashtests.list +++ b/layout/base/crashtests/crashtests.list @@ -258,11 +258,9 @@ load 471594-1.xhtml load 479114-1.html load 477333-1.xhtml asserts-if(Android,6) load 477731-1.html -# 479360-1.xhtml will assert 6 times due to bug 439258 and then make the test -# after the test after it also assert 6 times. -asserts-if(!Android,6) load 479360-1.xhtml # Bug 439258 +load 479360-1.xhtml asserts-if(Android,6) load 480686-1.html -asserts-if(!Android,6) load 481806-1.html # Bug 439258 +load 481806-1.html load 483604-1.xhtml load 485501-1.html load 487544-1.html diff --git a/layout/reftests/editor/462758-grabbers-resizers-ref.html b/layout/reftests/editor/462758-grabbers-resizers-ref.html new file mode 100644 index 000000000000..5627cde74886 --- /dev/null +++ b/layout/reftests/editor/462758-grabbers-resizers-ref.html @@ -0,0 +1,34 @@ + + + + + + + +
+ this editable container should be neither draggable nor resizable. +
+ + + diff --git a/layout/reftests/editor/462758-grabbers-resizers.html b/layout/reftests/editor/462758-grabbers-resizers.html new file mode 100644 index 000000000000..66a8d84828fa --- /dev/null +++ b/layout/reftests/editor/462758-grabbers-resizers.html @@ -0,0 +1,33 @@ + + + + + + + +
+ this editable container should be neither draggable nor resizable. +
+ + diff --git a/layout/reftests/editor/reftest.list b/layout/reftests/editor/reftest.list index d0dfa6361775..cd9193024df7 100644 --- a/layout/reftests/editor/reftest.list +++ b/layout/reftests/editor/reftest.list @@ -68,3 +68,4 @@ fails-if(Android) != spellcheck-hyphen-multiple-invalid.html spellcheck-hyphen-m skip-if(Android) == 674212-spellcheck.html 674212-spellcheck-ref.html skip-if(Android) == 338427-2.html 338427-2-ref.html skip-if(Android) == 338427-3.html 338427-3-ref.html +== 462758-grabbers-resizers.html 462758-grabbers-resizers-ref.html