Reviewed by Adam.
Added methods to track user edited text fields now that
<rdar://problem/
5359921> has been fixed.
* DOMHTMLClasses.cpp:
(DOMHTMLInputElement::QueryInterface):
(DOMHTMLInputElement::isUserEdited):
(DOMHTMLTextAreaElement::QueryInterface):
(DOMHTMLTextAreaElement::isUserEdited):
* DOMHTMLClasses.h:
* Interfaces/DOMPrivate.idl:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@24738
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2007-07-27 Ada Chan <adachan@apple.com>
+
+ Reviewed by Adam.
+
+ Added methods to track user edited text fields now that
+ <rdar://problem/5359921> has been fixed.
+
+ * DOMHTMLClasses.cpp:
+ (DOMHTMLInputElement::QueryInterface):
+ (DOMHTMLInputElement::isUserEdited):
+ (DOMHTMLTextAreaElement::QueryInterface):
+ (DOMHTMLTextAreaElement::isUserEdited):
+ * DOMHTMLClasses.h:
+ * Interfaces/DOMPrivate.idl:
+
2007-07-27 Adam Roben <aroben@apple.com>
Fix Bug 14773: REGRESSION (r24630): ASSERT_NOT_REACHED in DOMHTMLInputElement::name on Windows
#include <WebCore/HTMLTextAreaElement.h>
#include <WebCore/IntRect.h>
#include <WebCore/RenderObject.h>
+#include <WebCore/RenderTextControl.h>
#pragma warning(pop)
using namespace WebCore;
*ppvObject = static_cast<IDOMHTMLInputElement*>(this);
else if (IsEqualGUID(riid, IID_IFormsAutoFillTransition))
*ppvObject = static_cast<IFormsAutoFillTransition*>(this);
+ else if (IsEqualGUID(riid, IID_IFormPromptAdditions))
+ *ppvObject = static_cast<IFormPromptAdditions*>(this);
else
return DOMHTMLElement::QueryInterface(riid, ppvObject);
return S_OK;
}
+// DOMHTMLInputElement -- IFormPromptAdditions ------------------------------------
+
+HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::isUserEdited(
+ /* [retval][out] */ BOOL *result)
+{
+ if (!result)
+ return E_POINTER;
+
+ *result = FALSE;
+ ASSERT(m_element);
+ BOOL textField = FALSE;
+ if (FAILED(isTextField(&textField)) || !textField)
+ return S_OK;
+ RenderObject* renderer = m_element->renderer();
+ if (renderer && static_cast<WebCore::RenderTextControl*>(renderer)->isUserEdited())
+ *result = TRUE;
+ return S_OK;
+}
+
// DOMHTMLTextAreaElement - IUnknown ----------------------------------------------
HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::QueryInterface(REFIID riid, void** ppvObject)
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IDOMHTMLTextAreaElement))
*ppvObject = static_cast<IDOMHTMLTextAreaElement*>(this);
+ else if (IsEqualGUID(riid, IID_IFormPromptAdditions))
+ *ppvObject = static_cast<IFormPromptAdditions*>(this);
else
return DOMHTMLElement::QueryInterface(riid, ppvObject);
textareaElement->select();
return S_OK;
}
+
+// DOMHTMLTextAreaElement -- IFormPromptAdditions ------------------------------------
+
+HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::isUserEdited(
+ /* [retval][out] */ BOOL *result)
+{
+ if (!result)
+ return E_POINTER;
+
+ *result = FALSE;
+ ASSERT(m_element);
+ RenderObject* renderer = m_element->renderer();
+ if (renderer && static_cast<WebCore::RenderTextControl*>(renderer)->isUserEdited())
+ *result = TRUE;
+ return S_OK;
+}
/* [in] */ BSTR value);
};
-class DOMHTMLInputElement : public DOMHTMLElement, public IDOMHTMLInputElement, public IFormsAutoFillTransition
+class DOMHTMLInputElement : public DOMHTMLElement, public IDOMHTMLInputElement, public IFormsAutoFillTransition, public IFormPromptAdditions
{
protected:
DOMHTMLInputElement();
virtual HRESULT STDMETHODCALLTYPE setAutofilled(
/* [in] */ BOOL filled);
+
+ // IFormPromptAdditions
+ virtual HRESULT STDMETHODCALLTYPE isUserEdited(
+ /* [retval][out] */ BOOL *result);
};
-class DOMHTMLTextAreaElement : public DOMHTMLElement, public IDOMHTMLTextAreaElement
+class DOMHTMLTextAreaElement : public DOMHTMLElement, public IDOMHTMLTextAreaElement, public IFormPromptAdditions
{
protected:
DOMHTMLTextAreaElement();
/* [in] */ BSTR value);
virtual HRESULT STDMETHODCALLTYPE select( void);
+
+ // IFormPromptAdditions
+ virtual HRESULT STDMETHODCALLTYPE isUserEdited(
+ /* [retval][out] */ BOOL *result);
};
#endif
HRESULT setAutofilled([in] BOOL filled);
}
+/*
+ // These changes are necessary to detect whether a form input was modified by a user
+ // or javascript
+ @interface DOMHTMLInputElement (FormPromptAdditions)
+
+ @interface DOMHTMLTextAreaElement (FormPromptAdditions)
+*/
+[
+ object,
+ oleautomation,
+ uuid(C8C5F0CD-07B0-4a32-BFA8-AE465E80DD3C),
+ pointer_default(unique)
+]
+interface IFormPromptAdditions : IUnknown
+{
+ /*
+ - (BOOL)_isUserEdited;
+ */
+ HRESULT isUserEdited([out, retval] BOOL* result);
+}
+
/*
All the methods in this category are used by Safari forms autofill and should not be used for any other purpose.
They are stopgap measures until we finish transitioning form controls to not use NSView. Each one should become