Changeset 261940 in webkit
- Timestamp:
- May 20, 2020 12:19:39 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r261938 r261940 1 2020-05-20 Myles C. Maxfield <mmaxfield@apple.com> 2 3 [iPadOS] -webkit-text-size-adjust:percentage doesn't work in native apps 4 https://bugs.webkit.org/show_bug.cgi?id=212122 5 <rdar://problem/54560875> 6 7 Reviewed by Wenson Hsieh. 8 9 Update existing idempotent autosizing tests to force desktop mode. 10 Also add idempotent-percentage.html which doesn't force any mode. 11 12 * fast/text-autosizing/ios/idempotentmode/css-exposure.html: 13 * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html: 14 * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidate-special-cases.html: 15 * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html: 16 * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-identity.html: 17 * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html: 18 * fast/text-autosizing/ios/idempotentmode/idempotent-autosizing.html: 19 * fast/text-autosizing/ios/idempotentmode/idempotent-percentage-expected.txt: Added. 20 * fast/text-autosizing/ios/idempotentmode/idempotent-percentage.html: Added. 21 * fast/text-autosizing/ios/idempotentmode/line-height-boosting.html: 22 * fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html: 23 1 24 2020-05-20 Ryan Haddad <ryanhaddad@apple.com> 2 25 -
trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/css-exposure.html
r245838 r261940 1 <!DOCTYPE html> 1 <!DOCTYPE html><!-- webkit-test-runner [ contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html
r246781 r261940 1 <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true contentMode= mobile] -->1 <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidate-special-cases.html
r248112 r261940 1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-candidates.html
r247484 r261940 1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-identity.html
r244682 r261940 1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-reaches-stable-state.html
r260147 r261940 1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing.html
r244682 r261940 1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/line-height-boosting.html
r249686 r261940 1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html
r257651 r261940 1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->1 <!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/Source/WebCore/ChangeLog
r261939 r261940 1 2020-05-20 Myles C. Maxfield <mmaxfield@apple.com> 2 3 [iPadOS] -webkit-text-size-adjust:percentage doesn't work 4 https://bugs.webkit.org/show_bug.cgi?id=212122 5 <rdar://problem/54560875> 6 7 Reviewed by Wenson Hsieh. 8 9 We've gotten many bug reports that -webkit-text-size-adjust:X% no longer works in 10 WebKit on iPads. We don't want to just start honoring the value, because our 11 testing indicates that, with desktop-class browsing on iPad, more sites work better 12 when we don't honor percentages. However, if Safari is using the mobile content mode, 13 or if a native app has local content, it should be possible to get the old behavior 14 of honoring percentages. 15 16 This patch adds a new Setting, idempotentModeAutosizingOnlyHonorsPercentages, which 17 is hooked up to the desktop-class browsing feature. When 18 WebPageProxy::effectiveContentModeAfterAdjustingPolicies() determines that the 19 WebContentMode::Mobile mode should be used, it sets the new setting, which 20 causes idempotent text autosizing mode to have the same behavior that WKWebViews 21 on iPadOS used to have: -w-t-s-a:auto and -w-t-s-a:none have no effect, but 22 -w-t-s-a:X% is honored. This affects both Safari and WKWebView apps. 23 24 If a native app wants the old behavior, they can set 25 WKWebpagePreferences.preferredContentMode = WKContentModeMobile to force the old 26 iPad behavior. It's expected that apps with legacy content would be doing this 27 anyway. 28 29 Tests: fast/text-autosizing/ios/idempotentmode/idempotent-percentage.html 30 TestWebKitAPI.PreferredContentMode.IdempotentModeAutosizingOnlyHonorsPercentages 31 32 * loader/DocumentLoader.cpp: 33 (WebCore::DocumentLoader::applyPoliciesToSettings): 34 * loader/DocumentLoader.h: 35 (WebCore::DocumentLoader::setIdempotentModeAutosizingOnlyHonorsPercentages): 36 (WebCore::DocumentLoader::idempotentModeAutosizingOnlyHonorsPercentages const): 37 * page/Settings.yaml: 38 * style/StyleAdjuster.cpp: 39 (WebCore::Style::Adjuster::adjustmentForTextAutosizing): 40 * style/StyleBuilderCustom.h: 41 (WebCore::Style::computeBaseSpecifiedFontSize): 42 * style/StyleBuilderState.cpp: 43 (WebCore::Style::BuilderState::updateFontForTextSizeAdjust): 44 1 45 2020-05-20 ChangSeok Oh <changseok@webkit.org> 2 46 -
trunk/Source/WebCore/loader/DocumentLoader.cpp
r261597 r261940 1240 1240 m_frame->settings().setMediaSourceEnabled(m_mediaSourcePolicy == MediaSourcePolicy::Default ? Settings::platformDefaultMediaSourceEnabled() : m_mediaSourcePolicy == MediaSourcePolicy::Enable); 1241 1241 #endif 1242 #if ENABLE(TEXT_AUTOSIZING) 1243 m_frame->settings().setIdempotentModeAutosizingOnlyHonorsPercentages(m_idempotentModeAutosizingOnlyHonorsPercentages); 1244 #endif 1242 1245 } 1243 1246 -
trunk/Source/WebCore/loader/DocumentLoader.h
r261640 r261940 415 415 bool allowContentChangeObserverQuirk() const { return m_allowContentChangeObserverQuirk; } 416 416 417 void setIdempotentModeAutosizingOnlyHonorsPercentages(bool idempotentModeAutosizingOnlyHonorsPercentages) { m_idempotentModeAutosizingOnlyHonorsPercentages = idempotentModeAutosizingOnlyHonorsPercentages; } 418 bool idempotentModeAutosizingOnlyHonorsPercentages() const { return m_idempotentModeAutosizingOnlyHonorsPercentages; } 419 417 420 #if ENABLE(SERVICE_WORKER) 418 421 WEBCORE_EXPORT bool setControllingServiceWorkerRegistration(ServiceWorkerRegistrationData&&); … … 631 634 String m_customUserAgentAsSiteSpecificQuirks; 632 635 bool m_allowContentChangeObserverQuirk { false }; 636 bool m_idempotentModeAutosizingOnlyHonorsPercentages { false }; 633 637 String m_customNavigatorPlatform; 634 638 bool m_userContentExtensionsEnabled { true }; -
trunk/Source/WebCore/page/Settings.yaml
r260753 r261940 472 472 onChange: setNeedsRecalcStyleInAllFrames 473 473 conditional: TEXT_AUTOSIZING 474 idempotentModeAutosizingOnlyHonorsPercentages: 475 initial: false 476 onChange: setNeedsRecalcStyleInAllFrames 477 conditional: TEXT_AUTOSIZING 474 478 475 479 subpixelAntialiasedLayerTextEnabled: -
trunk/Source/WebCore/style/StyleAdjuster.cpp
r261820 r261940 638 638 639 639 auto& document = element.document(); 640 if (!document.settings().textAutosizingEnabled() || !document.settings().textAutosizingUsesIdempotentMode()) 640 if (!document.settings().textAutosizingEnabled() 641 || !document.settings().textAutosizingUsesIdempotentMode() 642 || document.settings().idempotentModeAutosizingOnlyHonorsPercentages()) 641 643 return adjustmentForTextAutosizing; 642 644 -
trunk/Source/WebCore/style/StyleBuilderCustom.h
r259703 r261940 622 622 result *= frame->textZoomFactor(); 623 623 result *= style.effectiveZoom(); 624 if (percentageAutosizingEnabled && !document.settings().textAutosizingUsesIdempotentMode()) 624 if (percentageAutosizingEnabled 625 && (!document.settings().textAutosizingUsesIdempotentMode() || document.settings().idempotentModeAutosizingOnlyHonorsPercentages())) 625 626 result *= style.textSizeAdjust().multiplier(); 626 627 return result; -
trunk/Source/WebCore/style/StyleBuilderState.cpp
r260707 r261940 376 376 if (m_style.textSizeAdjust().isAuto() 377 377 || !document().settings().textAutosizingEnabled() 378 || (document().settings().textAutosizingUsesIdempotentMode() && !m_style.textSizeAdjust().isNone())) 378 || (document().settings().textAutosizingUsesIdempotentMode() 379 && !m_style.textSizeAdjust().isNone() 380 && !document().settings().idempotentModeAutosizingOnlyHonorsPercentages())) 379 381 return; 380 382 -
trunk/Source/WebKit/ChangeLog
r261935 r261940 1 2020-05-20 Myles C. Maxfield <mmaxfield@apple.com> 2 3 [iPadOS] -webkit-text-size-adjust:percentage doesn't work in native apps 4 https://bugs.webkit.org/show_bug.cgi?id=212122 5 <rdar://problem/54560875> 6 7 Reviewed by Wenson Hsieh. 8 9 * Shared/WebsitePoliciesData.cpp: 10 (WebKit::WebsitePoliciesData::encode const): 11 (WebKit::WebsitePoliciesData::decode): 12 (WebKit::WebsitePoliciesData::applyToDocumentLoader): 13 * Shared/WebsitePoliciesData.h: 14 * UIProcess/API/APIWebsitePolicies.cpp: 15 (API::WebsitePolicies::copy const): 16 (API::WebsitePolicies::data): 17 * UIProcess/API/APIWebsitePolicies.h: 18 * UIProcess/ios/WebPageProxyIOS.mm: 19 (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): 20 1 21 2020-05-20 Kate Cheney <katherine_cheney@apple.com> 2 22 -
trunk/Source/WebKit/Shared/WebsitePoliciesData.cpp
r261640 r261940 55 55 encoder << allowsContentJavaScript; 56 56 encoder << mouseEventPolicy; 57 encoder << idempotentModeAutosizingOnlyHonorsPercentages; 57 58 } 58 59 … … 139 140 decoder >> mouseEventPolicy; 140 141 if (!mouseEventPolicy) 142 return WTF::nullopt; 143 144 Optional<bool> idempotentModeAutosizingOnlyHonorsPercentages; 145 decoder >> idempotentModeAutosizingOnlyHonorsPercentages; 146 if (!idempotentModeAutosizingOnlyHonorsPercentages) 141 147 return WTF::nullopt; 142 148 … … 160 166 WTFMove(*allowsContentJavaScript), 161 167 WTFMove(*mouseEventPolicy), 168 WTFMove(*idempotentModeAutosizingOnlyHonorsPercentages), 162 169 } }; 163 170 } … … 282 289 283 290 documentLoader.setAllowContentChangeObserverQuirk(websitePolicies.allowContentChangeObserverQuirk); 291 documentLoader.setIdempotentModeAutosizingOnlyHonorsPercentages(websitePolicies.idempotentModeAutosizingOnlyHonorsPercentages); 284 292 285 293 auto* frame = documentLoader.frame(); -
trunk/Source/WebKit/Shared/WebsitePoliciesData.h
r261640 r261940 71 71 WebCore::AllowsContentJavaScript allowsContentJavaScript { WebCore::AllowsContentJavaScript::Yes }; 72 72 WebCore::MouseEventPolicy mouseEventPolicy { WebCore::MouseEventPolicy::Default }; 73 bool idempotentModeAutosizingOnlyHonorsPercentages { false }; 73 74 74 75 void encode(IPC::Encoder&) const; -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp
r261640 r261940 57 57 policies->setWebsiteDataStore(m_websiteDataStore.get()); 58 58 policies->setUserContentController(m_userContentController.get()); 59 policies->setIdempotentModeAutosizingOnlyHonorsPercentages(m_idempotentModeAutosizingOnlyHonorsPercentages); 59 60 60 61 Vector<WebCore::HTTPHeaderField> legacyCustomHeaderFields; … … 117 118 m_allowContentChangeObserverQuirk, 118 119 m_allowsContentJavaScript, 119 m_mouseEventPolicy 120 m_mouseEventPolicy, 121 m_idempotentModeAutosizingOnlyHonorsPercentages 120 122 }; 121 123 } -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h
r261640 r261940 129 129 void setMouseEventPolicy(WebCore::MouseEventPolicy policy) { m_mouseEventPolicy = policy; } 130 130 131 bool idempotentModeAutosizingOnlyHonorsPercentages() const { return m_idempotentModeAutosizingOnlyHonorsPercentages; } 132 void setIdempotentModeAutosizingOnlyHonorsPercentages(bool idempotentModeAutosizingOnlyHonorsPercentages) { m_idempotentModeAutosizingOnlyHonorsPercentages = idempotentModeAutosizingOnlyHonorsPercentages; } 133 131 134 private: 132 135 bool m_contentBlockersEnabled { true }; … … 154 157 WebCore::AllowsContentJavaScript m_allowsContentJavaScript { WebCore::AllowsContentJavaScript::Yes }; 155 158 WebCore::MouseEventPolicy m_mouseEventPolicy { WebCore::MouseEventPolicy::Default }; 159 bool m_idempotentModeAutosizingOnlyHonorsPercentages { false }; 156 160 }; 157 161 -
trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
r261776 r261940 1512 1512 if (!useDesktopBrowsingMode) { 1513 1513 policies.setAllowContentChangeObserverQuirk(true); 1514 policies.setIdempotentModeAutosizingOnlyHonorsPercentages(true); 1514 1515 return WebContentMode::Mobile; 1515 1516 } -
trunk/Tools/ChangeLog
r261925 r261940 1 2020-05-20 Myles C. Maxfield <mmaxfield@apple.com> 2 3 [iPadOS] -webkit-text-size-adjust:percentage doesn't work in native apps 4 https://bugs.webkit.org/show_bug.cgi?id=212122 5 <rdar://problem/54560875> 6 7 Reviewed by Wenson Hsieh. 8 9 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 10 * TestWebKitAPI/Tests/WebKit/idempotent-mode-autosizing-only-honors-percentages.html: Added. 11 * TestWebKitAPI/ios/PreferredContentMode.mm: 12 1 13 2020-05-20 Lauro Moura <lmoura@igalia.com> 2 14 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r261897 r261940 110 110 1C9EB8411E380DA1005C6442 /* ComplexTextController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C9EB8401E380DA1005C6442 /* ComplexTextController.cpp */; }; 111 111 1CACADA1230620AE0007D54C /* WKWebViewOpaque.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CACADA0230620AD0007D54C /* WKWebViewOpaque.mm */; }; 112 1CC80CEA2474F249004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 1CC80CE92474F1F7004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html */; }; 112 113 1CE6FAC32320267C00E48F6E /* rich-color-filtered.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 1CE6FAC12320264F00E48F6E /* rich-color-filtered.html */; }; 113 114 1CF59AE221E68925006E37EC /* ForceLightAppearanceInBundle_Bundle.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CF59AE021E68925006E37EC /* ForceLightAppearanceInBundle_Bundle.mm */; }; … … 1370 1371 937B569E23CD23DB002AE640 /* IDBObjectStoreInfoUpgrade.sqlite3 in Copy Resources */, 1371 1372 93BCBC8423CC6F4400CA2221 /* IDBObjectStoreInfoUpgradeToV2.html in Copy Resources */, 1373 1CC80CEA2474F249004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html in Copy Resources */, 1372 1374 F41AB9A41EF4696B0083FA08 /* image-and-contenteditable.html in Copy Resources */, 1373 1375 F4E0A2B42122402B00AF7C7F /* image-and-file-upload.html in Copy Resources */, … … 1693 1695 1CACADA0230620AD0007D54C /* WKWebViewOpaque.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewOpaque.mm; sourceTree = "<group>"; }; 1694 1696 1CB9BC371A67482300FE5678 /* WeakPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WeakPtr.cpp; sourceTree = "<group>"; }; 1697 1CC80CE92474F1F7004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "idempotent-mode-autosizing-only-honors-percentages.html"; sourceTree = "<group>"; }; 1695 1698 1CE6FAC12320264F00E48F6E /* rich-color-filtered.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "rich-color-filtered.html"; sourceTree = "<group>"; }; 1696 1699 1CF0D3781BBF2F3D00B4EF54 /* WKRetainPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKRetainPtr.cpp; sourceTree = "<group>"; }; … … 4107 4110 4A410F4D19AF7BEF002EBAC5 /* getUserMediaAudioVideoCapture.html */, 4108 4111 BCBD372E125ABBE600D2C29F /* icon.png */, 4112 1CC80CE92474F1F7004DC489 /* idempotent-mode-autosizing-only-honors-percentages.html */, 4109 4113 CE3524F51B142BBB0028A7C5 /* input-focus-blur.html */, 4110 4114 C9B4AD2B1ECA6F7600F5FEA0 /* js-autoplay-audio.html */, … … 4701 4705 7C8BFF7123C0107A00C009B3 /* HexNumber.cpp in Sources */, 4702 4706 7C83DEE01D0A590C00FEBCF3 /* IntegerToStringConversion.cpp in Sources */, 4703 FE2BCDC72470FDA300DEC33B /* StdLibExtras.cpp in Sources */,4704 4707 53FCDE6B229EFFB900598ECF /* IsoHeap.cpp in Sources */, 4705 4708 7CEB62AB223609DE0069CBB0 /* IteratorRange.cpp in Sources */, … … 4741 4744 7C83DF2A1D0A590C00FEBCF3 /* SHA1.cpp in Sources */, 4742 4745 E373D7911F2CF35200C6FAAF /* Signals.cpp in Sources */, 4746 FE2BCDC72470FDA300DEC33B /* StdLibExtras.cpp in Sources */, 4743 4747 7C83DF321D0A590C00FEBCF3 /* StringBuilder.cpp in Sources */, 4744 4748 7CD4C26E1E2C0E6E00929470 /* StringConcatenate.cpp in Sources */, -
trunk/Tools/TestWebKitAPI/ios/PreferredContentMode.mm
r260449 r261940 436 436 } 437 437 438 TEST(PreferredContentMode, IdempotentModeAutosizingOnlyHonorsPercentages) 439 { 440 IPadUserInterfaceSwizzler iPadUserInterface; 441 { 442 auto [webView, delegate] = setUpWebViewForPreferredContentModeTesting<WKWebView>(WKContentModeMobile); 443 [webView loadTestPageNamed:@"idempotent-mode-autosizing-only-honors-percentages" andExpectEffectiveContentMode:WKContentModeMobile withPolicyDecisionHandler:nil]; 444 EXPECT_EQ(static_cast<NSNumber *>([webView objectByEvaluatingJavaScript:@"run1()"]).intValue, 12); 445 EXPECT_EQ(static_cast<NSNumber *>([webView objectByEvaluatingJavaScript:@"run2()"]).intValue, 6); 446 EXPECT_EQ(static_cast<NSNumber *>([webView objectByEvaluatingJavaScript:@"run3()"]).intValue, 6); 447 EXPECT_EQ(static_cast<NSNumber *>([webView objectByEvaluatingJavaScript:@"run4()"]).intValue, 12); 448 } 449 } 450 438 451 } // namespace TestWebKitAPI 439 452
Note: See TracChangeset
for help on using the changeset viewer.