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

Reply via email to