Diff
Modified: trunk/LayoutTests/ChangeLog (261939 => 261940)
--- trunk/LayoutTests/ChangeLog 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/ChangeLog 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,3 +1,26 @@
+2020-05-20 Myles C. Maxfield <[email protected]>
+
+ [iPadOS] -webkit-text-size-adjust:percentage doesn't work in native apps
+ https://bugs.webkit.org/show_bug.cgi?id=212122
+ <rdar://problem/54560875>
+
+ Reviewed by Wenson Hsieh.
+
+ Update existing idempotent autosizing tests to force desktop mode.
+ Also add idempotent-percentage.html which doesn't force any mode.
+
+ * fast/text-autosizing/ios/idempotentmode/css-exposure.html:
+ * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html:
+ * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidate-special-cases.html:
+ * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html:
+ * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-identity.html:
+ * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html:
+ * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing.html:
+ * fast/text-autosizing/ios/idempotentmode/idempotent-percentage-expected.txt: Added.
+ * fast/text-autosizing/ios/idempotentmode/idempotent-percentage.html: Added.
+ * fast/text-autosizing/ios/idempotentmode/line-height-boosting.html:
+ * fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html:
+
2020-05-20 Ryan Haddad <[email protected]>
Disable support for BeforeLoadEvent
Modified: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/css-exposure.html (261939 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/css-exposure.html 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/css-exposure.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!DOCTYPE html><!-- webkit-test-runner [ contentMode=desktop ] -->
<html>
<head>
<script src=""
Modified: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html (261939 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,4 +1,4 @@
-<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true contentMode=mobile ] -->
+<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] -->
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
@@ -154,4 +154,4 @@
</div>
</div>
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidate-special-cases.html (261939 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidate-special-cases.html 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidate-special-cases.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,4 +1,4 @@
-<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] -->
<html>
<head>
<meta name="viewport" content="initial-scale=0.6666">
Modified: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html (261939 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,4 +1,4 @@
-<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] -->
<html>
<head>
<meta name="viewport" content="initial-scale=0.6666">
Modified: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-identity.html (261939 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-identity.html 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-identity.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,4 +1,4 @@
-<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] -->
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
Modified: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html (261939 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,4 +1,4 @@
-<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] -->
<html>
<head>
<script src=""
Modified: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing.html (261939 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing.html 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,4 +1,4 @@
-<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] -->
<html>
<head>
<meta name="viewport" content="initial-scale=0.6666">
Added: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-percentage-expected.txt (0 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-percentage-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-percentage-expected.txt 2020-05-20 19:19:39 UTC (rev 261940)
@@ -0,0 +1,15 @@
+PASS result is 12
+PASS result is 6
+PASS result is 6
+PASS result is 12
+PASS successfullyParsed is true
+
+TEST COMPLETE
+Test
+Test
+Test
+Test
+Test
+Test
+Test
+Test
Property changes on: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-percentage-expected.txt
___________________________________________________________________
Added: svn:eol-style
+native
\ No newline at end of property
Added: svn:keywords
+Author Date Id Rev URL
\ No newline at end of property
Added: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-percentage.html (0 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-percentage.html (rev 0)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-percentage.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -0,0 +1,45 @@
+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] -->
+<html>
+<head>
+<meta name="viewport" content="initial-scale=0.6666">
+<script>
+if (window.internals) {
+ window.internals.settings.setTextAutosizingEnabled(true);
+ window.internals.settings.setTextAutosizingUsesIdempotentMode(true);
+ window.internals.settings.setIdempotentModeAutosizingOnlyHonorsPercentages(true);
+}
+</script>
+<script src=""
+</head>
+<body>
+<div style="background: green;"><span id="target" style="font-size: 12px;">Test</span></div>
+<div style="background: green;"><span style="font-size: 12px;">Test</span></div>
+<div style="background: green;"><span id="target2" style="font-size: 6px;">Test</span></div>
+<div style="background: green;"><span style="font-size: 6px;">Test</span></div>
+<div style="background: green;"><span id="target3" style="-webkit-text-size-adjust: none; font-size: 6px;">Test</span></div>
+<div style="background: green;"><span style="font-size: 6px;">Test</span></div>
+<div style="background: green;"><span id="target4" style="-webkit-text-size-adjust: 200%; font-size: 6px;">Test</span></div>
+<div style="background: green;"><span style="font-size: 6px;">Test</span></div>
+<script>
+let target = document.getElementById("target");
+target.offsetWidth;
+let result = Number.parseInt(window.getComputedStyle(target).getPropertyValue("font-size"));
+shouldBeEqualToNumber("result", 12);
+
+target = document.getElementById("target2");
+target.offsetWidth;
+result = Number.parseInt(window.getComputedStyle(target).getPropertyValue("font-size"));
+shouldBeEqualToNumber("result", 6);
+
+target = document.getElementById("target3");
+target.offsetWidth;
+result = Number.parseInt(window.getComputedStyle(target).getPropertyValue("font-size"));
+shouldBeEqualToNumber("result", 6);
+
+target = document.getElementById("target4");
+target.offsetWidth;
+result = Number.parseInt(window.getComputedStyle(target).getPropertyValue("font-size"));
+shouldBeEqualToNumber("result", 12);
+</script>
+</body>
+</html>
Modified: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/line-height-boosting.html (261939 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/line-height-boosting.html 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/line-height-boosting.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,4 +1,4 @@
-<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] -->
<html>
<head>
<meta name="viewport" content="initial-scale=0.6666">
Modified: trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html (261939 => 261940)
--- trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,4 +1,4 @@
-<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] -->
<html>
<head>
<meta id="viewport" name="viewport" content="width=400, initial-scale=1">
Modified: trunk/Source/WebCore/ChangeLog (261939 => 261940)
--- trunk/Source/WebCore/ChangeLog 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebCore/ChangeLog 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,3 +1,47 @@
+2020-05-20 Myles C. Maxfield <[email protected]>
+
+ [iPadOS] -webkit-text-size-adjust:percentage doesn't work
+ https://bugs.webkit.org/show_bug.cgi?id=212122
+ <rdar://problem/54560875>
+
+ Reviewed by Wenson Hsieh.
+
+ We've gotten many bug reports that -webkit-text-size-adjust:X% no longer works in
+ WebKit on iPads. We don't want to just start honoring the value, because our
+ testing indicates that, with desktop-class browsing on iPad, more sites work better
+ when we don't honor percentages. However, if Safari is using the mobile content mode,
+ or if a native app has local content, it should be possible to get the old behavior
+ of honoring percentages.
+
+ This patch adds a new Setting, idempotentModeAutosizingOnlyHonorsPercentages, which
+ is hooked up to the desktop-class browsing feature. When
+ WebPageProxy::effectiveContentModeAfterAdjustingPolicies() determines that the
+ WebContentMode::Mobile mode should be used, it sets the new setting, which
+ causes idempotent text autosizing mode to have the same behavior that WKWebViews
+ on iPadOS used to have: -w-t-s-a:auto and -w-t-s-a:none have no effect, but
+ -w-t-s-a:X% is honored. This affects both Safari and WKWebView apps.
+
+ If a native app wants the old behavior, they can set
+ WKWebpagePreferences.preferredContentMode = WKContentModeMobile to force the old
+ iPad behavior. It's expected that apps with legacy content would be doing this
+ anyway.
+
+ Tests: fast/text-autosizing/ios/idempotentmode/idempotent-percentage.html
+ TestWebKitAPI.PreferredContentMode.IdempotentModeAutosizingOnlyHonorsPercentages
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::applyPoliciesToSettings):
+ * loader/DocumentLoader.h:
+ (WebCore::DocumentLoader::setIdempotentModeAutosizingOnlyHonorsPercentages):
+ (WebCore::DocumentLoader::idempotentModeAutosizingOnlyHonorsPercentages const):
+ * page/Settings.yaml:
+ * style/StyleAdjuster.cpp:
+ (WebCore::Style::Adjuster::adjustmentForTextAutosizing):
+ * style/StyleBuilderCustom.h:
+ (WebCore::Style::computeBaseSpecifiedFontSize):
+ * style/StyleBuilderState.cpp:
+ (WebCore::Style::BuilderState::updateFontForTextSizeAdjust):
+
2020-05-20 ChangSeok Oh <[email protected]>
Move the TextStream logging definition in VisibleSelection.cpp to the outside of the TREE_DEBUGGING guard
Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (261939 => 261940)
--- trunk/Source/WebCore/loader/DocumentLoader.cpp 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1239,6 +1239,9 @@
#if ENABLE(MEDIA_SOURCE)
m_frame->settings().setMediaSourceEnabled(m_mediaSourcePolicy == MediaSourcePolicy::Default ? Settings::platformDefaultMediaSourceEnabled() : m_mediaSourcePolicy == MediaSourcePolicy::Enable);
#endif
+#if ENABLE(TEXT_AUTOSIZING)
+ m_frame->settings().setIdempotentModeAutosizingOnlyHonorsPercentages(m_idempotentModeAutosizingOnlyHonorsPercentages);
+#endif
}
void DocumentLoader::attachToFrame(Frame& frame)
Modified: trunk/Source/WebCore/loader/DocumentLoader.h (261939 => 261940)
--- trunk/Source/WebCore/loader/DocumentLoader.h 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebCore/loader/DocumentLoader.h 2020-05-20 19:19:39 UTC (rev 261940)
@@ -414,6 +414,9 @@
void setAllowContentChangeObserverQuirk(bool allow) { m_allowContentChangeObserverQuirk = allow; }
bool allowContentChangeObserverQuirk() const { return m_allowContentChangeObserverQuirk; }
+ void setIdempotentModeAutosizingOnlyHonorsPercentages(bool idempotentModeAutosizingOnlyHonorsPercentages) { m_idempotentModeAutosizingOnlyHonorsPercentages = idempotentModeAutosizingOnlyHonorsPercentages; }
+ bool idempotentModeAutosizingOnlyHonorsPercentages() const { return m_idempotentModeAutosizingOnlyHonorsPercentages; }
+
#if ENABLE(SERVICE_WORKER)
WEBCORE_EXPORT bool setControllingServiceWorkerRegistration(ServiceWorkerRegistrationData&&);
#endif
@@ -630,6 +633,7 @@
String m_customUserAgent;
String m_customUserAgentAsSiteSpecificQuirks;
bool m_allowContentChangeObserverQuirk { false };
+ bool m_idempotentModeAutosizingOnlyHonorsPercentages { false };
String m_customNavigatorPlatform;
bool m_userContentExtensionsEnabled { true };
#if ENABLE(DEVICE_ORIENTATION)
Modified: trunk/Source/WebCore/page/Settings.yaml (261939 => 261940)
--- trunk/Source/WebCore/page/Settings.yaml 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebCore/page/Settings.yaml 2020-05-20 19:19:39 UTC (rev 261940)
@@ -471,6 +471,10 @@
initial: false
onChange: setNeedsRecalcStyleInAllFrames
conditional: TEXT_AUTOSIZING
+idempotentModeAutosizingOnlyHonorsPercentages:
+ initial: false
+ onChange: setNeedsRecalcStyleInAllFrames
+ conditional: TEXT_AUTOSIZING
subpixelAntialiasedLayerTextEnabled:
initial: false
Modified: trunk/Source/WebCore/style/StyleAdjuster.cpp (261939 => 261940)
--- trunk/Source/WebCore/style/StyleAdjuster.cpp 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebCore/style/StyleAdjuster.cpp 2020-05-20 19:19:39 UTC (rev 261940)
@@ -637,7 +637,9 @@
AdjustmentForTextAutosizing adjustmentForTextAutosizing;
auto& document = element.document();
- if (!document.settings().textAutosizingEnabled() || !document.settings().textAutosizingUsesIdempotentMode())
+ if (!document.settings().textAutosizingEnabled()
+ || !document.settings().textAutosizingUsesIdempotentMode()
+ || document.settings().idempotentModeAutosizingOnlyHonorsPercentages())
return adjustmentForTextAutosizing;
auto newStatus = AutosizeStatus::computeStatus(style);
Modified: trunk/Source/WebCore/style/StyleBuilderCustom.h (261939 => 261940)
--- trunk/Source/WebCore/style/StyleBuilderCustom.h 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebCore/style/StyleBuilderCustom.h 2020-05-20 19:19:39 UTC (rev 261940)
@@ -621,7 +621,8 @@
if (frame && style.textZoom() != TextZoom::Reset)
result *= frame->textZoomFactor();
result *= style.effectiveZoom();
- if (percentageAutosizingEnabled && !document.settings().textAutosizingUsesIdempotentMode())
+ if (percentageAutosizingEnabled
+ && (!document.settings().textAutosizingUsesIdempotentMode() || document.settings().idempotentModeAutosizingOnlyHonorsPercentages()))
result *= style.textSizeAdjust().multiplier();
return result;
}
Modified: trunk/Source/WebCore/style/StyleBuilderState.cpp (261939 => 261940)
--- trunk/Source/WebCore/style/StyleBuilderState.cpp 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebCore/style/StyleBuilderState.cpp 2020-05-20 19:19:39 UTC (rev 261940)
@@ -375,7 +375,9 @@
{
if (m_style.textSizeAdjust().isAuto()
|| !document().settings().textAutosizingEnabled()
- || (document().settings().textAutosizingUsesIdempotentMode() && !m_style.textSizeAdjust().isNone()))
+ || (document().settings().textAutosizingUsesIdempotentMode()
+ && !m_style.textSizeAdjust().isNone()
+ && !document().settings().idempotentModeAutosizingOnlyHonorsPercentages()))
return;
auto newFontDescription = m_style.fontDescription();
Modified: trunk/Source/WebKit/ChangeLog (261939 => 261940)
--- trunk/Source/WebKit/ChangeLog 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebKit/ChangeLog 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,3 +1,23 @@
+2020-05-20 Myles C. Maxfield <[email protected]>
+
+ [iPadOS] -webkit-text-size-adjust:percentage doesn't work in native apps
+ https://bugs.webkit.org/show_bug.cgi?id=212122
+ <rdar://problem/54560875>
+
+ Reviewed by Wenson Hsieh.
+
+ * Shared/WebsitePoliciesData.cpp:
+ (WebKit::WebsitePoliciesData::encode const):
+ (WebKit::WebsitePoliciesData::decode):
+ (WebKit::WebsitePoliciesData::applyToDocumentLoader):
+ * Shared/WebsitePoliciesData.h:
+ * UIProcess/API/APIWebsitePolicies.cpp:
+ (API::WebsitePolicies::copy const):
+ (API::WebsitePolicies::data):
+ * UIProcess/API/APIWebsitePolicies.h:
+ * UIProcess/ios/WebPageProxyIOS.mm:
+ (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies):
+
2020-05-20 Kate Cheney <[email protected]>
REGRESSION (r261892) [ Mac Debug ] 4 API tests failing related to ResourceLoadStatistics
Modified: trunk/Source/WebKit/Shared/WebsitePoliciesData.cpp (261939 => 261940)
--- trunk/Source/WebKit/Shared/WebsitePoliciesData.cpp 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebKit/Shared/WebsitePoliciesData.cpp 2020-05-20 19:19:39 UTC (rev 261940)
@@ -54,6 +54,7 @@
encoder << allowContentChangeObserverQuirk;
encoder << allowsContentJavaScript;
encoder << mouseEventPolicy;
+ encoder << idempotentModeAutosizingOnlyHonorsPercentages;
}
Optional<WebsitePoliciesData> WebsitePoliciesData::decode(IPC::Decoder& decoder)
@@ -140,6 +141,11 @@
if (!mouseEventPolicy)
return WTF::nullopt;
+ Optional<bool> idempotentModeAutosizingOnlyHonorsPercentages;
+ decoder >> idempotentModeAutosizingOnlyHonorsPercentages;
+ if (!idempotentModeAutosizingOnlyHonorsPercentages)
+ return WTF::nullopt;
+
return { {
WTFMove(*contentBlockersEnabled),
WTFMove(*allowedAutoplayQuirks),
@@ -159,6 +165,7 @@
WTFMove(*allowContentChangeObserverQuirk),
WTFMove(*allowsContentJavaScript),
WTFMove(*mouseEventPolicy),
+ WTFMove(*idempotentModeAutosizingOnlyHonorsPercentages),
} };
}
@@ -281,6 +288,7 @@
}
documentLoader.setAllowContentChangeObserverQuirk(websitePolicies.allowContentChangeObserverQuirk);
+ documentLoader.setIdempotentModeAutosizingOnlyHonorsPercentages(websitePolicies.idempotentModeAutosizingOnlyHonorsPercentages);
auto* frame = documentLoader.frame();
if (!frame)
Modified: trunk/Source/WebKit/Shared/WebsitePoliciesData.h (261939 => 261940)
--- trunk/Source/WebKit/Shared/WebsitePoliciesData.h 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebKit/Shared/WebsitePoliciesData.h 2020-05-20 19:19:39 UTC (rev 261940)
@@ -70,6 +70,7 @@
bool allowContentChangeObserverQuirk { false };
WebCore::AllowsContentJavaScript allowsContentJavaScript { WebCore::AllowsContentJavaScript::Yes };
WebCore::MouseEventPolicy mouseEventPolicy { WebCore::MouseEventPolicy::Default };
+ bool idempotentModeAutosizingOnlyHonorsPercentages { false };
void encode(IPC::Encoder&) const;
static Optional<WebsitePoliciesData> decode(IPC::Decoder&);
Modified: trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp (261939 => 261940)
--- trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp 2020-05-20 19:19:39 UTC (rev 261940)
@@ -56,6 +56,7 @@
policies->setAllowContentChangeObserverQuirk(m_allowContentChangeObserverQuirk);
policies->setWebsiteDataStore(m_websiteDataStore.get());
policies->setUserContentController(m_userContentController.get());
+ policies->setIdempotentModeAutosizingOnlyHonorsPercentages(m_idempotentModeAutosizingOnlyHonorsPercentages);
Vector<WebCore::HTTPHeaderField> legacyCustomHeaderFields;
legacyCustomHeaderFields.reserveInitialCapacity(m_legacyCustomHeaderFields.size());
@@ -116,7 +117,8 @@
m_legacyOverflowScrollingTouchPolicy,
m_allowContentChangeObserverQuirk,
m_allowsContentJavaScript,
- m_mouseEventPolicy
+ m_mouseEventPolicy,
+ m_idempotentModeAutosizingOnlyHonorsPercentages
};
}
Modified: trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h (261939 => 261940)
--- trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h 2020-05-20 19:19:39 UTC (rev 261940)
@@ -128,6 +128,9 @@
WebCore::MouseEventPolicy mouseEventPolicy() const { return m_mouseEventPolicy; }
void setMouseEventPolicy(WebCore::MouseEventPolicy policy) { m_mouseEventPolicy = policy; }
+ bool idempotentModeAutosizingOnlyHonorsPercentages() const { return m_idempotentModeAutosizingOnlyHonorsPercentages; }
+ void setIdempotentModeAutosizingOnlyHonorsPercentages(bool idempotentModeAutosizingOnlyHonorsPercentages) { m_idempotentModeAutosizingOnlyHonorsPercentages = idempotentModeAutosizingOnlyHonorsPercentages; }
+
private:
bool m_contentBlockersEnabled { true };
OptionSet<WebKit::WebsiteAutoplayQuirk> m_allowedAutoplayQuirks;
@@ -153,6 +156,7 @@
bool m_allowContentChangeObserverQuirk { false };
WebCore::AllowsContentJavaScript m_allowsContentJavaScript { WebCore::AllowsContentJavaScript::Yes };
WebCore::MouseEventPolicy m_mouseEventPolicy { WebCore::MouseEventPolicy::Default };
+ bool m_idempotentModeAutosizingOnlyHonorsPercentages { false };
};
} // namespace API
Modified: trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm (261939 => 261940)
--- trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1511,6 +1511,7 @@
if (!useDesktopBrowsingMode) {
policies.setAllowContentChangeObserverQuirk(true);
+ policies.setIdempotentModeAutosizingOnlyHonorsPercentages(true);
return WebContentMode::Mobile;
}
Modified: trunk/Tools/ChangeLog (261939 => 261940)
--- trunk/Tools/ChangeLog 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Tools/ChangeLog 2020-05-20 19:19:39 UTC (rev 261940)
@@ -1,3 +1,15 @@
+2020-05-20 Myles C. Maxfield <[email protected]>
+
+ [iPadOS] -webkit-text-size-adjust:percentage doesn't work in native apps
+ https://bugs.webkit.org/show_bug.cgi?id=212122
+ <rdar://problem/54560875>
+
+ Reviewed by Wenson Hsieh.
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/Tests/WebKit/idempotent-mode-autosizing-only-honors-percentages.html: Added.
+ * TestWebKitAPI/ios/PreferredContentMode.mm:
+
2020-05-20 Lauro Moura <[email protected]>
[WPE][WebDriver] Allow subviews to create new views
Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (261939 => 261940)
--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2020-05-20 19:19:39 UTC (rev 261940)
@@ -109,6 +109,7 @@
1C90420C2326E03C00BEF91E /* SelectionByWord.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C90420B2326E03C00BEF91E /* SelectionByWord.mm */; };
1C9EB8411E380DA1005C6442 /* ComplexTextController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C9EB8401E380DA1005C6442 /* ComplexTextController.cpp */; };
1CACADA1230620AE0007D54C /* WKWebViewOpaque.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CACADA0230620AD0007D54C /* WKWebViewOpaque.mm */; };
+ 1CC80CEA2474F249004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 1CC80CE92474F1F7004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html */; };
1CE6FAC32320267C00E48F6E /* rich-color-filtered.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 1CE6FAC12320264F00E48F6E /* rich-color-filtered.html */; };
1CF59AE221E68925006E37EC /* ForceLightAppearanceInBundle_Bundle.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CF59AE021E68925006E37EC /* ForceLightAppearanceInBundle_Bundle.mm */; };
1CF59AE321E68932006E37EC /* ForceLightAppearanceInBundle.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CF59ADF21E68925006E37EC /* ForceLightAppearanceInBundle.mm */; };
@@ -1369,6 +1370,7 @@
5110FCF11E01CD64006F8D0B /* IDBIndexUpgradeToV2.html in Copy Resources */,
937B569E23CD23DB002AE640 /* IDBObjectStoreInfoUpgrade.sqlite3 in Copy Resources */,
93BCBC8423CC6F4400CA2221 /* IDBObjectStoreInfoUpgradeToV2.html in Copy Resources */,
+ 1CC80CEA2474F249004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html in Copy Resources */,
F41AB9A41EF4696B0083FA08 /* image-and-contenteditable.html in Copy Resources */,
F4E0A2B42122402B00AF7C7F /* image-and-file-upload.html in Copy Resources */,
F41AB9A51EF4696B0083FA08 /* image-and-textarea.html in Copy Resources */,
@@ -1692,6 +1694,7 @@
1C9EB8401E380DA1005C6442 /* ComplexTextController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComplexTextController.cpp; sourceTree = "<group>"; };
1CACADA0230620AD0007D54C /* WKWebViewOpaque.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewOpaque.mm; sourceTree = "<group>"; };
1CB9BC371A67482300FE5678 /* WeakPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WeakPtr.cpp; sourceTree = "<group>"; };
+ 1CC80CE92474F1F7004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "idempotent-mode-autosizing-only-honors-percentages.html"; sourceTree = "<group>"; };
1CE6FAC12320264F00E48F6E /* rich-color-filtered.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "rich-color-filtered.html"; sourceTree = "<group>"; };
1CF0D3781BBF2F3D00B4EF54 /* WKRetainPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKRetainPtr.cpp; sourceTree = "<group>"; };
1CF59ADF21E68925006E37EC /* ForceLightAppearanceInBundle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ForceLightAppearanceInBundle.mm; sourceTree = "<group>"; };
@@ -4106,6 +4109,7 @@
4A410F4D19AF7BEF002EBAB5 /* getUserMedia.html */,
4A410F4D19AF7BEF002EBAC5 /* getUserMediaAudioVideoCapture.html */,
BCBD372E125ABBE600D2C29F /* icon.png */,
+ 1CC80CE92474F1F7004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html */,
CE3524F51B142BBB0028A7C5 /* input-focus-blur.html */,
C9B4AD2B1ECA6F7600F5FEA0 /* js-autoplay-audio.html */,
C99B675B1E3971FC00FC6C80 /* js-play-with-controls.html */,
@@ -4700,7 +4704,6 @@
7C83DED41D0A590C00FEBCF3 /* HashSet.cpp in Sources */,
7C8BFF7123C0107A00C009B3 /* HexNumber.cpp in Sources */,
7C83DEE01D0A590C00FEBCF3 /* IntegerToStringConversion.cpp in Sources */,
- FE2BCDC72470FDA300DEC33B /* StdLibExtras.cpp in Sources */,
53FCDE6B229EFFB900598ECF /* IsoHeap.cpp in Sources */,
7CEB62AB223609DE0069CBB0 /* IteratorRange.cpp in Sources */,
7A0509411FB9F06400B33FB8 /* JSONValue.cpp in Sources */,
@@ -4740,6 +4743,7 @@
7C83DF3D1D0A590C00FEBCF3 /* SetForScope.cpp in Sources */,
7C83DF2A1D0A590C00FEBCF3 /* SHA1.cpp in Sources */,
E373D7911F2CF35200C6FAAF /* Signals.cpp in Sources */,
+ FE2BCDC72470FDA300DEC33B /* StdLibExtras.cpp in Sources */,
7C83DF321D0A590C00FEBCF3 /* StringBuilder.cpp in Sources */,
7CD4C26E1E2C0E6E00929470 /* StringConcatenate.cpp in Sources */,
7C83DF361D0A590C00FEBCF3 /* StringHasher.cpp in Sources */,
Added: trunk/Tools/TestWebKitAPI/Tests/WebKit/idempotent-mode-autosizing-only-honors-percentages.html (0 => 261940)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit/idempotent-mode-autosizing-only-honors-percentages.html (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit/idempotent-mode-autosizing-only-honors-percentages.html 2020-05-20 19:19:39 UTC (rev 261940)
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+function run1() {
+ let target = document.getElementById("target");
+ target.offsetWidth;
+ let result = Number.parseInt(window.getComputedStyle(target).getPropertyValue("font-size"));
+ return result;
+}
+function run2() {
+ let target = document.getElementById("target2");
+ target.offsetWidth;
+ let result = Number.parseInt(window.getComputedStyle(target).getPropertyValue("font-size"));
+ return result;
+}
+function run3() {
+ let target = document.getElementById("target3");
+ target.offsetWidth;
+ let result = Number.parseInt(window.getComputedStyle(target).getPropertyValue("font-size"));
+ return result;
+}
+function run4() {
+ let target = document.getElementById("target4");
+ target.offsetWidth;
+ let result = Number.parseInt(window.getComputedStyle(target).getPropertyValue("font-size"));
+ return result;
+}
+</script>
+</head>
+<body>
+<div style="background: green;"><span id="target" style="font-size: 12px;">Test</span></div>
+<div style="background: green;"><span style="font-size: 12px;">Test</span></div>
+<div style="background: green;"><span id="target2" style="font-size: 6px;">Test</span></div>
+<div style="background: green;"><span style="font-size: 6px;">Test</span></div>
+<div style="background: green;"><span id="target3" style="-webkit-text-size-adjust: none; font-size: 6px;">Test</span></div>
+<div style="background: green;"><span style="font-size: 6px;">Test</span></div>
+<div style="background: green;"><span id="target4" style="-webkit-text-size-adjust: 200%; font-size: 6px;">Test</span></div>
+<div style="background: green;"><span style="font-size: 6px;">Test</span></div>
+</body>
+</html>
Modified: trunk/Tools/TestWebKitAPI/ios/PreferredContentMode.mm (261939 => 261940)
--- trunk/Tools/TestWebKitAPI/ios/PreferredContentMode.mm 2020-05-20 18:49:58 UTC (rev 261939)
+++ trunk/Tools/TestWebKitAPI/ios/PreferredContentMode.mm 2020-05-20 19:19:39 UTC (rev 261940)
@@ -435,6 +435,19 @@
}
}
+TEST(PreferredContentMode, IdempotentModeAutosizingOnlyHonorsPercentages)
+{
+ IPadUserInterfaceSwizzler iPadUserInterface;
+ {
+ auto [webView, delegate] = setUpWebViewForPreferredContentModeTesting<WKWebView>(WKContentModeMobile);
+ [webView loadTestPageNamed:@"idempotent-mode-autosizing-only-honors-percentages" andExpectEffectiveContentMode:WKContentModeMobile withPolicyDecisionHandler:nil];
+ EXPECT_EQ(static_cast<NSNumber *>([webView objectByEvaluatingJavaScript:@"run1()"]).intValue, 12);
+ EXPECT_EQ(static_cast<NSNumber *>([webView objectByEvaluatingJavaScript:@"run2()"]).intValue, 6);
+ EXPECT_EQ(static_cast<NSNumber *>([webView objectByEvaluatingJavaScript:@"run3()"]).intValue, 6);
+ EXPECT_EQ(static_cast<NSNumber *>([webView objectByEvaluatingJavaScript:@"run4()"]).intValue, 12);
+ }
+}
+
} // namespace TestWebKitAPI
#endif // PLATFORM(IOS_FAMILY)