Changeset 246118 in webkit
- Timestamp:
- Jun 5, 2019, 11:23:06 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 1 deleted
- 40 edited
- 1 moved
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/media/ios/ipad/enable-MediaSource-API-in-modern-compatibility-mode.html (modified) (1 diff)
-
LayoutTests/fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode-expected.html (modified) (1 diff)
-
LayoutTests/fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode.html (modified) (1 diff)
-
LayoutTests/media/modern-media-controls/media-controller/ios/media-controller-ios-layout-traits-modern-compatibility-mode.html (modified) (1 diff)
-
LayoutTests/platform/ipad/fast/css/webkit-overflow-scrolling-parsing-modern-compatibility-mode.html (modified) (1 diff)
-
LayoutTests/platform/ipad/fast/viewport/empty-meta.html (modified) (1 diff)
-
LayoutTests/platform/ipad/fast/viewport/viewport-unchanged-by-minimum-effective-width-if-not-ignore-meta-viewport.html (modified) (1 diff)
-
LayoutTests/platform/ipad/media/modern-media-controls/media-documents/media-document-audio-ios-sizing.html (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Modules/modern-media-controls/media/media-controller.js (modified) (1 diff)
-
Source/WebCore/PAL/ChangeLog (modified) (1 diff)
-
Source/WebCore/PAL/pal/spi/ios/MobileGestaltSPI.h (modified) (2 diffs)
-
Source/WebCore/page/Quirks.cpp (modified) (1 diff)
-
Source/WebCore/page/SettingsBase.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderThemeIOS.mm (modified) (1 diff)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/Shared/API/Cocoa/WebKit.apinotes (modified) (1 diff)
-
Source/WebKit/Shared/WebContentMode.h (moved) (moved from trunk/Source/WebKit/Shared/WebCompatibilityMode.h ) (1 diff)
-
Source/WebKit/Shared/WebPreferences.yaml (modified) (1 diff)
-
Source/WebKit/UIProcess/API/APINavigation.h (modified) (3 diffs)
-
Source/WebKit/UIProcess/API/APINavigationClient.h (modified) (1 diff)
-
Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/APIWebsitePolicies.h (modified) (4 diffs)
-
Source/WebKit/UIProcess/API/Cocoa/WKNavigation.h (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKNavigation.mm (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.mm (modified) (3 diffs)
-
Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h (modified) (1 diff)
-
Source/WebKit/UIProcess/Cocoa/NavigationState.h (modified) (1 diff)
-
Source/WebKit/UIProcess/Cocoa/NavigationState.mm (modified) (1 diff)
-
Source/WebKit/UIProcess/WebPageProxy.cpp (modified) (2 diffs)
-
Source/WebKit/UIProcess/WebPageProxy.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm (modified) (2 diffs)
-
Source/WebKit/WebKit.xcodeproj/project.pbxproj (modified) (6 diffs)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (modified) (4 diffs)
-
Tools/TestWebKitAPI/ios/PreferredCompatibilityMode.mm (deleted)
-
Tools/TestWebKitAPI/ios/PreferredContentMode.mm (added)
-
Tools/WebKitTestRunner/TestController.cpp (modified) (1 diff)
-
Tools/WebKitTestRunner/TestController.h (modified) (1 diff)
-
Tools/WebKitTestRunner/TestOptions.h (modified) (3 diffs)
-
Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r246117 r246118 1 2019-06-05 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 Upstream content mode support into open source from WebKitAdditions 4 https://bugs.webkit.org/show_bug.cgi?id=198484 5 <rdar://problem/51355671> 6 7 Reviewed by Andy Estes. 8 9 Explicitly opt a few tests into desktop or mobile content mode. 10 11 * fast/media/ios/ipad/enable-MediaSource-API-in-modern-compatibility-mode.html: 12 * fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode-expected.html: 13 * fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode.html: 14 * media/modern-media-controls/media-controller/ios/media-controller-ios-layout-traits-modern-compatibility-mode.html: 15 * platform/ipad/fast/css/webkit-overflow-scrolling-parsing-modern-compatibility-mode.html: 16 * platform/ipad/fast/viewport/empty-meta.html: 17 * platform/ipad/fast/viewport/viewport-unchanged-by-minimum-effective-width-if-not-ignore-meta-viewport.html: 18 * platform/ipad/media/modern-media-controls/media-documents/media-document-audio-ios-sizing.html: 19 1 20 2019-06-05 Shawn Roberts <sroberts@apple.com> 2 21 -
trunk/LayoutTests/fast/media/ios/ipad/enable-MediaSource-API-in-modern-compatibility-mode.html
r244197 r246118 1 <!-- webkit-test-runner [ shouldUseModernCompatibilityMode=true] -->1 <!-- webkit-test-runner [ contentMode=desktop ] --> 2 2 <!DOCTYPE html> 3 3 <html> -
trunk/LayoutTests/fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode-expected.html
r245483 r246118 1 <!DOCTYPE html> <!-- webkit-test-runner [ shouldUseModernCompatibilityMode=trueinternal:AsyncOverflowScrollingEnabled=true ] -->1 <!DOCTYPE html> <!-- webkit-test-runner [ contentMode=desktop internal:AsyncOverflowScrollingEnabled=true ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode.html
r245483 r246118 1 <!DOCTYPE html> <!-- webkit-test-runner [ shouldUseModernCompatibilityMode=trueinternal:AsyncOverflowScrollingEnabled=true ] -->1 <!DOCTYPE html> <!-- webkit-test-runner [ contentMode=desktop internal:AsyncOverflowScrollingEnabled=true ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/media/modern-media-controls/media-controller/ios/media-controller-ios-layout-traits-modern-compatibility-mode.html
r244253 r246118 1 <!DOCTYPE html> <!-- webkit-test-runner [ shouldUseModernCompatibilityMode=true] -->1 <!DOCTYPE html> <!-- webkit-test-runner [ contentMode=desktop ] --> 2 2 <script src="../../../../resources/js-test-pre.js"></script> 3 3 <script src="../../resources/media-controls-utils.js" type="text/javascript"></script> -
trunk/LayoutTests/platform/ipad/fast/css/webkit-overflow-scrolling-parsing-modern-compatibility-mode.html
r245483 r246118 1 <!DOCTYPE html> <!-- webkit-test-runner [ shouldUseModernCompatibilityMode=true] -->1 <!DOCTYPE html> <!-- webkit-test-runner [ contentMode=desktop ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/platform/ipad/fast/viewport/empty-meta.html
r240150 r246118 1 <!DOCTYPE html> 1 <!DOCTYPE html> <!-- webkit-test-runner [ contentMode=mobile ] --> 2 2 3 3 <html> -
trunk/LayoutTests/platform/ipad/fast/viewport/viewport-unchanged-by-minimum-effective-width-if-not-ignore-meta-viewport.html
r240150 r246118 1 <!DOCTYPE html> 1 <!DOCTYPE html> <!-- webkit-test-runner [ contentMode=mobile ] --> 2 2 <html> 3 3 <head> -
trunk/LayoutTests/platform/ipad/media/modern-media-controls/media-documents/media-document-audio-ios-sizing.html
r240150 r246118 1 <!DOCTYPE html> <!-- webkit-test-runner [ contentMode=mobile ] --> 1 2 <script src="../../../../../resources/js-test-pre.js"></script> 2 3 <meta name="viewport" content="width=device-width, initial-scale=1"> -
trunk/Source/WebCore/ChangeLog
r246115 r246118 1 2019-06-05 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 Upstream content mode support into open source from WebKitAdditions 4 https://bugs.webkit.org/show_bug.cgi?id=198484 5 <rdar://problem/51355671> 6 7 Reviewed by Andy Estes. 8 9 * Modules/modern-media-controls/media/media-controller.js: 10 (MediaController.prototype.get layoutTraits): 11 12 Adjust modern media controls code to use iOS-style controls on PLATFORM(IOS_FAMILY), instead of depending on the 13 navigator's platform name or the presence of touch events. 14 15 * page/Quirks.cpp: 16 (WebCore::shouldSuppressAutocorrectionAndAutocaptializationInHiddenEditableAreasForHost): 17 (WebCore::shouldEmulateUndoRedoInHiddenEditableAreasForHost): 18 * page/SettingsBase.h: 19 * rendering/RenderThemeIOS.mm: 20 (WebCore::RenderThemeIOS::mediaControlsScript): 21 1 22 2019-06-05 Saam Barati <sbarati@apple.com> 2 23 -
trunk/Source/WebCore/Modules/modern-media-controls/media/media-controller.js
r244259 r246118 100 100 return LayoutTraits.Compact; 101 101 102 // The window.navigator.platform !== "MacIntel" is strictly used for the test infrastructure since touch events are off for open-source bots. 103 let traits = GestureRecognizer.SupportsTouches || window.navigator.platform !== "MacIntel" ? LayoutTraits.iOS : LayoutTraits.macOS; 102 let traits = window.isIOSFamily ? LayoutTraits.iOS : LayoutTraits.macOS; 104 103 if (this.isFullscreen) 105 104 return traits | LayoutTraits.Fullscreen; -
trunk/Source/WebCore/PAL/ChangeLog
r246039 r246118 1 2019-06-05 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 Upstream content mode support into open source from WebKitAdditions 4 https://bugs.webkit.org/show_bug.cgi?id=198484 5 <rdar://problem/51355671> 6 7 Reviewed by Andy Estes. 8 9 Add some new constants to MobileGestaltSPI.h. 10 11 * pal/spi/ios/MobileGestaltSPI.h: 12 1 13 2019-06-03 Don Olmstead <don.olmstead@sony.com> 2 14 -
trunk/Source/WebCore/PAL/pal/spi/ios/MobileGestaltSPI.h
r237266 r246118 39 39 40 40 static const CFStringRef kMGQAppleInternalInstallCapability = CFSTR("apple-internal-install"); 41 static const CFStringRef kMGQMainScreenClass = CFSTR("main-screen-class"); 41 42 static const CFStringRef kMGQMainScreenPitch = CFSTR("main-screen-pitch"); 42 43 static const CFStringRef kMGQMainScreenScale = CFSTR("main-screen-scale"); … … 56 57 MGDeviceClassWatch = 6, 57 58 } MGDeviceClass; 59 60 typedef enum { 61 MGScreenClassPad2 = 4, 62 MGScreenClassPad3 = 6, 63 MGScreenClassPad4 = 7, 64 } MGScreenClass; 58 65 59 66 #endif -
trunk/Source/WebCore/page/Quirks.cpp
r246099 r246118 229 229 } 230 230 231 #if USE(APPLE_INTERNAL_SDK) 232 #import <WebKitAdditions/QuirksAdditions.cpp> 233 #else 234 235 static bool shouldSuppressAutocorrectionAndAutocaptializationInHiddenEditableAreasForHost(const StringView&) 236 { 237 return false; 238 } 239 240 static bool shouldEmulateUndoRedoInHiddenEditableAreasForHost(const StringView&) 241 { 242 return false; 243 } 244 245 #endif 231 static bool shouldSuppressAutocorrectionAndAutocaptializationInHiddenEditableAreasForHost(const StringView& host) 232 { 233 #if PLATFORM(IOS_FAMILY) 234 return equalLettersIgnoringASCIICase(host, "docs.google.com"); 235 #else 236 UNUSED_PARAM(host); 237 return false; 238 #endif 239 } 240 241 static bool shouldEmulateUndoRedoInHiddenEditableAreasForHost(const StringView& host) 242 { 243 #if PLATFORM(IOS_FAMILY) 244 return equalLettersIgnoringASCIICase(host, "docs.google.com"); 245 #else 246 UNUSED_PARAM(host); 247 return false; 248 #endif 249 } 246 250 247 251 bool Quirks::shouldDispatchSyntheticMouseEventsWhenModifyingSelection() const -
trunk/Source/WebCore/page/SettingsBase.h
r246048 r246118 217 217 float m_maxTextAutosizingScaleIncrease { defaultMaxTextAutosizingScaleIncrease }; 218 218 #endif 219 220 #if USE(APPLE_INTERNAL_SDK)221 #include <WebKitAdditions/SettingsAdditions.h>222 #endif223 219 }; 224 220 -
trunk/Source/WebCore/rendering/RenderThemeIOS.mm
r244848 r246118 1393 1393 1394 1394 StringBuilder scriptBuilder; 1395 scriptBuilder.append("window.isIOSFamily = true;"); 1395 1396 scriptBuilder.append([NSString stringWithContentsOfFile:[bundle pathForResource:@"modern-media-controls-localized-strings" ofType:@"js"] encoding:NSUTF8StringEncoding error:nil]); 1396 1397 scriptBuilder.append([NSString stringWithContentsOfFile:[bundle pathForResource:@"modern-media-controls" ofType:@"js" inDirectory:@"modern-media-controls"] encoding:NSUTF8StringEncoding error:nil]); -
trunk/Source/WebKit/ChangeLog
r246116 r246118 1 2019-06-05 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 Upstream content mode support into open source from WebKitAdditions 4 https://bugs.webkit.org/show_bug.cgi?id=198484 5 <rdar://problem/51355671> 6 7 Reviewed by Andy Estes. 8 9 Move code for handling WKContentMode into open source. No change in behavior, for internal builds. 10 11 * Shared/API/Cocoa/WebKit.apinotes: 12 * Shared/WebContentMode.h: Renamed from Source/WebKit/Shared/WebCompatibilityMode.h. 13 * Shared/WebPreferences.yaml: 14 * UIProcess/API/APINavigation.h: 15 (API::Navigation::setEffectiveContentMode): 16 (API::Navigation::effectiveContentMode const): 17 (API::Navigation::setEffectiveCompatibilityMode): Deleted. 18 (API::Navigation::effectiveCompatibilityMode const): Deleted. 19 * UIProcess/API/APINavigationClient.h: 20 (API::NavigationClient::shouldBypassContentModeSafeguards const): 21 (API::NavigationClient::shouldBypassCompatibilityModeSafeguards const): Deleted. 22 * UIProcess/API/APIWebsitePolicies.cpp: 23 (API::WebsitePolicies::copy const): 24 * UIProcess/API/APIWebsitePolicies.h: 25 * UIProcess/API/Cocoa/WKNavigation.h: 26 * UIProcess/API/Cocoa/WKNavigation.mm: 27 (-[WKNavigation effectiveContentMode]): 28 * UIProcess/API/Cocoa/WKWebpagePreferences.h: 29 * UIProcess/API/Cocoa/WKWebpagePreferences.mm: 30 (WebKit::contentMode): 31 (WebKit::webContentMode): 32 (-[WKWebpagePreferences _allowSiteSpecificQuirksToOverrideCompatibilityMode]): 33 (-[WKWebpagePreferences _setAllowSiteSpecificQuirksToOverrideCompatibilityMode:]): 34 (-[WKWebpagePreferences setPreferredContentMode:]): 35 (-[WKWebpagePreferences preferredContentMode]): 36 * UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h: 37 * UIProcess/Cocoa/NavigationState.h: 38 * UIProcess/Cocoa/NavigationState.mm: 39 (WebKit::NavigationState::NavigationClient::shouldBypassContentModeSafeguards const): 40 (WebKit::NavigationState::NavigationClient::shouldBypassCompatibilityModeSafeguards const): Deleted. 41 * UIProcess/WebPageProxy.cpp: 42 (WebKit::WebPageProxy::decidePolicyForNavigationAction): 43 (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): 44 (WebKit::WebPageProxy::effectiveCompatibilityModeAfterAdjustingPolicies): Deleted. 45 * UIProcess/WebPageProxy.h: 46 * UIProcess/ios/WebPageProxyIOS.mm: 47 (WebKit::desktopClassBrowsingSupported): 48 (WebKit::webViewSizeIsNarrow): 49 (WebKit::desktopClassBrowsingRecommendedForRequest): 50 (WebKit::desktopClassBrowsingRecommended): 51 (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): 52 * WebKit.xcodeproj/project.pbxproj: 53 1 54 2019-06-05 Tim Horton <timothy_horton@apple.com> 2 55 -
trunk/Source/WebKit/Shared/API/Cocoa/WebKit.apinotes
r244866 r246118 201 201 - Name: WKErrorCode 202 202 NSErrorDomain: WKErrorDomain 203 #if USE(APPLE_INTERNAL_SDK) 204 #import <WebKitAdditions/WebKitAdditions.apinotes> 205 #endif 203 - Name: WKContentMode 204 SwiftName: WKWebpagePreferences.ContentMode -
trunk/Source/WebKit/Shared/WebContentMode.h
r246117 r246118 30 30 namespace WebKit { 31 31 32 enum class WebCo mpatibilityMode : uint8_t {32 enum class WebContentMode : uint8_t { 33 33 Recommended, 34 Legacy,35 Modern,34 Mobile, 35 Desktop 36 36 }; 37 37 -
trunk/Source/WebKit/Shared/WebPreferences.yaml
r246048 r246118 1071 1071 condition: PLATFORM(IOS_FAMILY) 1072 1072 1073 UseModernCompatibilityModeByDefault:1074 type: bool1075 defaultValue: false1076 humanReadableName: "Use Modern Compatibility Mode"1077 humanReadableDescription: "Use modern compatibility mode by default"1078 webcoreBinding: none1079 category: debug1080 1081 1073 SimpleLineLayoutDebugBordersEnabled: 1082 1074 type: bool -
trunk/Source/WebKit/UIProcess/API/APINavigation.h
r244444 r246118 31 31 #include "NavigationActionData.h" 32 32 #include "WebBackForwardListItem.h" 33 #include "WebCo mpatibilityMode.h"33 #include "WebContentMode.h" 34 34 #include <WebCore/AdClickAttribution.h> 35 35 #include <WebCore/ProcessIdentifier.h> … … 143 143 const WebCore::SecurityOriginData& destinationFrameSecurityOrigin() const { return m_destinationFrameSecurityOrigin; } 144 144 145 void setEffectiveCo mpatibilityMode(WebKit::WebCompatibilityMode compatibilityMode) { m_effectiveCompatibilityMode = compatibilityMode; }146 WebKit::WebCo mpatibilityMode effectiveCompatibilityMode() const { return m_effectiveCompatibilityMode; }145 void setEffectiveContentMode(WebKit::WebContentMode mode) { m_effectiveContentMode = mode; } 146 WebKit::WebContentMode effectiveContentMode() const { return m_effectiveContentMode; } 147 147 148 148 #if !LOG_DISABLED … … 174 174 WebCore::SecurityOriginData m_destinationFrameSecurityOrigin; 175 175 bool m_userContentExtensionsEnabled { true }; 176 WebKit::WebCo mpatibilityMode m_effectiveCompatibilityMode { WebKit::WebCompatibilityMode::Recommended };176 WebKit::WebContentMode m_effectiveContentMode { WebKit::WebContentMode::Recommended }; 177 177 }; 178 178 -
trunk/Source/WebKit/UIProcess/API/APINavigationClient.h
r244367 r246118 92 92 93 93 virtual void didReceiveAuthenticationChallenge(WebKit::WebPageProxy&, WebKit::AuthenticationChallengeProxy& challenge) { challenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::PerformDefaultHandling); } 94 virtual bool shouldBypassCo mpatibilityModeSafeguards() const { return false; }94 virtual bool shouldBypassContentModeSafeguards() const { return false; } 95 95 96 96 // FIXME: These function should not be part of this client. -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp
r245483 r246118 58 58 policies->setCustomJavaScriptUserAgentAsSiteSpecificQuirks(m_customJavaScriptUserAgentAsSiteSpecificQuirks); 59 59 policies->setCustomNavigatorPlatform(m_customNavigatorPlatform); 60 policies->setPreferredCo mpatibilityMode(m_preferredCompatibilityMode);60 policies->setPreferredContentMode(m_preferredContentMode); 61 61 policies->setMetaViewportPolicy(m_metaViewportPolicy); 62 62 policies->setMediaSourcePolicy(m_mediaSourcePolicy); … … 75 75 customHeaderFields.uncheckedAppend(field); 76 76 policies->setCustomHeaderFields(WTFMove(customHeaderFields)); 77 policies->setAllowSiteSpecificQuirksToOverrideCo mpatibilityMode(m_allowSiteSpecificQuirksToOverrideCompatibilityMode);77 policies->setAllowSiteSpecificQuirksToOverrideContentMode(m_allowSiteSpecificQuirksToOverrideContentMode); 78 78 policies->setApplicationNameForUserAgentWithModernCompatibility(m_applicationNameForUserAgentWithModernCompatibility); 79 79 return policies; -
trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h
r245483 r246118 27 27 28 28 #include "APIObject.h" 29 #include "WebCo mpatibilityMode.h"29 #include "WebContentMode.h" 30 30 #include "WebsiteAutoplayPolicy.h" 31 31 #include "WebsiteAutoplayQuirk.h" … … 94 94 const WTF::String& customNavigatorPlatform() const { return m_customNavigatorPlatform; } 95 95 96 WebKit::WebCo mpatibilityMode preferredCompatibilityMode() const { return m_preferredCompatibilityMode; }97 void setPreferredCo mpatibilityMode(WebKit::WebCompatibilityMode mode) { m_preferredCompatibilityMode = mode; }96 WebKit::WebContentMode preferredContentMode() const { return m_preferredContentMode; } 97 void setPreferredContentMode(WebKit::WebContentMode mode) { m_preferredContentMode = mode; } 98 98 99 99 WebKit::WebsiteMetaViewportPolicy metaViewportPolicy() const { return m_metaViewportPolicy; } … … 109 109 void setLegacyOverflowScrollingTouchPolicy(WebKit::WebsiteLegacyOverflowScrollingTouchPolicy policy) { m_legacyOverflowScrollingTouchPolicy = policy; } 110 110 111 bool allowSiteSpecificQuirksToOverrideCo mpatibilityMode() const { return m_allowSiteSpecificQuirksToOverrideCompatibilityMode; }112 void setAllowSiteSpecificQuirksToOverrideCo mpatibilityMode(bool value) { m_allowSiteSpecificQuirksToOverrideCompatibilityMode = value; }111 bool allowSiteSpecificQuirksToOverrideContentMode() const { return m_allowSiteSpecificQuirksToOverrideContentMode; } 112 void setAllowSiteSpecificQuirksToOverrideContentMode(bool value) { m_allowSiteSpecificQuirksToOverrideContentMode = value; } 113 113 114 114 WTF::String applicationNameForUserAgentWithModernCompatibility() const { return m_applicationNameForUserAgentWithModernCompatibility; } … … 131 131 WTF::String m_customJavaScriptUserAgentAsSiteSpecificQuirks; 132 132 WTF::String m_customNavigatorPlatform; 133 WebKit::WebCo mpatibilityMode m_preferredCompatibilityMode { WebKit::WebCompatibilityMode::Recommended };133 WebKit::WebContentMode m_preferredContentMode { WebKit::WebContentMode::Recommended }; 134 134 WebKit::WebsiteMetaViewportPolicy m_metaViewportPolicy { WebKit::WebsiteMetaViewportPolicy::Default }; 135 135 WebKit::WebsiteMediaSourcePolicy m_mediaSourcePolicy { WebKit::WebsiteMediaSourcePolicy::Default }; 136 136 WebKit::WebsiteSimulatedMouseEventsDispatchPolicy m_simulatedMouseEventsDispatchPolicy { WebKit::WebsiteSimulatedMouseEventsDispatchPolicy::Default }; 137 137 WebKit::WebsiteLegacyOverflowScrollingTouchPolicy m_legacyOverflowScrollingTouchPolicy { WebKit::WebsiteLegacyOverflowScrollingTouchPolicy::Default }; 138 bool m_allowSiteSpecificQuirksToOverrideCo mpatibilityMode { false };138 bool m_allowSiteSpecificQuirksToOverrideContentMode { false }; 139 139 WTF::String m_applicationNameForUserAgentWithModernCompatibility; 140 140 }; -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKNavigation.h
r244444 r246118 37 37 @interface WKNavigation : NSObject 38 38 39 #if USE(APPLE_INTERNAL_SDK) 40 #import <WebKitAdditions/WKNavigationAdditions.h> 41 #endif 39 /*! The content mode used when loading this webpage. 40 @discussion The value is either WKContentModeMobile or WKContentModeDesktop. 41 */ 42 @property (nonatomic, readonly) WKContentMode effectiveContentMode WK_API_AVAILABLE(ios(WK_IOS_TBA)); 42 43 43 44 @end -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKNavigation.mm
r244444 r246118 46 46 } 47 47 48 #if USE(APPLE_INTERNAL_SDK) 49 #import <WebKitAdditions/WKNavigationAdditions.mm> 50 #endif 48 #if PLATFORM(IOS_FAMILY) 49 50 - (WKContentMode)effectiveContentMode 51 { 52 return WebKit::contentMode(_navigation->effectiveContentMode()); 53 } 54 55 #endif // PLATFORM(IOS_FAMILY) 51 56 52 57 #pragma mark WKObject protocol implementation -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.h
r244242 r246118 28 28 #import <Foundation/Foundation.h> 29 29 30 #if USE(APPLE_INTERNAL_SDK) 31 #import <WebKitAdditions/WKWebpagePreferencesAdditionsBefore.h> 32 #endif 30 /*! @enum WKContentMode 31 @abstract A content mode represents the type of content to load, as well as 32 additional layout and rendering adaptations that are applied as a result of 33 loading the content 34 @constant WKContentModeRecommended The recommended content mode for the current platform 35 @constant WKContentModeMobile Represents content targeting mobile browsers 36 @constant WKContentModeDesktop Represents content targeting desktop browsers 37 @discussion WKContentModeRecommended behaves like WKContentModeMobile on iPhone and iPad mini 38 and WKContentModeDesktop on other iPad models as well as Mac. 39 */ 40 typedef NS_ENUM(NSInteger, WKContentMode) { 41 WKContentModeRecommended, 42 WKContentModeMobile, 43 WKContentModeDesktop 44 } WK_API_AVAILABLE(ios(WK_IOS_TBA)); 33 45 34 46 /*! A WKWebpagePreferences object is a collection of properties that … … 39 51 @interface WKWebpagePreferences : NSObject 40 52 41 #if USE(APPLE_INTERNAL_SDK) 42 #import <WebKitAdditions/WKWebpagePreferencesAdditionsAfter.h> 43 #endif 53 /*! @abstract A WKContentMode indicating the content mode to prefer 54 when loading and rendering a webpage. 55 @discussion The default value is WKContentModeRecommended. The stated 56 preference is ignored on subframe navigation 57 */ 58 @property (nonatomic) WKContentMode preferredContentMode WK_API_AVAILABLE(ios(WK_IOS_TBA)); 44 59 45 60 @end -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.mm
r245481 r246118 30 30 #import "WKWebpagePreferencesInternal.h" 31 31 #import "WKWebsiteDataStoreInternal.h" 32 #import "WebCo mpatibilityMode.h"32 #import "WebContentMode.h" 33 33 #import "_WKCustomHeaderFieldsInternal.h" 34 34 #import "_WKWebsitePoliciesInternal.h" 35 35 #import <wtf/RetainPtr.h> 36 36 37 #if USE(APPLE_INTERNAL_SDK) 38 #import <WebKitAdditions/WKWebpagePreferencesAdditionsBefore.mm> 39 #endif 37 #if PLATFORM(IOS_FAMILY) 38 39 namespace WebKit { 40 41 WKContentMode contentMode(WebKit::WebContentMode contentMode) 42 { 43 switch (contentMode) { 44 case WebKit::WebContentMode::Recommended: 45 return WKContentModeRecommended; 46 case WebKit::WebContentMode::Mobile: 47 return WKContentModeMobile; 48 case WebKit::WebContentMode::Desktop: 49 return WKContentModeDesktop; 50 } 51 ASSERT_NOT_REACHED(); 52 return WKContentModeRecommended; 53 } 54 55 WebKit::WebContentMode webContentMode(WKContentMode contentMode) 56 { 57 switch (contentMode) { 58 case WKContentModeRecommended: 59 return WebKit::WebContentMode::Recommended; 60 case WKContentModeMobile: 61 return WebKit::WebContentMode::Mobile; 62 case WKContentModeDesktop: 63 return WebKit::WebContentMode::Desktop; 64 } 65 ASSERT_NOT_REACHED(); 66 return WebKit::WebContentMode::Recommended; 67 } 68 69 } // namespace WebKit 70 71 #endif // PLATFORM(IOS_FAMILY) 40 72 41 73 @implementation WKWebpagePreferences … … 277 309 - (BOOL)_allowSiteSpecificQuirksToOverrideCompatibilityMode 278 310 { 279 return _websitePolicies->allowSiteSpecificQuirksToOverrideCo mpatibilityMode();311 return _websitePolicies->allowSiteSpecificQuirksToOverrideContentMode(); 280 312 } 281 313 282 314 - (void)_setAllowSiteSpecificQuirksToOverrideCompatibilityMode:(BOOL)value 283 315 { 284 _websitePolicies->setAllowSiteSpecificQuirksToOverrideCo mpatibilityMode(value);316 _websitePolicies->setAllowSiteSpecificQuirksToOverrideContentMode(value); 285 317 } 286 318 … … 300 332 } 301 333 302 #if USE(APPLE_INTERNAL_SDK) 303 #import <WebKitAdditions/WKWebpagePreferencesAdditionsAfter.mm> 304 #endif 334 #if PLATFORM(IOS_FAMILY) 335 336 - (void)setPreferredContentMode:(WKContentMode)contentMode 337 { 338 _websitePolicies->setPreferredContentMode(WebKit::webContentMode(contentMode)); 339 } 340 341 - (WKContentMode)preferredContentMode 342 { 343 return WebKit::contentMode(_websitePolicies->preferredContentMode()); 344 } 345 346 #endif // PLATFORM(IOS_FAMILY) 305 347 306 348 @end -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h
r244444 r246118 37 37 }; 38 38 39 #if USE(APPLE_INTERNAL_SDK) 40 #import <WebKitAdditions/WKWebpagePreferencesInternalAdditions.h> 39 #if PLATFORM(IOS_FAMILY) 40 WKContentMode contentMode(WebContentMode); 41 WebContentMode webContentMode(WKContentMode); 41 42 #endif 42 43 -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.h
r244367 r246118 110 110 void renderingProgressDidChange(WebPageProxy&, OptionSet<WebCore::LayoutMilestone>) override; 111 111 112 bool shouldBypassCo mpatibilityModeSafeguards() const final;112 bool shouldBypassContentModeSafeguards() const final; 113 113 114 114 void didReceiveAuthenticationChallenge(WebPageProxy&, AuthenticationChallengeProxy&) override; -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm
r244367 r246118 940 940 } 941 941 942 bool NavigationState::NavigationClient::shouldBypassCo mpatibilityModeSafeguards() const942 bool NavigationState::NavigationClient::shouldBypassContentModeSafeguards() const 943 943 { 944 944 return m_navigationState.m_navigationDelegateMethods.webViewDecidePolicyForNavigationActionWithPreferencesDecisionHandler; -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r245807 r246118 4654 4654 } 4655 4655 if (policies) 4656 navigation->setEffectiveCo mpatibilityMode(effectiveCompatibilityModeAfterAdjustingPolicies(*policies, navigation->currentRequest()));4656 navigation->setEffectiveContentMode(effectiveContentModeAfterAdjustingPolicies(*policies, navigation->currentRequest())); 4657 4657 } 4658 4658 receivedNavigationPolicyDecision(policyAction, navigation.get(), processSwapRequestedByClient, frame, policies.get(), WTFMove(sender)); … … 9131 9131 #endif // ENABLE(SPEECH_SYNTHESIS) 9132 9132 9133 #if !PLATFORM(IOS_FAMILY) || !USE(APPLE_INTERNAL_SDK)9134 9135 WebCo mpatibilityMode WebPageProxy::effectiveCompatibilityModeAfterAdjustingPolicies(API::WebsitePolicies&, const WebCore::ResourceRequest&)9136 { 9137 return WebCo mpatibilityMode::Recommended;9138 } 9139 9140 #endif // !PLATFORM(IOS_FAMILY) || !USE(APPLE_INTERNAL_SDK)9133 #if !PLATFORM(IOS_FAMILY) 9134 9135 WebContentMode WebPageProxy::effectiveContentModeAfterAdjustingPolicies(API::WebsitePolicies&, const WebCore::ResourceRequest&) 9136 { 9137 return WebContentMode::Recommended; 9138 } 9139 9140 #endif // !PLATFORM(IOS_FAMILY) 9141 9141 9142 9142 void WebPageProxy::addObserver(WebViewDidMoveToWindowObserver& observer) -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r245998 r246118 297 297 enum class ProcessSwapRequestedByClient; 298 298 enum class UndoOrRedo : bool; 299 enum class WebCo mpatibilityMode : uint8_t;299 enum class WebContentMode : uint8_t; 300 300 301 301 #if USE(QUICK_LOOK) … … 1648 1648 void beginSafeBrowsingCheck(const URL&, bool, WebFramePolicyListenerProxy&); 1649 1649 1650 WebCo mpatibilityMode effectiveCompatibilityModeAfterAdjustingPolicies(API::WebsitePolicies&, const WebCore::ResourceRequest&);1650 WebContentMode effectiveContentModeAfterAdjustingPolicies(API::WebsitePolicies&, const WebCore::ResourceRequest&); 1651 1651 1652 1652 void willSubmitForm(uint64_t frameID, uint64_t sourceFrameID, const Vector<std::pair<String, String>>& textFieldValues, uint64_t listenerID, const UserData&); -
trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
r245998 r246118 64 64 #import <WebCore/UserAgent.h> 65 65 #import <WebCore/ValidationBubble.h> 66 #import <pal/spi/ios/MobileGestaltSPI.h> 66 67 #import <wtf/text/TextStream.h> 67 68 … … 1262 1263 #endif 1263 1264 1264 #if USE(APPLE_INTERNAL_SDK) 1265 #import <WebKitAdditions/WebPageProxyIOSAdditions.mm> 1265 static bool desktopClassBrowsingSupported() 1266 { 1267 static bool supportsDesktopClassBrowsing = false; 1268 static dispatch_once_t onceToken; 1269 dispatch_once(&onceToken, ^{ 1270 #if PLATFORM(IOSMAC) 1271 supportsDesktopClassBrowsing = true; 1272 #else 1273 supportsDesktopClassBrowsing = currentUserInterfaceIdiomIsPad(); 1266 1274 #endif 1275 }); 1276 return supportsDesktopClassBrowsing; 1277 } 1278 1279 #if !PLATFORM(IOSMAC) 1280 1281 static bool webViewSizeIsNarrow(WebCore::IntSize viewSize) 1282 { 1283 return !viewSize.isEmpty() && viewSize.width() <= 375; 1284 } 1285 1286 #endif // !PLATFORM(IOSMAC) 1287 1288 static bool desktopClassBrowsingRecommendedForRequest(const WebCore::ResourceRequest& request) 1289 { 1290 // FIXME: This should be additionally gated on site-specific quirks being enabled. However, site-specific quirks are already 1291 // disabled by default in WKWebView, so we would need a new preference for controlling site-specific quirks that are on-by-default 1292 // in all apps, but may be turned off via SPI (or via Web Inspector). See also: <rdar://problem/50035167>. 1293 auto host = request.url().host(); 1294 if (equalLettersIgnoringASCIICase(host, "tv.kakao.com") || host.endsWithIgnoringASCIICase(".tv.kakao.com")) 1295 return false; 1296 1297 if (equalLettersIgnoringASCIICase(host, "tving.com") || host.endsWithIgnoringASCIICase(".tving.com")) 1298 return false; 1299 1300 if (equalLettersIgnoringASCIICase(host, "live.iqiyi.com") || host.endsWithIgnoringASCIICase(".live.iqiyi.com")) 1301 return false; 1302 1303 if (equalLettersIgnoringASCIICase(host, "video.sina.com.cn") || host.endsWithIgnoringASCIICase(".video.sina.com.cn")) 1304 return false; 1305 1306 if (equalLettersIgnoringASCIICase(host, "huya.com") || host.endsWithIgnoringASCIICase(".huya.com")) 1307 return false; 1308 1309 if (equalLettersIgnoringASCIICase(host, "video.tudou.com") || host.endsWithIgnoringASCIICase(".video.tudou.com")) 1310 return false; 1311 1312 if (equalLettersIgnoringASCIICase(host, "cctv.com") || host.endsWithIgnoringASCIICase(".cctv.com")) 1313 return false; 1314 1315 if (equalLettersIgnoringASCIICase(host, "v.china.com.cn")) 1316 return false; 1317 1318 return true; 1319 } 1320 1321 enum class IgnoreAppCompatibilitySafeguards : bool { No, Yes }; 1322 static bool desktopClassBrowsingRecommended(const WebCore::ResourceRequest& request, WebCore::IntSize viewSize, IgnoreAppCompatibilitySafeguards ignoreSafeguards) 1323 { 1324 if (!desktopClassBrowsingRecommendedForRequest(request)) 1325 return false; 1326 1327 #if !PLATFORM(IOSMAC) 1328 if (webViewSizeIsNarrow(viewSize)) 1329 return false; 1330 #endif 1331 1332 static bool shouldRecommendDesktopClassBrowsing = false; 1333 static dispatch_once_t onceToken; 1334 dispatch_once(&onceToken, ^{ 1335 #if PLATFORM(IOSMAC) 1336 UNUSED_PARAM(ignoreSafeguards); 1337 shouldRecommendDesktopClassBrowsing = true; 1338 #else 1339 // While desktop-class browsing is supported on all iPad models, it is not recommended for iPad mini. 1340 auto screenClass = MGGetSInt32Answer(kMGQMainScreenClass, MGScreenClassPad2); 1341 shouldRecommendDesktopClassBrowsing = screenClass != MGScreenClassPad3 && screenClass != MGScreenClassPad4 && desktopClassBrowsingSupported(); 1342 if (ignoreSafeguards == IgnoreAppCompatibilitySafeguards::No && !linkedOnOrAfter(WebKit::SDKVersion::FirstWithModernCompabilityModeByDefault)) { 1343 // Opt out apps that haven't yet built against the iOS 13 SDK to limit any incompatibilities as a result of enabling desktop-class browsing by default in 1344 // WKWebView on appropriately-sized iPad models. 1345 shouldRecommendDesktopClassBrowsing = false; 1346 } 1347 #endif 1348 }); 1349 return shouldRecommendDesktopClassBrowsing; 1350 } 1351 1352 WebContentMode WebPageProxy::effectiveContentModeAfterAdjustingPolicies(API::WebsitePolicies& policies, const WebCore::ResourceRequest& request) 1353 { 1354 if (m_preferences->mediaSourceEnabled()) { 1355 // FIXME: This is a compatibility hack to ensure that turning MSE on via the existing preference still enables MSE. 1356 policies.setMediaSourcePolicy(WebsiteMediaSourcePolicy::Enable); 1357 } 1358 1359 auto viewSize = this->viewSize(); 1360 bool useDesktopBrowsingMode; 1361 switch (policies.preferredContentMode()) { 1362 case WebContentMode::Recommended: { 1363 auto ignoreSafeguards = m_navigationClient->shouldBypassContentModeSafeguards() ? IgnoreAppCompatibilitySafeguards::Yes : IgnoreAppCompatibilitySafeguards::No; 1364 useDesktopBrowsingMode = desktopClassBrowsingRecommended(request, viewSize, ignoreSafeguards); 1365 break; 1366 } 1367 case WebContentMode::Mobile: 1368 useDesktopBrowsingMode = false; 1369 break; 1370 case WebContentMode::Desktop: 1371 useDesktopBrowsingMode = !policies.allowSiteSpecificQuirksToOverrideContentMode() || desktopClassBrowsingRecommendedForRequest(request); 1372 break; 1373 default: 1374 ASSERT_NOT_REACHED(); 1375 useDesktopBrowsingMode = false; 1376 break; 1377 } 1378 1379 if (!useDesktopBrowsingMode) 1380 return WebContentMode::Mobile; 1381 1382 if (policies.customUserAgent().isEmpty() && customUserAgent().isEmpty()) { 1383 auto applicationName = policies.applicationNameForUserAgentWithModernCompatibility(); 1384 if (applicationName.isEmpty()) 1385 applicationName = applicationNameForUserAgent(); 1386 policies.setCustomUserAgent(standardUserAgentWithApplicationName(applicationName, UserAgentType::Desktop)); 1387 } 1388 1389 if (policies.customNavigatorPlatform().isEmpty()) { 1390 // FIXME: Grab this from WebCore instead of hard-coding it here. 1391 policies.setCustomNavigatorPlatform("MacIntel"_s); 1392 } 1393 1394 if (desktopClassBrowsingSupported()) { 1395 // Apply some additional desktop-class browsing behaviors on supported devices. 1396 policies.setMetaViewportPolicy(WebsiteMetaViewportPolicy::Ignore); 1397 policies.setMediaSourcePolicy(WebsiteMediaSourcePolicy::Enable); 1398 policies.setSimulatedMouseEventsDispatchPolicy(WebsiteSimulatedMouseEventsDispatchPolicy::Allow); 1399 policies.setLegacyOverflowScrollingTouchPolicy(WebsiteLegacyOverflowScrollingTouchPolicy::Disable); 1400 } 1401 1402 return WebContentMode::Desktop; 1403 } 1267 1404 1268 1405 } // namespace WebKit -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r246048 r246118 1658 1658 F42D634122A0EFDF00D2FB3A /* WebAutocorrectionData.h in Headers */ = {isa = PBXBuildFile; fileRef = F42D633F22A0EFD300D2FB3A /* WebAutocorrectionData.h */; }; 1659 1659 F430E9422247335F005FE053 /* WebsiteMetaViewportPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = F430E941224732A9005FE053 /* WebsiteMetaViewportPolicy.h */; }; 1660 F430E94422473DFF005FE053 /* WebCo mpatibilityMode.h in Headers */ = {isa = PBXBuildFile; fileRef = F430E94322473DB8005FE053 /* WebCompatibilityMode.h */; };1660 F430E94422473DFF005FE053 /* WebContentMode.h in Headers */ = {isa = PBXBuildFile; fileRef = F430E94322473DB8005FE053 /* WebContentMode.h */; }; 1661 1661 F438CD1C2241421400DE6DDA /* WKWebpagePreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = F438CD1B224140A600DE6DDA /* WKWebpagePreferences.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1662 1662 F438CD1F22414D4000DE6DDA /* WKWebpagePreferencesInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F438CD1E22414D4000DE6DDA /* WKWebpagePreferencesInternal.h */; }; … … 4633 4633 F42D634022A0EFD300D2FB3A /* WebAutocorrectionData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebAutocorrectionData.mm; path = ios/WebAutocorrectionData.mm; sourceTree = "<group>"; }; 4634 4634 F430E941224732A9005FE053 /* WebsiteMetaViewportPolicy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebsiteMetaViewportPolicy.h; sourceTree = "<group>"; }; 4635 F430E94322473DB8005FE053 /* WebCo mpatibilityMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebCompatibilityMode.h; sourceTree = "<group>"; };4635 F430E94322473DB8005FE053 /* WebContentMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebContentMode.h; sourceTree = "<group>"; }; 4636 4636 F438CD1B224140A600DE6DDA /* WKWebpagePreferences.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebpagePreferences.h; sourceTree = "<group>"; }; 4637 4637 F438CD1D22414AD600DE6DDA /* WKWebpagePreferences.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebpagePreferences.mm; sourceTree = "<group>"; }; … … 5215 5215 518D2CAC12D5153B003BB93B /* WebBackForwardListItem.h */, 5216 5216 BCF50726124329AA005955AE /* WebCertificateInfo.h */, 5217 F430E94322473DB8005FE053 /* WebCompatibilityMode.h */,5218 5217 7C4ABECE1AA8E9F00088AA37 /* WebCompiledContentRuleList.cpp */, 5219 5218 7C4ABECF1AA8E9F00088AA37 /* WebCompiledContentRuleList.h */, … … 5225 5224 BC4A628D147312BE006C681A /* WebConnectionClient.cpp */, 5226 5225 BC4A628E147312BE006C681A /* WebConnectionClient.h */, 5226 F430E94322473DB8005FE053 /* WebContentMode.h */, 5227 5227 512935D51288D19400A4B695 /* WebContextMenuItem.cpp */, 5228 5228 512935D61288D19400A4B695 /* WebContextMenuItem.h */, … … 9617 9617 3F87B9C0158940D80090FF62 /* WebColorPicker.h in Headers */, 9618 9618 728E86F11795188C0087879E /* WebColorPickerMac.h in Headers */, 9619 F430E94422473DFF005FE053 /* WebCompatibilityMode.h in Headers */,9620 9619 7C4ABED11AA8E9F00088AA37 /* WebCompiledContentRuleList.h in Headers */, 9621 9620 7C4ABED51AA8FCB80088AA37 /* WebCompiledContentRuleListData.h in Headers */, … … 9624 9623 1A1FEC1D1627B45700700F6D /* WebConnectionMessages.h in Headers */, 9625 9624 BC4A62A814744EC7006C681A /* WebConnectionToWebProcess.h in Headers */, 9625 F430E94422473DFF005FE053 /* WebContentMode.h in Headers */, 9626 9626 31A505FA1680025500A930EB /* WebContextClient.h in Headers */, 9627 9627 BC09B8F9147460F7005F5625 /* WebContextConnectionClient.h in Headers */, -
trunk/Tools/ChangeLog
r246103 r246118 1 2019-06-05 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 Upstream content mode support into open source from WebKitAdditions 4 https://bugs.webkit.org/show_bug.cgi?id=198484 5 <rdar://problem/51355671> 6 7 Reviewed by Andy Estes. 8 9 Change the "useModernCompatibilityMode" layout test option to instead be "contentMode", with values of either 10 "mobile" or "desktop". 11 12 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 13 * TestWebKitAPI/ios/PreferredCompatibilityMode.mm: Removed. 14 * TestWebKitAPI/ios/PreferredContentMode.mm: Added. 15 (-[ContentModeNavigationDelegate setDecidePolicyForNavigationActionWithPreferences:]): 16 (-[ContentModeNavigationDelegate decidePolicyForNavigationActionWithPreferences]): 17 (-[ContentModeNavigationDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]): 18 (+[WKWebpagePreferences preferencesWithContentMode:]): 19 (-[WKWebView navigatorUserAgent]): 20 (-[WKWebView navigatorPlatform]): 21 (-[WKWebView loadTestPageNamed:withPolicyDecisionHandler:]): 22 (-[WKWebView loadHTMLString:withPolicyDecisionHandler:]): 23 (-[WKWebView loadTestPageNamed:andExpectEffectiveContentMode:withPolicyDecisionHandler:]): 24 (-[NSString shouldContainStrings:]): 25 (IPhoneUserInterfaceSwizzler::IPhoneUserInterfaceSwizzler): 26 (IPhoneUserInterfaceSwizzler::phoneUserInterfaceIdiom): 27 (TestWebKitAPI::setUpWebViewForPreferredContentModeTestingWithoutNavigationDelegate): 28 (TestWebKitAPI::setUpWebViewForPreferredContentModeTesting): 29 (TestWebKitAPI::makeContentModeDecisionHandler): 30 (TestWebKitAPI::TEST): 31 * WebKitTestRunner/TestController.cpp: 32 (WTR::updateTestOptionsFromTestHeader): 33 * WebKitTestRunner/TestController.h: 34 * WebKitTestRunner/TestOptions.h: 35 (WTR::TestOptions::hasSameInitializationOptions const): 36 * WebKitTestRunner/cocoa/TestControllerCocoa.mm: 37 (WTR::TestController::platformCreateWebView): 38 (WTR::TestController::configureContentMode): 39 (WTR::TestController::enableModernCompatibilityMode): Deleted. 40 1 41 2019-06-01 Antoine Quint <graouts@apple.com> 2 42 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r246056 r246118 943 943 F4856CA31E649EA8009D7EE7 /* attachment-element.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4856CA21E6498A8009D7EE7 /* attachment-element.html */; }; 944 944 F486B1D01F67952300F34BDD /* DataTransfer-setDragImage.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F486B1CF1F6794FF00F34BDD /* DataTransfer-setDragImage.html */; }; 945 F48D6C10224B377000E3E2FB /* PreferredCo mpatibilityMode.mm in Sources */ = {isa = PBXBuildFile; fileRef = F48D6C0F224B377000E3E2FB /* PreferredCompatibilityMode.mm */; };945 F48D6C10224B377000E3E2FB /* PreferredContentMode.mm in Sources */ = {isa = PBXBuildFile; fileRef = F48D6C0F224B377000E3E2FB /* PreferredContentMode.mm */; }; 946 946 F4A32EC41F05F3850047C544 /* dragstart-change-selection-offscreen.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4A32EC31F05F3780047C544 /* dragstart-change-selection-offscreen.html */; }; 947 947 F4A32ECB1F0643370047C544 /* contenteditable-in-iframe.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4A32ECA1F0642F40047C544 /* contenteditable-in-iframe.html */; }; … … 2359 2359 F4856CA21E6498A8009D7EE7 /* attachment-element.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "attachment-element.html"; sourceTree = "<group>"; }; 2360 2360 F486B1CF1F6794FF00F34BDD /* DataTransfer-setDragImage.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "DataTransfer-setDragImage.html"; sourceTree = "<group>"; }; 2361 F48D6C0F224B377000E3E2FB /* PreferredCo mpatibilityMode.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PreferredCompatibilityMode.mm; sourceTree = "<group>"; };2361 F48D6C0F224B377000E3E2FB /* PreferredContentMode.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PreferredContentMode.mm; sourceTree = "<group>"; }; 2362 2362 F493247C1F44DF8D006F4336 /* UIKitSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIKitSPI.h; sourceTree = "<group>"; }; 2363 2363 F4A32EC31F05F3780047C544 /* dragstart-change-selection-offscreen.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "dragstart-change-selection-offscreen.html"; sourceTree = "<group>"; }; … … 2803 2803 2E7765CC16C4D80A00BA2BB1 /* mainIOS.mm */, 2804 2804 2D61EC3021B0B75C00A7D1CB /* PencilKitTestSPI.h */, 2805 F48D6C0F224B377000E3E2FB /* PreferredCo mpatibilityMode.mm */,2805 F48D6C0F224B377000E3E2FB /* PreferredContentMode.mm */, 2806 2806 F4517B652054C49500C26721 /* TestWKWebViewController.h */, 2807 2807 F4517B662054C49500C26721 /* TestWKWebViewController.mm */, … … 4369 4369 7CCE7F261A411AF600447C4C /* Preferences.mm in Sources */, 4370 4370 CD227E44211A4D5D00D285AF /* PreferredAudioBufferSize.mm in Sources */, 4371 F48D6C10224B377000E3E2FB /* PreferredCo mpatibilityMode.mm in Sources */,4371 F48D6C10224B377000E3E2FB /* PreferredContentMode.mm in Sources */, 4372 4372 7C1AF7951E8DCBAB002645B9 /* PrepareForMoveToWindow.mm in Sources */, 4373 4373 7CCE7F0B1A411AE600447C4C /* PreventEmptyUserAgent.cpp in Sources */, -
trunk/Tools/WebKitTestRunner/TestController.cpp
r246085 r246118 1389 1389 else if (key == "ignoreSynchronousMessagingTimeouts") 1390 1390 testOptions.contextOptions.ignoreSynchronousMessagingTimeouts = parseBooleanTestHeaderValue(value); 1391 else if (key == " shouldUseModernCompatibilityMode")1392 testOptions. shouldUseModernCompatibilityMode = parseBooleanTestHeaderValue(value);1391 else if (key == "contentMode") 1392 testOptions.contentMode = { value.c_str() }; 1393 1393 else if (key == "enableAppNap") 1394 1394 testOptions.enableAppNap = parseBooleanTestHeaderValue(value); -
trunk/Tools/WebKitTestRunner/TestController.h
r244898 r246118 472 472 #if PLATFORM(COCOA) 473 473 static void finishCreatingPlatformWebView(PlatformWebView*, const TestOptions&); 474 void enableModernCompatibilityMode(WKWebViewConfiguration *);474 void configureContentMode(WKWebViewConfiguration *, const TestOptions&); 475 475 #endif 476 476 -
trunk/Tools/WebKitTestRunner/TestOptions.h
r245299 r246118 92 92 bool shouldHandleRunOpenPanel { true }; 93 93 bool shouldPresentPopovers { true }; 94 bool shouldUseModernCompatibilityMode { false };95 94 bool enableAppNap { false }; 96 95 … … 103 102 HashMap<String, bool> experimentalFeatures; 104 103 HashMap<String, bool> internalDebugFeatures; 104 String contentMode; 105 105 106 106 ContextOptions contextOptions; … … 146 146 || shouldPresentPopovers != options.shouldPresentPopovers 147 147 || contentInsetTop != options.contentInsetTop 148 || shouldUseModernCompatibilityMode != options.shouldUseModernCompatibilityMode148 || contentMode != options.contentMode 149 149 || enableAppNap != options.enableAppNap) 150 150 return false; -
trunk/Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm
r244370 r246118 160 160 [copiedConfiguration _setUndoManagerAPIEnabled:YES]; 161 161 162 if (options.shouldUseModernCompatibilityMode) 163 enableModernCompatibilityMode(copiedConfiguration.get()); 162 configureContentMode(copiedConfiguration.get(), options); 164 163 165 164 if (options.applicationManifest.length()) { … … 432 431 } 433 432 434 #if USE(APPLE_INTERNAL_SDK) 435 #import <WebKitAdditions/TestControllerCocoaAdditions.mm> 433 #if PLATFORM(IOS_FAMILY) 434 435 static WKContentMode contentMode(const TestOptions& options) 436 { 437 if (options.contentMode == "desktop"_s) 438 return WKContentModeDesktop; 439 440 if (options.contentMode == "mobile"_s) 441 return WKContentModeMobile; 442 443 return WKContentModeRecommended; 444 } 445 446 #endif // PLATFORM(IOS_FAMILY) 447 448 void TestController::configureContentMode(WKWebViewConfiguration *configuration, const TestOptions& options) 449 { 450 auto webpagePreferences = adoptNS([[WKWebpagePreferences alloc] init]); 451 #if PLATFORM(IOS_FAMILY) 452 [webpagePreferences setPreferredContentMode:contentMode(options)]; 436 453 #else 437 438 void TestController::enableModernCompatibilityMode(WKWebViewConfiguration *) 439 { 440 } 441 442 #endif 454 UNUSED_PARAM(options); 455 #endif 456 configuration.defaultWebpagePreferences = webpagePreferences.get(); 457 } 443 458 444 459 } // namespace WTR
Note:
See TracChangeset
for help on using the changeset viewer.