[iOS] Form Validation Bubble should be sensitive to Dynamic Type
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Feb 2017 18:12:25 +0000 (18:12 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Feb 2017 18:12:25 +0000 (18:12 +0000)
https://bugs.webkit.org/show_bug.cgi?id=168291
<rdar://problem/30508593>

Reviewed by Tim Horton.

Source/WebCore:

Update ValidationBubble implementation on iOS to stop obeying the
minimum font size setting, given that this setting is not exposed
on iOS. Instead, we now rely on
[UIFont preferredFontForTextStyle:UIFontTextStyleCallout], which
will give us a font whose size obeys Dynamic Type [1] setting on iOS.

[1] https://developer.apple.com/ios/human-interface-guidelines/visual-design/typography/

No new tests, no easily testable.

* platform/ios/ValidationBubbleIOS.mm:
(WebCore::ValidationBubble::ValidationBubble):

Tools:

Drop overridePreference() implementation in iOS's UIScriptController
as it was only used for the minimum font size setting and this setting
is not exposed on iOS.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::overridePreference):
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:

LayoutTests:

Skip fast/forms/validation-message-minimum-font-size.html on iOS now
that the ValidationBubble implementation no longer obeys the minimum
font size setting on iOS.

* platform/ios-simulator/TestExpectations:

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

LayoutTests/ChangeLog
LayoutTests/platform/ios-simulator/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/platform/ios/ValidationBubbleIOS.mm
Tools/ChangeLog
Tools/DumpRenderTree/ios/UIScriptControllerIOS.mm
Tools/TestRunnerShared/UIScriptContext/UIScriptController.cpp
Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm

index ee67352..b5b4c0d 100644 (file)
@@ -1,3 +1,17 @@
+2017-02-15  Chris Dumez  <cdumez@apple.com>
+
+        [iOS] Form Validation Bubble should be sensitive to Dynamic Type
+        https://bugs.webkit.org/show_bug.cgi?id=168291
+        <rdar://problem/30508593>
+
+        Reviewed by Tim Horton.
+
+        Skip fast/forms/validation-message-minimum-font-size.html on iOS now
+        that the ValidationBubble implementation no longer obeys the minimum
+        font size setting on iOS.
+
+        * platform/ios-simulator/TestExpectations:
+
 2017-02-15  Ryan Haddad  <ryanhaddad@apple.com>
 
         Mark animations/trigger-container-scroll-empty.html as flaky.
index 659e6a7..1429409 100644 (file)
@@ -2841,6 +2841,9 @@ media/modern-media-controls/media-controller/media-controller-reduced-padding.ht
 media/modern-media-controls/media-controller/media-controller-tight-padding.html [ Skip ]
 media/modern-media-controls/media-controller/media-controller-toggle-compact-mode.html [ Skip ]
 
+# Form validation popover does not obey minimum font size setting on iOS but Dynamic Type instead.
+fast/forms/validation-message-minimum-font-size.html [ Skip ]
+
 # New Encrypted Media API not enabled on iOS
 media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html [ Skip ]
 
index 607bfe3..e7753ad 100644 (file)
@@ -1,3 +1,24 @@
+2017-02-15  Chris Dumez  <cdumez@apple.com>
+
+        [iOS] Form Validation Bubble should be sensitive to Dynamic Type
+        https://bugs.webkit.org/show_bug.cgi?id=168291
+        <rdar://problem/30508593>
+
+        Reviewed by Tim Horton.
+
+        Update ValidationBubble implementation on iOS to stop obeying the
+        minimum font size setting, given that this setting is not exposed
+        on iOS. Instead, we now rely on
+        [UIFont preferredFontForTextStyle:UIFontTextStyleCallout], which
+        will give us a font whose size obeys Dynamic Type [1] setting on iOS.
+
+        [1] https://developer.apple.com/ios/human-interface-guidelines/visual-design/typography/
+
+        No new tests, no easily testable.
+
+        * platform/ios/ValidationBubbleIOS.mm:
+        (WebCore::ValidationBubble::ValidationBubble):
+
 2017-02-15  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         [JSC] Drop PassRefPtr
index a51d9f9..95806dc 100644 (file)
@@ -40,6 +40,7 @@ SOFT_LINK_CLASS(UIKit, UIPopoverPresentationController);
 SOFT_LINK_CLASS(UIKit, UITapGestureRecognizer);
 SOFT_LINK_CLASS(UIKit, UIView);
 SOFT_LINK_CLASS(UIKit, UIViewController);
+SOFT_LINK_CONSTANT(UIKit, UIFontTextStyleCallout, UIFontTextStyle);
 
 @interface WebValidationBubbleTapRecognizer : NSObject
 @end
@@ -97,7 +98,7 @@ static const CGFloat horizontalPadding = 17;
 static const CGFloat verticalPadding = 9;
 static const CGFloat maxLabelWidth = 300;
 
-ValidationBubble::ValidationBubble(UIView* view, const String& message, const Settings& settings)
+ValidationBubble::ValidationBubble(UIView* view, const String& message, const Settings&)
     : m_view(view)
     , m_message(message)
 {
@@ -110,8 +111,8 @@ ValidationBubble::ValidationBubble(UIView* view, const String& message, const Se
 
     RetainPtr<UILabel> label = adoptNS([[getUILabelClass() alloc] initWithFrame:CGRectZero]);
     [label setText:message];
-    m_fontSize = std::max(settings.minimumFontSize, 14.0);
-    [label setFont:[getUIFontClass() systemFontOfSize:m_fontSize]];
+    [label setFont:[getUIFontClass() preferredFontForTextStyle:getUIFontTextStyleCallout()]];
+    m_fontSize = [[label font] pointSize];
     [label setLineBreakMode:NSLineBreakByTruncatingTail];
     [label setNumberOfLines:4];
     [popoverView addSubview:label.get()];
index 70b7eb4..ab75e88 100644 (file)
@@ -1,3 +1,20 @@
+2017-02-15  Chris Dumez  <cdumez@apple.com>
+
+        [iOS] Form Validation Bubble should be sensitive to Dynamic Type
+        https://bugs.webkit.org/show_bug.cgi?id=168291
+        <rdar://problem/30508593>
+
+        Reviewed by Tim Horton.
+
+        Drop overridePreference() implementation in iOS's UIScriptController
+        as it was only used for the minimum font size setting and this setting
+        is not exposed on iOS.
+
+        * DumpRenderTree/ios/UIScriptControllerIOS.mm:
+        * TestRunnerShared/UIScriptContext/UIScriptController.cpp:
+        (WTR::UIScriptController::overridePreference):
+        * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
+
 2017-02-15  Jonathan Bedard  <jbedard@apple.com>
 
         webkitpy: Memoize app_identifier_from_bundle for efficiency, call parent class for _get_crash_log
index e20140e..e98114a 100644 (file)
@@ -159,10 +159,6 @@ JSObjectRef UIScriptController::contentsOfUserInterfaceItem(JSStringRef interfac
     return nullptr;
 }
 
-void UIScriptController::overridePreference(JSStringRef preferenceRef, JSStringRef valueRef)
-{
-}
-
 static CGPoint contentOffsetBoundedInValidRange(UIScrollView *scrollView, CGPoint contentOffset)
 {
     UIEdgeInsets contentInsets = scrollView.contentInset;
index 17412a1..a17072b 100644 (file)
@@ -397,14 +397,14 @@ void UIScriptController::addViewToWindow(JSValueRef)
 {
 }
 
-void UIScriptController::overridePreference(JSStringRef, JSStringRef)
-{
-}
-
 #endif // !PLATFORM(COCOA)
 
 #if !PLATFORM(MAC)
 
+void UIScriptController::overridePreference(JSStringRef, JSStringRef)
+{
+}
+
 void UIScriptController::insertText(JSStringRef, int, int)
 {
 }
index f30bb0c..d87ef32 100644 (file)
@@ -651,17 +651,6 @@ void UIScriptController::platformClearAllCallbacks()
     webView.didEndScrollingCallback = nil;
 }
 
-void UIScriptController::overridePreference(JSStringRef preferenceRef, JSStringRef valueRef)
-{
-    TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView();
-    WKPreferences *preferences = webView.configuration.preferences;
-
-    String preference = toWTFString(toWK(preferenceRef));
-    String value = toWTFString(toWK(valueRef));
-    if (preference == "WebKitMinimumFontSize")
-        preferences.minimumFontSize = value.toDouble();
-}
-
 }
 
 #endif // PLATFORM(IOS)