summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authoryaar@chromium.org <yaar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-22 23:30:26 +0000
committeryaar@chromium.org <yaar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-22 23:30:26 +0000
commit56cd2750cc06043a641db4aac177852491e6e019 (patch)
tree0d22f66aa6efcce70a1c1889191f9f627ca1face /webkit
parent51f8f2563ac66f10abad32ee93cd48eec1eb6ed5 (diff)
downloadchromium_src-56cd2750cc06043a641db4aac177852491e6e019.zip
chromium_src-56cd2750cc06043a641db4aac177852491e6e019.tar.gz
chromium_src-56cd2750cc06043a641db4aac177852491e6e019.tar.bz2
Moved castToHTMLXXXElement and getNameForInputElement to DOMUtilitiesPrivate.
Review URL: http://codereview.chromium.org/304013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29834 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r--webkit/api/src/DOMUtilitiesPrivate.cpp60
-rw-r--r--webkit/api/src/DOMUtilitiesPrivate.h24
-rw-r--r--webkit/glue/dom_operations.cc34
-rw-r--r--webkit/glue/dom_operations_private.h9
-rw-r--r--webkit/glue/editor_client_impl.cc10
-rw-r--r--webkit/glue/form_field_values.cc22
-rw-r--r--webkit/glue/form_field_values.h10
-rw-r--r--webkit/glue/webframe_impl.cc5
-rw-r--r--webkit/glue/webview_impl.cc2
9 files changed, 84 insertions, 92 deletions
diff --git a/webkit/api/src/DOMUtilitiesPrivate.cpp b/webkit/api/src/DOMUtilitiesPrivate.cpp
index 9bdab9a..89c7425 100644
--- a/webkit/api/src/DOMUtilitiesPrivate.cpp
+++ b/webkit/api/src/DOMUtilitiesPrivate.cpp
@@ -28,26 +28,68 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "config.h"
#include "DOMUtilitiesPrivate.h"
#include "Element.h"
#include "HTMLInputElement.h"
+#include "HTMLLinkElement.h"
+#include "HTMLMetaElement.h"
+#include "HTMLOptionElement.h"
#include "HTMLNames.h"
#include "Node.h"
+using namespace WebCore;
+
+namespace {
+
+template <class HTMLNodeType>
+HTMLNodeType* toHTMLElement(Node* node, const QualifiedName& name)
+{
+ if (node->isHTMLElement()
+ && static_cast<HTMLElement*>(node)->hasTagName(name)) {
+ return static_cast<HTMLNodeType*>(node);
+ }
+ return 0;
+}
+
+} // namespace
+
namespace WebKit {
-WebCore::HTMLInputElement* elementToHTMLInputElement(
- WebCore::Element* element) {
- if (!element->hasLocalName(WebCore::HTMLNames::inputTag))
- return NULL;
- return static_cast<WebCore::HTMLInputElement*>(element);
+HTMLInputElement* toHTMLInputElement(Node* node)
+{
+ return toHTMLElement<HTMLInputElement>(node, HTMLNames::inputTag);
+}
+
+HTMLLinkElement* toHTMLLinkElement(Node* node)
+{
+ return toHTMLElement<HTMLLinkElement>(node, HTMLNames::linkTag);
}
-WebCore::HTMLInputElement* nodeToHTMLInputElement(WebCore::Node* node) {
- if (node->nodeType() != WebCore::Node::ELEMENT_NODE)
- return NULL;
- return elementToHTMLInputElement(static_cast<WebCore::Element*>(node));
+HTMLMetaElement* toHTMLMetaElement(Node* node)
+{
+ return toHTMLElement<HTMLMetaElement>(node, HTMLNames::metaTag);
+}
+
+HTMLOptionElement* toHTMLOptionElement(Node* node)
+{
+ return toHTMLElement<HTMLOptionElement>(node, HTMLNames::optionTag);
+}
+
+String nameOfInputElement(HTMLInputElement* element)
+{
+ String name = element->name();
+ String trimmedName = name.stripWhiteSpace();
+ if (!trimmedName.isEmpty())
+ return trimmedName;
+
+ name = element->getAttribute(HTMLNames::idAttr);
+ trimmedName = name.stripWhiteSpace();
+ if (!trimmedName.isEmpty())
+ return trimmedName;
+
+ return String();
}
} // namespace WebKit
diff --git a/webkit/api/src/DOMUtilitiesPrivate.h b/webkit/api/src/DOMUtilitiesPrivate.h
index 971439f9..b402ce0 100644
--- a/webkit/api/src/DOMUtilitiesPrivate.h
+++ b/webkit/api/src/DOMUtilitiesPrivate.h
@@ -28,22 +28,32 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef DOMUtilities_h
-#define DOMUtilities_h
+#ifndef DOMUtilitiesPrivate_h
+#define DOMUtilitiesPrivate_h
namespace WebCore {
-class Element;
class HTMLInputElement;
+class HTMLLinkElement;
+class HTMLMetaElement;
+class HTMLOptionElement;
class Node;
+class String;
}
// This file is an aggregate of useful WebCore operations.
namespace WebKit {
-// Returns the passed element/node casted to an HTMLInputElement if it is one,
-// NULL if it is not an HTMLInputElement.
-WebCore::HTMLInputElement* elementToHTMLInputElement(WebCore::Element* element);
-WebCore::HTMLInputElement* nodeToHTMLInputElement(WebCore::Node* node);
+// If node is an HTML node with a tag name of name it is casted and returned.
+// If node is not an HTML node or the tag name is not name NULL is returned.
+WebCore::HTMLInputElement* toHTMLInputElement(WebCore::Node* node);
+WebCore::HTMLLinkElement* toHTMLLinkElement(WebCore::Node* node);
+WebCore::HTMLMetaElement* toHTMLMetaElement(WebCore::Node* node);
+WebCore::HTMLOptionElement* toHTMLOptionElement(WebCore::Node* node);
+
+// Returns the name that should be used for the specified |element| when
+// storing autofill data. This is either the field name or its id, an empty
+// string if it has no name and no id.
+WebCore::String nameOfInputElement(WebCore::HTMLInputElement* element);
} // namespace WebKit
diff --git a/webkit/glue/dom_operations.cc b/webkit/glue/dom_operations.cc
index 60c4199..1537e5c 100644
--- a/webkit/glue/dom_operations.cc
+++ b/webkit/glue/dom_operations.cc
@@ -165,16 +165,6 @@ void GetAllSavableResourceLinksForFrame(WebFrameImpl* current_frame,
}
}
-template <class HTMLNodeType>
-HTMLNodeType* CastHTMLElement(WebCore::Node* node,
- const WebCore::QualifiedName& name) {
- if (node->isHTMLElement() &&
- static_cast<typename WebCore::HTMLElement*>(node)->hasTagName(name)) {
- return static_cast<HTMLNodeType*>(node);
- }
- return NULL;
-}
-
} // namespace
namespace webkit_glue {
@@ -255,7 +245,7 @@ static bool FindFormInputElements(WebCore::HTMLFormElement* fe,
// matching elements it can get at them through the FormElement*.
// Note: This assignment adds a reference to the InputElement.
result->input_elements[data.elements[j]] =
- WebKit::nodeToHTMLInputElement(temp_elements[0].get());
+ WebKit::toHTMLInputElement(temp_elements[0].get());
DCHECK(result->input_elements[data.elements[j]].get());
}
return true;
@@ -368,21 +358,6 @@ void FillPasswordForm(WebView* view,
}
}
-WebCore::HTMLLinkElement* CastToHTMLLinkElement(WebCore::Node* node) {
- return CastHTMLElement<WebCore::HTMLLinkElement>(node,
- WebCore::HTMLNames::linkTag);
-}
-
-WebCore::HTMLMetaElement* CastToHTMLMetaElement(WebCore::Node* node) {
- return CastHTMLElement<WebCore::HTMLMetaElement>(node,
- WebCore::HTMLNames::metaTag);
-}
-
-WebCore::HTMLOptionElement* CastToHTMLOptionElement(WebCore::Node* node) {
- return CastHTMLElement<WebCore::HTMLOptionElement>(node,
- WebCore::HTMLNames::optionTag);
-}
-
WebFrameImpl* GetWebFrameImplFromElement(WebCore::Element* element,
bool* is_frame_element) {
*is_frame_element = false;
@@ -682,15 +657,12 @@ void GetApplicationInfo(WebView* view, WebApplicationInfo* app_info) {
WTF::PassRefPtr<WebCore::HTMLCollection> children = head->children();
for (unsigned i = 0; i < children->length(); ++i) {
WebCore::Node* child = children->item(i);
- WebCore::HTMLLinkElement* link = CastHTMLElement<WebCore::HTMLLinkElement>(
- child, WebCore::HTMLNames::linkTag);
+ WebCore::HTMLLinkElement* link = WebKit::toHTMLLinkElement(child);
if (link) {
if (link->isIcon())
AddInstallIcon(link, &app_info->icons);
} else {
- WebCore::HTMLMetaElement* meta =
- CastHTMLElement<WebCore::HTMLMetaElement>(
- child, WebCore::HTMLNames::metaTag);
+ WebCore::HTMLMetaElement* meta = WebKit::toHTMLMetaElement(child);
if (meta) {
if (meta->name() == String("application-name")) {
app_info->title = webkit_glue::StringToString16(meta->content());
diff --git a/webkit/glue/dom_operations_private.h b/webkit/glue/dom_operations_private.h
index f8ca7a6..69676f4 100644
--- a/webkit/glue/dom_operations_private.h
+++ b/webkit/glue/dom_operations_private.h
@@ -9,9 +9,6 @@ namespace WebCore {
class AtomicString;
class Document;
class Element;
-class HTMLLinkElement;
-class HTMLMetaElement;
-class HTMLOptionElement;
class Node;
class QualifiedName;
class String;
@@ -26,12 +23,6 @@ class WebFrameImpl;
namespace webkit_glue {
-// If node is an HTML node with a tag name of name it is casted and returned.
-// If node is not an HTML node or the tag name is not name NULL is returned.
-WebCore::HTMLLinkElement* CastToHTMLLinkElement(WebCore::Node* node);
-WebCore::HTMLMetaElement* CastToHTMLMetaElement(WebCore::Node* node);
-WebCore::HTMLOptionElement* CastToHTMLOptionElement(WebCore::Node* node);
-
// If element is HTML:IFrame or HTML:Frame, then return the WebFrameImpl
// object corresponding to the content frame, otherwise return NULL.
// The parameter is_frame_element indicates whether the input element
diff --git a/webkit/glue/editor_client_impl.cc b/webkit/glue/editor_client_impl.cc
index 683aa65..a09c9c8 100644
--- a/webkit/glue/editor_client_impl.cc
+++ b/webkit/glue/editor_client_impl.cc
@@ -661,7 +661,7 @@ void EditorClientImpl::textFieldDidEndEditing(WebCore::Element* element) {
// Notify any password-listener of the focus change.
WebCore::HTMLInputElement* input_element =
- WebKit::elementToHTMLInputElement(element);
+ WebKit::toHTMLInputElement(element);
if (!input_element)
return;
@@ -685,7 +685,7 @@ void EditorClientImpl::textDidChangeInTextField(WebCore::Element* element) {
bool EditorClientImpl::ShowFormAutofillForNode(WebCore::Node* node) {
WebCore::HTMLInputElement* input_element =
- WebKit::nodeToHTMLInputElement(node);
+ WebKit::toHTMLInputElement(node);
if (input_element)
return Autofill(input_element, true, true, false);
return false;
@@ -705,7 +705,8 @@ bool EditorClientImpl::Autofill(WebCore::HTMLInputElement* input_element,
return false;
}
- string16 name = FormFieldValues::GetNameForInputElement(input_element);
+ string16 name = webkit_glue::StringToString16(
+ WebKit::nameOfInputElement(input_element));
if (name.empty()) // If the field has no name, then we won't have values.
return false;
@@ -765,7 +766,8 @@ void EditorClientImpl::DoAutofill(WebCore::Timer<EditorClientImpl>* timer) {
}
// Then trigger form autofill.
- string16 name = FormFieldValues::GetNameForInputElement(input_element);
+ string16 name = webkit_glue::StringToString16(
+ WebKit::nameOfInputElement(input_element));
ASSERT(static_cast<int>(name.length()) > 0);
if (webview_->client()) {
diff --git a/webkit/glue/form_field_values.cc b/webkit/glue/form_field_values.cc
index 97ce119..3a57fad 100644
--- a/webkit/glue/form_field_values.cc
+++ b/webkit/glue/form_field_values.cc
@@ -15,6 +15,8 @@
#include "base/string_util.h"
#include "webkit/api/public/WebForm.h"
#include "webkit/glue/form_field_values.h"
+// Can include from api/src because this file will eventually be there too.
+#include "webkit/api/src/DOMUtilitiesPrivate.h"
#include "webkit/glue/glue_util.h"
using WebKit::WebForm;
@@ -62,7 +64,8 @@ FormFieldValues* FormFieldValues::Create(const WebForm& webform) {
if (value.length() == 0)
continue;
- string16 name = GetNameForInputElement(input_element);
+ string16 name = StringToString16(
+ WebKit::nameOfInputElement(input_element));
if (name.length() == 0)
continue; // If we have no name, there is nothing to store.
@@ -72,21 +75,4 @@ FormFieldValues* FormFieldValues::Create(const WebForm& webform) {
return result;
}
-// static
-string16 FormFieldValues::GetNameForInputElement(WebCore::HTMLInputElement*
- element) {
- string16 name = StringToString16(element->name());
- string16 trimmed_name;
- TrimWhitespace(name, TRIM_LEADING, &trimmed_name);
- if (trimmed_name.length() > 0)
- return trimmed_name;
-
- name = StringToString16(element->getAttribute(WebCore::HTMLNames::idAttr));
- TrimWhitespace(name, TRIM_LEADING, &trimmed_name);
- if (trimmed_name.length() > 0)
- return trimmed_name;
-
- return string16();
-}
-
} // namespace webkit_glue
diff --git a/webkit/glue/form_field_values.h b/webkit/glue/form_field_values.h
index 6f50304..7b7ee69 100644
--- a/webkit/glue/form_field_values.h
+++ b/webkit/glue/form_field_values.h
@@ -8,10 +8,6 @@
#include <string>
#include <vector>
-namespace WebCore {
-class HTMLInputElement;
-}
-
namespace WebKit {
class WebForm;
}
@@ -35,12 +31,6 @@ class FormFieldValues {
static FormFieldValues* Create(const WebKit::WebForm& form);
- // Returns the name that should be used for the specified |element| when
- // storing autofill data. This is either the field name or its id, an empty
- // string if it has no name and no id.
- static string16 GetNameForInputElement(WebCore::HTMLInputElement*
- element);
-
// A vector of all the input fields in the form.
std::vector<Element> elements;
};
diff --git a/webkit/glue/webframe_impl.cc b/webkit/glue/webframe_impl.cc
index 08b7281..e3a0fd5 100644
--- a/webkit/glue/webframe_impl.cc
+++ b/webkit/glue/webframe_impl.cc
@@ -141,10 +141,9 @@
#include "webkit/api/public/WebSize.h"
#include "webkit/api/public/WebURLError.h"
#include "webkit/api/public/WebVector.h"
+#include "webkit/api/src/DOMUtilitiesPrivate.h"
#include "webkit/api/src/WebDataSourceImpl.h"
#include "webkit/glue/chrome_client_impl.h"
-#include "webkit/glue/dom_operations.h"
-#include "webkit/glue/dom_operations_private.h"
#include "webkit/glue/glue_util.h"
#include "webkit/glue/password_autocomplete_listener.h"
#include "webkit/glue/webframe_impl.h"
@@ -399,7 +398,7 @@ WebURL WebFrameImpl::openSearchDescriptionURL() const {
for (Node* child = children->firstItem(); child != NULL;
child = children->nextItem()) {
WebCore::HTMLLinkElement* link_element =
- webkit_glue::CastToHTMLLinkElement(child);
+ WebKit::toHTMLLinkElement(child);
if (link_element && link_element->type() == kOSDType &&
link_element->rel() == kOSDRel && !link_element->href().isEmpty()) {
return webkit_glue::KURLToWebURL(link_element->href());
diff --git a/webkit/glue/webview_impl.cc b/webkit/glue/webview_impl.cc
index 373d67b..c479af1 100644
--- a/webkit/glue/webview_impl.cc
+++ b/webkit/glue/webview_impl.cc
@@ -476,7 +476,7 @@ void WebViewImpl::MouseDown(const WebMouseEvent& event) {
if (event.button == WebMouseEvent::ButtonLeft) {
RefPtr<Node> focused_node = GetFocusedNode();
if (focused_node.get() &&
- WebKit::nodeToHTMLInputElement(focused_node.get())) {
+ WebKit::toHTMLInputElement(focused_node.get())) {
IntPoint point(event.x, event.y);
point = page_->mainFrame()->view()->windowToContents(point);
HitTestResult result(point);