2009-11-19 Yaar Schnitman <yaar@chromium.org>
authoreric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Nov 2009 01:09:49 +0000 (01:09 +0000)
committereric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 20 Nov 2009 01:09:49 +0000 (01:09 +0000)
        Reviewed by Darin Fisher.

        Make chromium/webkit/glue/FormFieldValues use the WebKit API

        https://bugs.webkit.org/show_bug.cgi?id=31650

        * public/WebElement.h:
        * public/WebFormElement.h:
        * public/WebInputElement.h:
        (WebKit::WebInputElement::):
        * public/WebNode.h:
        * src/AssertMatchingEnums.cpp:
        * src/DOMUtilitiesPrivate.cpp:
        (WebKit::nameOfInputElement):
        * src/DOMUtilitiesPrivate.h:
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::autofill):
        (WebKit::EditorClientImpl::doAutofill):
        * src/WebFormElement.cpp:
        (WebKit::WebFormElement::name):
        (WebKit::WebFormElement::method):
        (WebKit::WebFormElement::getNamedElements):
        (WebKit::WebFormElement::getInputElements):
        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::isEnabledFormControl):
        (WebKit::WebInputElement::inputType):
        (WebKit::WebInputElement::formControlType):
        (WebKit::WebInputElement::value):
        (WebKit::WebInputElement::dispatchFormControlChangeEvent):
        (WebKit::WebInputElement::setSelectionRange):
        (WebKit::WebInputElement::name):
        (WebKit::WebInputElement::nameForAutofill):
        * src/WebNode.cpp:
        (WebKit::WebNode::frame):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@51224 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 files changed:
WebKit/chromium/ChangeLog
WebKit/chromium/public/WebElement.h
WebKit/chromium/public/WebFormElement.h
WebKit/chromium/public/WebInputElement.h
WebKit/chromium/public/WebNode.h
WebKit/chromium/src/AssertMatchingEnums.cpp
WebKit/chromium/src/DOMUtilitiesPrivate.cpp
WebKit/chromium/src/DOMUtilitiesPrivate.h
WebKit/chromium/src/EditorClientImpl.cpp
WebKit/chromium/src/WebFormElement.cpp
WebKit/chromium/src/WebInputElement.cpp
WebKit/chromium/src/WebNode.cpp

index 9045b2a..9202ed0 100644 (file)
@@ -1,3 +1,40 @@
+2009-11-19  Yaar Schnitman  <yaar@chromium.org>
+
+        Reviewed by Darin Fisher.
+
+        Make chromium/webkit/glue/FormFieldValues use the WebKit API
+
+        https://bugs.webkit.org/show_bug.cgi?id=31650
+
+        * public/WebElement.h:
+        * public/WebFormElement.h:
+        * public/WebInputElement.h:
+        (WebKit::WebInputElement::):
+        * public/WebNode.h:
+        * src/AssertMatchingEnums.cpp:
+        * src/DOMUtilitiesPrivate.cpp:
+        (WebKit::nameOfInputElement):
+        * src/DOMUtilitiesPrivate.h:
+        * src/EditorClientImpl.cpp:
+        (WebKit::EditorClientImpl::autofill):
+        (WebKit::EditorClientImpl::doAutofill):
+        * src/WebFormElement.cpp:
+        (WebKit::WebFormElement::name):
+        (WebKit::WebFormElement::method):
+        (WebKit::WebFormElement::getNamedElements):
+        (WebKit::WebFormElement::getInputElements):
+        * src/WebInputElement.cpp:
+        (WebKit::WebInputElement::isEnabledFormControl):
+        (WebKit::WebInputElement::inputType):
+        (WebKit::WebInputElement::formControlType):
+        (WebKit::WebInputElement::value):
+        (WebKit::WebInputElement::dispatchFormControlChangeEvent):
+        (WebKit::WebInputElement::setSelectionRange):
+        (WebKit::WebInputElement::name):
+        (WebKit::WebInputElement::nameForAutofill):
+        * src/WebNode.cpp:
+        (WebKit::WebNode::frame):
+
 2009-11-18  Michelangelo De Simone  <micdesim@gmail.com>
 
         Reviewed by Darin Adler.
index bfdc081..d7a2cbf 100644 (file)
@@ -54,7 +54,6 @@ namespace WebKit {
         WebElement& operator=(const WTF::PassRefPtr<WebCore::Element>&);
         operator WTF::PassRefPtr<WebCore::Element>() const;
 #endif
-
     };
 
 } // namespace WebKit
index 9923bb9..27a1edb 100644 (file)
@@ -32,6 +32,7 @@
 #define WebFormElement_h
 
 #include "WebElement.h"
+#include "WebInputElement.h"
 #include "WebVector.h"
 
 #if WEBKIT_IMPLEMENTATION
@@ -60,8 +61,12 @@ namespace WebKit {
 
         WEBKIT_API bool autoComplete() const;
         WEBKIT_API WebString action() const;
+        WEBKIT_API WebString name() const;
+        WEBKIT_API WebString method() const;
         WEBKIT_API void submit();
+        // FIXME: Deprecate and replace with WebVector<WebElement>.
         WEBKIT_API void getNamedElements(const WebString&, WebVector<WebNode>&);
+        WEBKIT_API void getInputElements(WebVector<WebInputElement>&) const;
     };
 
 } // namespace WebKit
index 5d86a39..75e44b9 100644 (file)
@@ -55,12 +55,48 @@ namespace WebKit {
         operator WTF::PassRefPtr<WebCore::HTMLInputElement>() const;
 #endif
 
-        void setActivatedSubmit(bool);
-        void setValue(const WebString& value);
-        WebString value();
-        void setAutofilled(bool);
-        void dispatchFormControlChangeEvent();
-        void setSelectionRange(size_t, size_t);
+        enum InputType {
+            Text = 0,
+            Password,
+            IsIndex,
+            CheckBox,
+            Radio,
+            Submit,
+            Reset,
+            File,
+            Hidden,
+            Image,
+            Button,
+            Search,
+            Range,
+            Email,
+            Number,
+            Telephone,
+            URL,
+            Color,
+            Date,
+            DateTime,
+            DateTimeLocal,
+            Month,
+            Time,
+            Week
+        };
+        
+        WEBKIT_API bool isEnabledFormControl() const;
+        WEBKIT_API InputType inputType() const;
+        WEBKIT_API WebString formControlType() const;
+        WEBKIT_API void setActivatedSubmit(bool);
+        WEBKIT_API void setValue(const WebString& value);
+        WEBKIT_API WebString value() const;
+        WEBKIT_API void setAutofilled(bool);
+        WEBKIT_API void dispatchFormControlChangeEvent();
+        WEBKIT_API void setSelectionRange(int, int);
+        WEBKIT_API WebString name() const;
+        // 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.
+        WEBKIT_API WebString nameForAutofill() const;
+        
     };
 
 } // namespace WebKit
index a312c9f..03afa90 100644 (file)
@@ -68,7 +68,7 @@ public:
 
     WEBKIT_API WebNode parentNode() const;
     WEBKIT_API WebString nodeName() const;
-    WEBKIT_API WebFrame* frame();
+    WEBKIT_API WebFrame* frame() const;
 
     template<typename T> T toElement()
     {
index dae8b7a..43e6b3a 100644 (file)
@@ -36,6 +36,7 @@
 #include "AccessibilityObject.h"
 #include "ApplicationCacheHost.h"
 #include "EditorInsertAction.h"
+#include "HTMLInputElement.h"
 #include "MediaPlayer.h"
 #include "NotificationPresenter.h"
 #include "PasteboardPrivate.h"
@@ -46,6 +47,7 @@
 #include "WebClipboard.h"
 #include "WebCursorInfo.h"
 #include "WebEditingAction.h"
+#include "WebInputElement.h"
 #include "WebMediaPlayer.h"
 #include "WebNotificationPresenter.h"
 #include "WebTextAffinity.h"
@@ -215,6 +217,31 @@ COMPILE_ASSERT_MATCHING_ENUM(WebEditingActionTyped, EditorInsertActionTyped);
 COMPILE_ASSERT_MATCHING_ENUM(WebEditingActionPasted, EditorInsertActionPasted);
 COMPILE_ASSERT_MATCHING_ENUM(WebEditingActionDropped, EditorInsertActionDropped);
 
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Text, HTMLInputElement::TEXT);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Password, HTMLInputElement::PASSWORD);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::IsIndex, HTMLInputElement::ISINDEX);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::CheckBox, HTMLInputElement::CHECKBOX);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Radio, HTMLInputElement::RADIO);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Submit, HTMLInputElement::SUBMIT);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Reset, HTMLInputElement::RESET);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::File, HTMLInputElement::FILE);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Hidden, HTMLInputElement::HIDDEN);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Image, HTMLInputElement::IMAGE);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Button, HTMLInputElement::BUTTON);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Search, HTMLInputElement::SEARCH);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Range, HTMLInputElement::RANGE);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Email, HTMLInputElement::EMAIL);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Number, HTMLInputElement::NUMBER);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Telephone, HTMLInputElement::TELEPHONE);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::URL, HTMLInputElement::URL);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Color, HTMLInputElement::COLOR);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Date, HTMLInputElement::DATE);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::DateTime, HTMLInputElement::DATETIME);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::DateTimeLocal, HTMLInputElement::DATETIMELOCAL);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Month, HTMLInputElement::MONTH);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Time, HTMLInputElement::TIME);
+COMPILE_ASSERT_MATCHING_ENUM(WebInputElement::Week, HTMLInputElement::WEEK);
+
 #if ENABLE(VIDEO)
 COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::Empty, MediaPlayer::Empty);
 COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::Idle, MediaPlayer::Idle);
index e84d4fb..ffdd85d 100644 (file)
@@ -39,6 +39,8 @@
 #include "HTMLOptionElement.h"
 #include "Node.h"
 
+#include "WebInputElement.h"
+
 using namespace WebCore;
 
 namespace {
@@ -79,17 +81,7 @@ HTMLOptionElement* toHTMLOptionElement(Node* node)
 
 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();
+    return WebInputElement(element).nameForAutofill();
 }
 
 } // namespace WebKit
index c701d0a..c02bf84 100644 (file)
@@ -50,9 +50,7 @@ WebCore::HTMLLinkElement* toHTMLLinkElement(WebCore::Node*);
 WebCore::HTMLMetaElement* toHTMLMetaElement(WebCore::Node*);
 WebCore::HTMLOptionElement* toHTMLOptionElement(WebCore::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.
+// FIXME: Deprecate. Use WebInputElement::nameForAutofill instead.
 WebCore::String nameOfInputElement(WebCore::HTMLInputElement*);
 
 } // namespace WebKit
index d84ce12..5db8ff7 100644 (file)
@@ -45,6 +45,7 @@
 #include "WebEditingAction.h"
 #include "WebFrameImpl.h"
 #include "WebKit.h"
+#include "WebInputElement.h"
 #include "WebNode.h"
 #include "WebPasswordAutocompleteListener.h"
 #include "WebRange.h"
@@ -706,7 +707,7 @@ bool EditorClientImpl::autofill(HTMLInputElement* inputElement,
         || !inputElement->autoComplete())
         return false;
 
-    WebString name = WebKit::nameOfInputElement(inputElement);
+    WebString name = WebInputElement(inputElement).nameForAutofill();
     if (name.isEmpty()) // If the field has no name, then we won't have values.
         return false;
 
@@ -769,7 +770,7 @@ void EditorClientImpl::doAutofill(Timer<EditorClientImpl>* timer)
     }
 
     // Then trigger form autofill.
-    WebString name = WebKit::nameOfInputElement(inputElement);
+    WebString name = WebInputElement(inputElement).nameForAutofill();
     ASSERT(static_cast<int>(name.length()) > 0);
 
     if (m_webView->client())
index 47fe760..5471608 100644 (file)
 #include "config.h"
 #include "WebFormElement.h"
 
+#include "HTMLFormControlElement.h"
 #include "HTMLFormElement.h"
+#include "HTMLInputElement.h"
+#include "HTMLNames.h"
 #include "WebString.h"
 #include "WebURL.h"
 #include <wtf/PassRefPtr.h>
@@ -69,6 +72,16 @@ WebString WebFormElement::action() const
     return constUnwrap<HTMLFormElement>()->action();
 }
 
+WebString WebFormElement::name() const 
+{
+    return constUnwrap<HTMLFormElement>()->name();
+}
+
+WebString WebFormElement::method() const 
+{
+    return constUnwrap<HTMLFormElement>()->method();
+}
+    
 void WebFormElement::submit()
 {
     unwrap<HTMLFormElement>()->submit();
@@ -77,9 +90,21 @@ void WebFormElement::submit()
 void WebFormElement::getNamedElements(const WebString& name,
                                       WebVector<WebNode>& result)
 {
-    Vector<RefPtr<Node> > temp_vector;
-    unwrap<HTMLFormElement>()->getNamedElements(name, temp_vector);
-    result.assign(temp_vector);
+    Vector<RefPtr<Node> > tempVector;
+    unwrap<HTMLFormElement>()->getNamedElements(name, tempVector);
+    result.assign(tempVector);
+}
+    
+void WebFormElement::getInputElements(WebVector<WebInputElement>& result) const
+{
+    const HTMLFormElement* form = constUnwrap<HTMLFormElement>();
+    Vector<RefPtr<HTMLInputElement> > tempVector;
+    for (size_t i = 0; i < form->formElements.size(); i++) {
+        if (form->formElements[i]->hasLocalName(HTMLNames::inputTag))
+            tempVector.append(static_cast<HTMLInputElement*>(
+                form->formElements[i]));
+    }
+    result.assign(tempVector);
 }
 
 } // namespace WebKit
index 947e4cc..d403120 100644 (file)
@@ -32,6 +32,7 @@
 #include "WebInputElement.h"
 
 #include "HTMLInputElement.h"
+#include "HTMLNames.h"
 #include "WebString.h"
 #include <wtf/PassRefPtr.h>
 
@@ -55,23 +56,36 @@ WebInputElement::operator WTF::PassRefPtr<HTMLInputElement>() const
     return PassRefPtr<HTMLInputElement>(static_cast<HTMLInputElement*>(m_private));
 }
 
+bool WebInputElement::isEnabledFormControl() const
+{
+    return constUnwrap<HTMLInputElement>()->isEnabledFormControl();
+}
+
+WebInputElement::InputType WebInputElement::inputType() const
+{
+    return static_cast<InputType>(constUnwrap<HTMLInputElement>()->inputType());
+}
+
+WebString WebInputElement::formControlType() const
+{
+    return constUnwrap<HTMLInputElement>()->formControlType();
+}
+    
 void WebInputElement::setActivatedSubmit(bool activated)
 {
     unwrap<HTMLInputElement>()->setActivatedSubmit(activated);
 }
 
-
 void WebInputElement::setValue(const WebString& value)
 {
     unwrap<HTMLInputElement>()->setValue(value);
 }
 
-WebString WebInputElement::value()
+WebString WebInputElement::value() const
 {
-    return unwrap<HTMLInputElement>()->value();
+    return constUnwrap<HTMLInputElement>()->value();
 }
 
-
 void WebInputElement::setAutofilled(bool autoFilled)
 {
     unwrap<HTMLInputElement>()->setAutofilled(autoFilled);
@@ -80,10 +94,29 @@ void WebInputElement::setAutofilled(bool autoFilled)
 void WebInputElement::dispatchFormControlChangeEvent()
 {
     unwrap<HTMLInputElement>()->dispatchFormControlChangeEvent();
-} // namespace WebKit
+}
 
-void WebInputElement::setSelectionRange(size_t start, size_t end)
+void WebInputElement::setSelectionRange(int start, int end)
 {
     unwrap<HTMLInputElement>()->setSelectionRange(start, end);
 }
+    
+WebString WebInputElement::name() const
+{
+    return constUnwrap<HTMLInputElement>()->name();
+}
+    
+WebString WebInputElement::nameForAutofill() const
+{
+    String name = constUnwrap<HTMLInputElement>()->name();
+    String trimmedName = name.stripWhiteSpace();
+    if (!trimmedName.isEmpty())
+        return trimmedName;
+    name = constUnwrap<HTMLInputElement>()->getAttribute(HTMLNames::idAttr);
+    trimmedName = name.stripWhiteSpace();
+    if (!trimmedName.isEmpty())
+        return trimmedName;
+    return String();
+}
+
 } // namespace WebKit
index 07ec9b6..965c412 100644 (file)
@@ -95,7 +95,7 @@ void WebNode::assign(WebNodePrivate* p)
     m_private = p;
 }
 
-WebFrame* WebNode::frame()
+WebFrame* WebNode::frame() const
 {
     return WebFrameImpl::fromFrame(m_private->document()->frame());
 }