Changeset 243797 in webkit


Ignore:
Timestamp:
Apr 3, 2019 8:02:07 AM (5 years ago)
Author:
Wenson Hsieh
Message:

Add plumbing for a compatibility mode preference in WebKit
https://bugs.webkit.org/show_bug.cgi?id=196005

Reviewed by Tim Horton.

Source/WebKit:

Add plumbing between the Cocoa API object (WKWebpagePreferences) and the inner C++ API object
(API::WebsitePolicies) for compatibility mode.

  • Shared/WebCompatibilityMode.h: Added.
  • UIProcess/API/APIWebsitePolicies.h:
  • UIProcess/API/Cocoa/WKWebpagePreferences.mm:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::adjustPoliciesForCompatibilityMode):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebPageProxyIOS.mm:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

Add new API tests.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/ios/PreferredCompatibilityMode.mm: Added.
Location:
trunk
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r243796 r243797  
     12019-04-03  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Add plumbing for a compatibility mode preference in WebKit
     4        https://bugs.webkit.org/show_bug.cgi?id=196005
     5
     6        Reviewed by Tim Horton.
     7
     8        Add plumbing between the Cocoa API object (WKWebpagePreferences) and the inner C++ API object
     9        (API::WebsitePolicies) for compatibility mode.
     10
     11        * Shared/WebCompatibilityMode.h: Added.
     12        * UIProcess/API/APIWebsitePolicies.h:
     13        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
     14        * UIProcess/Cocoa/NavigationState.mm:
     15        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
     16        * UIProcess/WebPageProxy.cpp:
     17        (WebKit::WebPageProxy::adjustPoliciesForCompatibilityMode):
     18        * UIProcess/WebPageProxy.h:
     19        * UIProcess/ios/WebPageProxyIOS.mm:
     20        * WebKit.xcodeproj/project.pbxproj:
     21
    1222019-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>
    223
  • trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h

    r242960 r243797  
    2727
    2828#include "APIObject.h"
     29#include "WebCompatibilityMode.h"
    2930#include "WebsiteAutoplayPolicy.h"
    3031#include "WebsiteAutoplayQuirk.h"
     
    8182    const WTF::String& customNavigatorPlatform() const { return m_customNavigatorPlatform; }
    8283
     84    WebKit::WebCompatibilityMode preferredCompatibilityMode() const { return m_preferredCompatibilityMode; }
     85    void setPreferredCompatibilityMode(WebKit::WebCompatibilityMode mode) { m_preferredCompatibilityMode = mode; }
     86
    8387private:
    8488    WebsitePolicies(bool contentBlockersEnabled, OptionSet<WebKit::WebsiteAutoplayQuirk>, WebKit::WebsiteAutoplayPolicy, Vector<WebCore::HTTPHeaderField>&&, WebKit::WebsitePopUpPolicy, RefPtr<WebsiteDataStore>&&);
     
    9498    WTF::String m_customJavaScriptUserAgentAsSiteSpecificQuirks;
    9599    WTF::String m_customNavigatorPlatform;
     100    WebKit::WebCompatibilityMode m_preferredCompatibilityMode { WebKit::WebCompatibilityMode::Default };
    96101};
    97102
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.mm

    r243726 r243797  
    2929#import "WKWebpagePreferencesInternal.h"
    3030#import "WKWebsiteDataStoreInternal.h"
     31#import "WebCompatibilityMode.h"
    3132#import "_WKWebsitePoliciesInternal.h"
    3233#import <wtf/RetainPtr.h>
     
    253254}
    254255
     256#if USE(APPLE_INTERNAL_SDK)
     257#import <WebKitAdditions/WKWebpagePreferencesAdditions.mm>
     258#endif
     259
    255260@end
  • trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm

    r243787 r243797  
    523523            }
    524524
     525            if (defaultWebsitePolicies)
     526                webPage->adjustPoliciesForCompatibilityMode(navigationAction, *defaultWebsitePolicies);
     527
    525528            if (!navigationAction->targetFrame()) {
    526529                listener->use(defaultWebsitePolicies.get());
     
    592595            if (!apiWebsitePolicies->customNavigatorPlatform().isNull() && subframeNavigation)
    593596                [NSException raise:NSInvalidArgumentException format:@"WKWebpagePreferences._customNavigatorPlatform must be nil for subframe navigations."];
     597
     598            webPageProxy->adjustPoliciesForCompatibilityMode(navigationAction, *apiWebsitePolicies);
    594599        }
    595600
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r243767 r243797  
    89038903#endif // ENABLE(SPEECH_SYNTHESIS)
    89048904
     8905#if !PLATFORM(IOS_FAMILY) || !USE(APPLE_INTERNAL_SDK)
     8906
     8907void WebPageProxy::adjustPoliciesForCompatibilityMode(const API::NavigationAction&, API::WebsitePolicies&)
     8908{
     8909}
     8910
     8911#endif // !PLATFORM(IOS_FAMILY) || !USE(APPLE_INTERNAL_SDK)
     8912
    89058913void WebPageProxy::addObserver(WebViewDidMoveToWindowObserver& observer)
    89068914{
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r243630 r243797  
    15071507
    15081508    void configureLoggingChannel(const String&, WTFLogChannelState, WTFLogLevel);
     1509    void adjustPoliciesForCompatibilityMode(const API::NavigationAction&, API::WebsitePolicies&);
    15091510
    15101511    void addObserver(WebViewDidMoveToWindowObserver&);
  • trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm

    r243630 r243797  
    2929#if PLATFORM(IOS_FAMILY)
    3030
     31#import "APINavigationAction.h"
    3132#import "APIUIClient.h"
     33#import "APIWebsitePolicies.h"
    3234#import "Connection.h"
    3335#import "DataReference.h"
     
    12421244#endif
    12431245
     1246#if USE(APPLE_INTERNAL_SDK)
     1247#import <WebKitAdditions/WebPageProxyIOSAdditions.mm>
     1248#endif
     1249
    12441250} // namespace WebKit
    12451251
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r243787 r243797  
    16371637                ED82A7F2128C6FAF004477B3 /* WKBundlePageOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A22F0FF1289FCD90085E74F /* WKBundlePageOverlay.h */; settings = {ATTRIBUTES = (Private, ); }; };
    16381638                F409BA181E6E64BC009DA28E /* WKDragDestinationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1639                F430E94422473DFF005FE053 /* WebCompatibilityMode.h in Headers */ = {isa = PBXBuildFile; fileRef = F430E94322473DB8005FE053 /* WebCompatibilityMode.h */; };
    16391640                F438CD1C2241421400DE6DDA /* WKWebpagePreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = F438CD1B224140A600DE6DDA /* WKWebpagePreferences.h */; settings = {ATTRIBUTES = (Public, ); }; };
    16401641                F438CD1F22414D4000DE6DDA /* WKWebpagePreferencesInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F438CD1E22414D4000DE6DDA /* WKWebpagePreferencesInternal.h */; };
     
    45724573                F40D1B68220BDC0F00B49A01 /* WebAutocorrectionContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WebAutocorrectionContext.h; path = ios/WebAutocorrectionContext.h; sourceTree = "<group>"; };
    45734574                F41056612130699A0092281D /* APIAttachmentCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = APIAttachmentCocoa.mm; sourceTree = "<group>"; };
     4575                F430E94322473DB8005FE053 /* WebCompatibilityMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebCompatibilityMode.h; sourceTree = "<group>"; };
    45744576                F438CD1B224140A600DE6DDA /* WKWebpagePreferences.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKWebpagePreferences.h; sourceTree = "<group>"; };
    45754577                F438CD1D22414AD600DE6DDA /* WKWebpagePreferences.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebpagePreferences.mm; sourceTree = "<group>"; };
     
    51645166                                518D2CAC12D5153B003BB93B /* WebBackForwardListItem.h */,
    51655167                                BCF50726124329AA005955AE /* WebCertificateInfo.h */,
     5168                                F430E94322473DB8005FE053 /* WebCompatibilityMode.h */,
    51665169                                7C4ABECE1AA8E9F00088AA37 /* WebCompiledContentRuleList.cpp */,
    51675170                                7C4ABECF1AA8E9F00088AA37 /* WebCompiledContentRuleList.h */,
     
    95289531                                3F87B9C0158940D80090FF62 /* WebColorPicker.h in Headers */,
    95299532                                728E86F11795188C0087879E /* WebColorPickerMac.h in Headers */,
     9533                                F430E94422473DFF005FE053 /* WebCompatibilityMode.h in Headers */,
    95309534                                7C4ABED11AA8E9F00088AA37 /* WebCompiledContentRuleList.h in Headers */,
    95319535                                7C4ABED51AA8FCB80088AA37 /* WebCompiledContentRuleListData.h in Headers */,
  • trunk/Tools/ChangeLog

    r243794 r243797  
     12019-04-03  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Add plumbing for a compatibility mode preference in WebKit
     4        https://bugs.webkit.org/show_bug.cgi?id=196005
     5
     6        Reviewed by Tim Horton.
     7
     8        Add new API tests.
     9
     10        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     11        * TestWebKitAPI/ios/PreferredCompatibilityMode.mm: Added.
     12
    1132019-04-03  Claudio Saavedra  <csaavedra@igalia.com>
    214
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r243698 r243797  
    914914                F4856CA31E649EA8009D7EE7 /* attachment-element.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4856CA21E6498A8009D7EE7 /* attachment-element.html */; };
    915915                F486B1D01F67952300F34BDD /* DataTransfer-setDragImage.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F486B1CF1F6794FF00F34BDD /* DataTransfer-setDragImage.html */; };
     916                F48D6C10224B377000E3E2FB /* PreferredCompatibilityMode.mm in Sources */ = {isa = PBXBuildFile; fileRef = F48D6C0F224B377000E3E2FB /* PreferredCompatibilityMode.mm */; };
    916917                F4A32EC41F05F3850047C544 /* dragstart-change-selection-offscreen.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4A32EC31F05F3780047C544 /* dragstart-change-selection-offscreen.html */; };
    917918                F4A32ECB1F0643370047C544 /* contenteditable-in-iframe.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F4A32ECA1F0642F40047C544 /* contenteditable-in-iframe.html */; };
     
    22892290                F4856CA21E6498A8009D7EE7 /* attachment-element.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "attachment-element.html"; sourceTree = "<group>"; };
    22902291                F486B1CF1F6794FF00F34BDD /* DataTransfer-setDragImage.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "DataTransfer-setDragImage.html"; sourceTree = "<group>"; };
     2292                F48D6C0F224B377000E3E2FB /* PreferredCompatibilityMode.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PreferredCompatibilityMode.mm; sourceTree = "<group>"; };
    22912293                F493247C1F44DF8D006F4336 /* UIKitSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIKitSPI.h; sourceTree = "<group>"; };
    22922294                F4A32EC31F05F3780047C544 /* dragstart-change-selection-offscreen.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "dragstart-change-selection-offscreen.html"; sourceTree = "<group>"; };
     
    27202722                                2E7765CC16C4D80A00BA2BB1 /* mainIOS.mm */,
    27212723                                2D61EC3021B0B75C00A7D1CB /* PencilKitTestSPI.h */,
     2724                                F48D6C0F224B377000E3E2FB /* PreferredCompatibilityMode.mm */,
    27222725                                F4517B652054C49500C26721 /* TestWKWebViewController.h */,
    27232726                                F4517B662054C49500C26721 /* TestWKWebViewController.mm */,
     
    42474250                                7CCE7F261A411AF600447C4C /* Preferences.mm in Sources */,
    42484251                                CD227E44211A4D5D00D285AF /* PreferredAudioBufferSize.mm in Sources */,
     4252                                F48D6C10224B377000E3E2FB /* PreferredCompatibilityMode.mm in Sources */,
    42494253                                7C1AF7951E8DCBAB002645B9 /* PrepareForMoveToWindow.mm in Sources */,
    42504254                                7CCE7F0B1A411AE600447C4C /* PreventEmptyUserAgent.cpp in Sources */,
Note: See TracChangeset for help on using the changeset viewer.