diff options
Diffstat (limited to 'webkit/glue/dom_operations.cc')
-rw-r--r-- | webkit/glue/dom_operations.cc | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/webkit/glue/dom_operations.cc b/webkit/glue/dom_operations.cc index fe039a7..9e15d8a 100644 --- a/webkit/glue/dom_operations.cc +++ b/webkit/glue/dom_operations.cc @@ -21,6 +21,7 @@ MSVC_PUSH_WARNING_LEVEL(0); #include "HTMLInputElement.h" #include "HTMLLinkElement.h" #include "HTMLMetaElement.h" +#include "HTMLOptionElement.h" #include "HTMLNames.h" #include "KURL.h" MSVC_POP_WARNING(); @@ -30,9 +31,8 @@ MSVC_POP_WARNING(); // first. #include "webkit/glue/autocomplete_input_listener.h" -#include "webkit/glue/dom_operations.h" - #include "base/string_util.h" +#include "webkit/glue/dom_operations.h" #include "webkit/glue/form_data.h" #include "webkit/glue/glue_util.h" #include "webkit/glue/password_autocomplete_listener.h" @@ -152,6 +152,16 @@ 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 { @@ -443,6 +453,21 @@ 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; |