- fixed <rdar://problem/
4025618> Crash while searching at hollywoodvideo.com
* khtml/html/html_formimpl.h: Added valueWithDefault.
* khtml/html/html_formimpl.cpp:
(DOM::HTMLInputElementImpl::appendFormData): Call valueWithDefault instead of going at the render object
to try to get the default value; there may be no render object if this is display:none.
(DOM::HTMLInputElementImpl::valueWithDefault): Added. Knows about the defaults for "submit" and "reset"
buttons; otherwise just returns the value as-is.
* khtml/rendering/render_form.h: Removed the defaultLabel member functions.
* khtml/rendering/render_form.cpp:
(RenderSubmitButton::rawText): Call valueWithDefault instead of using defaultLabel function here on
the render side. The DOM needs to know how to deal with the default anyway for form submission.
(RenderSubmitButton::defaultLabel): Removed.
(RenderResetButton::defaultLabel): Removed.
(RenderPushButton::defaultLabel): Removed.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8713
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2005-02-25 Darin Adler <darin@apple.com>
+
+ Reviewed by Adele.
+
+ - fixed <rdar://problem/4025618> Crash while searching at hollywoodvideo.com
+
+ * khtml/html/html_formimpl.h: Added valueWithDefault.
+ * khtml/html/html_formimpl.cpp:
+ (DOM::HTMLInputElementImpl::appendFormData): Call valueWithDefault instead of going at the render object
+ to try to get the default value; there may be no render object if this is display:none.
+ (DOM::HTMLInputElementImpl::valueWithDefault): Added. Knows about the defaults for "submit" and "reset"
+ buttons; otherwise just returns the value as-is.
+
+ * khtml/rendering/render_form.h: Removed the defaultLabel member functions.
+ * khtml/rendering/render_form.cpp:
+ (RenderSubmitButton::rawText): Call valueWithDefault instead of using defaultLabel function here on
+ the render side. The DOM needs to know how to deal with the default anyway for form submission.
+ (RenderSubmitButton::defaultLabel): Removed.
+ (RenderResetButton::defaultLabel): Removed.
+ (RenderPushButton::defaultLabel): Removed.
+
2005-02-25 Darin Adler <darin@apple.com>
Reviewed by John.
case SUBMIT:
if (m_activeSubmit)
{
- QString enc_str = value().string();
- if (enc_str.isEmpty())
- enc_str = static_cast<RenderSubmitButton*>(m_render)->defaultLabel();
+ QString enc_str = valueWithDefault().string();
if (!enc_str.isEmpty()) {
encoding.appendData(name(), enc_str);
return true;
return value;
}
+DOMString HTMLInputElementImpl::valueWithDefault() const
+{
+ DOMString v = value();
+ if (v.isEmpty()) {
+ switch (m_type) {
+ case RESET:
+#if APPLE_CHANGES
+ v = resetButtonDefaultLabel();
+#else
+ v = i18n("Reset");
+#endif
+ break;
+
+ case SUBMIT:
+#if APPLE_CHANGES
+ v = submitButtonDefaultLabel();
+#else
+ v = i18n("Submit");
+#endif
+ break;
+
+ case BUTTON:
+ case CHECKBOX:
+ case FILE:
+ case HIDDEN:
+ case IMAGE:
+ case ISINDEX:
+ case PASSWORD:
+ case RADIO:
+ #if APPLE_CHANGES
+ case RANGE:
+ case SEARCH:
+ #endif
+ case TEXT:
+ break;
+ }
+ }
+ return v;
+}
void HTMLInputElementImpl::setValue(const DOMString &value)
{
DOMString value() const;
void setValue(const DOMString &);
+ DOMString valueWithDefault() const;
+
void setValueFromRenderer(const DOMString &);
bool valueMatchesRenderer() const { return m_valueMatchesRenderer; }
void setValueMatchesRenderer() { m_valueMatchesRenderer = true; }
// -------------------------------------------------------------------------------
-
RenderSubmitButton::RenderSubmitButton(HTMLInputElementImpl *element)
: RenderButton(element)
{
QString RenderSubmitButton::rawText()
{
- QString value = element()->value().isEmpty() ? defaultLabel() : element()->value().string();
+ QString value = element()->valueWithDefault().string();
value = value.stripWhiteSpace();
value.replace(QChar('\\'), backslashAsCurrencySymbol());
#if APPLE_CHANGES
RenderFormElement::updateFromElement();
}
-QString RenderSubmitButton::defaultLabel()
-{
-#if APPLE_CHANGES
- return submitButtonDefaultLabel();
-#else
- return i18n("Submit");
-#endif
-}
-
short RenderSubmitButton::baselinePosition( bool f, bool isRootLineBox ) const
{
return RenderFormElement::baselinePosition( f, isRootLineBox );
// -------------------------------------------------------------------------------
+// FIXME: No real reason to need separate classes for RenderResetButton and
+// RenderSubmitButton now that the default label is handled on the DOM side.
RenderResetButton::RenderResetButton(HTMLInputElementImpl *element)
: RenderSubmitButton(element)
{
}
-QString RenderResetButton::defaultLabel()
-{
-#if APPLE_CHANGES
- return resetButtonDefaultLabel();
-#else
- return i18n("Reset");
-#endif
-}
-
-
// -------------------------------------------------------------------------------
+// FIXME: No real reason to need separate classes for RenderPushButton and
+// RenderSubmitButton now that the default label is handled on the DOM side.
RenderPushButton::RenderPushButton(HTMLInputElementImpl *element)
: RenderSubmitButton(element)
{
}
-QString RenderPushButton::defaultLabel()
-{
- return QString::null;
-}
-
// -------------------------------------------------------------------------------
#if !APPLE_CHANGES
virtual const char *renderName() const { return "RenderSubmitButton"; }
- virtual QString defaultLabel();
-
virtual void calcMinMaxWidth();
virtual void updateFromElement();
virtual short baselinePosition( bool, bool ) const;
RenderResetButton(DOM::HTMLInputElementImpl *element);
virtual const char *renderName() const { return "RenderResetButton"; }
-
- virtual QString defaultLabel();
};
// -------------------------------------------------------------------------
{
public:
RenderPushButton(DOM::HTMLInputElementImpl *element);
-
- virtual QString defaultLabel();
};
// -------------------------------------------------------------------------