Index: Source/core/editing/FrameSelection.cpp |
diff --git a/Source/core/editing/FrameSelection.cpp b/Source/core/editing/FrameSelection.cpp |
index 77a295c7d2423a06a3e7851519220749898cd9db..0c6083da2dbe8c3e0c54be10ef36358e84826cc6 100644 |
--- a/Source/core/editing/FrameSelection.cpp |
+++ b/Source/core/editing/FrameSelection.cpp |
@@ -47,6 +47,7 @@ |
#include "core/editing/htmlediting.h" |
#include "core/frame/DOMWindow.h" |
#include "core/frame/LocalFrame.h" |
+#include "core/html/HTMLBodyElement.h" |
#include "core/html/HTMLFormElement.h" |
#include "core/html/HTMLFrameElementBase.h" |
#include "core/html/HTMLInputElement.h" |
@@ -1361,7 +1362,7 @@ void FrameSelection::selectAll() |
{ |
Document* document = m_frame->document(); |
- if (document->focusedElement() && document->focusedElement()->hasTagName(selectTag)) { |
+ if (isHTMLSelectElement(document->focusedElement())) { |
HTMLSelectElement* selectElement = toHTMLSelectElement(document->focusedElement()); |
if (selectElement->canSelectAll()) { |
selectElement->selectAll(); |
@@ -1437,7 +1438,7 @@ PassRefPtr<Range> FrameSelection::firstRange() const |
bool FrameSelection::isInPasswordField() const |
{ |
HTMLTextFormControlElement* textControl = enclosingTextFormControl(start()); |
- return textControl && textControl->hasTagName(inputTag) && toHTMLInputElement(textControl)->isPasswordField(); |
+ return isHTMLInputElement(textControl) && toHTMLInputElement(textControl)->isPasswordField(); |
} |
void FrameSelection::notifyAccessibilityForSelectionChange() |
@@ -1724,17 +1725,16 @@ static HTMLFormElement* scanForForm(Node* start) |
{ |
if (!start) |
return 0; |
- Element* element = start->isElementNode() ? toElement(start) : ElementTraversal::next(*start); |
- for (; element; element = ElementTraversal::next(*element)) { |
- if (element->hasTagName(formTag)) |
+ HTMLElement* element = start->isHTMLElement() ? toHTMLElement(start) : Traversal<HTMLElement>::next(*start); |
+ for (; element; element = Traversal<HTMLElement>::next(*element)) { |
+ if (isHTMLFormElement(*element)) |
return toHTMLFormElement(element); |
- if (element->isHTMLElement()) { |
- HTMLFormElement* owner = toHTMLElement(element)->formOwner(); |
- if (owner) |
+ |
+ if (HTMLFormElement* owner = element->formOwner()) |
return owner; |
- } |
- if (element->hasTagName(frameTag) || element->hasTagName(iframeTag)) { |
- Node* childDocument = toHTMLFrameElementBase(element)->contentDocument(); |
+ |
+ if (isHTMLFrameElement(*element) || isHTMLIFrameElement(*element)) { |
+ Node* childDocument = toHTMLFrameElementBase(*element).contentDocument(); |
if (HTMLFormElement* frameResult = scanForForm(childDocument)) |
return frameResult; |
} |
@@ -1753,7 +1753,7 @@ HTMLFormElement* FrameSelection::currentForm() const |
// Try walking up the node tree to find a form element. |
Node* node; |
for (node = start; node; node = node->parentNode()) { |
- if (node->hasTagName(formTag)) |
+ if (isHTMLFormElement(*node)) |
return toHTMLFormElement(node); |
if (node->isHTMLElement()) { |
HTMLFormElement* owner = toHTMLElement(node)->formOwner(); |
@@ -1803,10 +1803,11 @@ void FrameSelection::setSelectionFromNone() |
return; |
Node* node = document->documentElement(); |
- while (node && !node->hasTagName(bodyTag)) |
- node = NodeTraversal::next(*node); |
- if (node) |
- setSelection(VisibleSelection(firstPositionInOrBeforeNode(node), DOWNSTREAM)); |
+ if (!node) |
+ return; |
+ Node* body = isHTMLBodyElement(*node) ? node : Traversal<HTMLBodyElement>::next(*node); |
+ if (body) |
+ setSelection(VisibleSelection(firstPositionInOrBeforeNode(body), DOWNSTREAM)); |
} |
bool FrameSelection::dispatchSelectStart() |