Title: [240122] trunk/Source/WebCore
- Revision
- 240122
- Author
- jiewen_...@apple.com
- Date
- 2019-01-17 11:34:29 -0800 (Thu, 17 Jan 2019)
Log Message
[Mac] Add a new quirk to HTMLFormControlElement::isMouseFocusable
https://bugs.webkit.org/show_bug.cgi?id=193478
<rdar://problem/34368591>
Reviewed by Brent Fulgham.
By default in macOS, submit buttons (controls) are not focusable. WebKit follows this system convention
as suggested by the spec: https://html.spec.whatwg.org/multipage/interaction.html#focusable-area. This
is also the convention Firefox respects. However, Chrome doesn't. ceac.state.gov is by far the only
website that assumes submit buttons are focusable, and will prohibit users from completing immigration
forms, such as DS160 if buttons are not. To help immigrations, we decide to add a new quirk to
HTMLFormControlElement::isMouseFocusable such that submit buttons are mouse focusable.
This quirk is for ceac.state.gov specifically, and therefore no tests.
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::isMouseFocusable const):
(WebCore::HTMLFormControlElement::needsSiteSpecificQuirks const):
* html/HTMLFormControlElement.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (240121 => 240122)
--- trunk/Source/WebCore/ChangeLog 2019-01-17 19:32:56 UTC (rev 240121)
+++ trunk/Source/WebCore/ChangeLog 2019-01-17 19:34:29 UTC (rev 240122)
@@ -1,3 +1,25 @@
+2019-01-17 Jiewen Tan <jiewen_...@apple.com>
+
+ [Mac] Add a new quirk to HTMLFormControlElement::isMouseFocusable
+ https://bugs.webkit.org/show_bug.cgi?id=193478
+ <rdar://problem/34368591>
+
+ Reviewed by Brent Fulgham.
+
+ By default in macOS, submit buttons (controls) are not focusable. WebKit follows this system convention
+ as suggested by the spec: https://html.spec.whatwg.org/multipage/interaction.html#focusable-area. This
+ is also the convention Firefox respects. However, Chrome doesn't. ceac.state.gov is by far the only
+ website that assumes submit buttons are focusable, and will prohibit users from completing immigration
+ forms, such as DS160 if buttons are not. To help immigrations, we decide to add a new quirk to
+ HTMLFormControlElement::isMouseFocusable such that submit buttons are mouse focusable.
+
+ This quirk is for ceac.state.gov specifically, and therefore no tests.
+
+ * html/HTMLFormControlElement.cpp:
+ (WebCore::HTMLFormControlElement::isMouseFocusable const):
+ (WebCore::HTMLFormControlElement::needsSiteSpecificQuirks const):
+ * html/HTMLFormControlElement.h:
+
2019-01-17 Alex Christensen <achristen...@webkit.org>
Fix WinCairo build after r240117
Modified: trunk/Source/WebCore/html/HTMLFormControlElement.cpp (240121 => 240122)
--- trunk/Source/WebCore/html/HTMLFormControlElement.cpp 2019-01-17 19:32:56 UTC (rev 240121)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.cpp 2019-01-17 19:34:29 UTC (rev 240122)
@@ -40,6 +40,7 @@
#include "HTMLTextAreaElement.h"
#include "RenderBox.h"
#include "RenderTheme.h"
+#include "Settings.h"
#include "StyleTreeResolver.h"
#include "ValidationMessage.h"
#include <wtf/IsoMallocInlines.h>
@@ -372,6 +373,8 @@
#if PLATFORM(GTK)
return HTMLElement::isMouseFocusable();
#else
+ if (needsMouseFocusableQuirk())
+ return HTMLElement::isMouseFocusable();
return false;
#endif
}
@@ -655,4 +658,18 @@
return AutofillData::createFromHTMLFormControlElement(*this);
}
+// FIXME: We should remove the quirk once <rdar://problem/47334655> is fixed.
+bool HTMLFormControlElement::needsMouseFocusableQuirk() const
+{
+#if PLATFORM(MAC)
+ if (!document().settings().needsSiteSpecificQuirks())
+ return false;
+
+ auto host = document().url().host();
+ return equalLettersIgnoringASCIICase(host, "ceac.state.gov") || host.endsWithIgnoringASCIICase(".ceac.state.gov");
+#else
+ return false;
+#endif
+}
+
} // namespace Webcore
Modified: trunk/Source/WebCore/html/HTMLFormControlElement.h (240121 => 240122)
--- trunk/Source/WebCore/html/HTMLFormControlElement.h 2019-01-17 19:32:56 UTC (rev 240121)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.h 2019-01-17 19:34:29 UTC (rev 240122)
@@ -177,6 +177,8 @@
const HTMLFormControlElement& asHTMLElement() const final { return *this; }
HTMLFormControlElement* asFormNamedItem() final { return this; }
+ bool needsMouseFocusableQuirk() const;
+
std::unique_ptr<ValidationMessage> m_validationMessage;
unsigned m_disabled : 1;
unsigned m_isReadOnly : 1;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes