Changeset 240646 in webkit


Ignore:
Timestamp:
Jan 28, 2019 11:15:00 PM (5 years ago)
Author:
rniwa@webkit.org
Message:

User agent string override for navigator.userAgent should be site specific quirks
https://bugs.webkit.org/show_bug.cgi?id=193950

Reviewed by Brent Fulgham.

Source/WebCore:

In order to make it possible to toggle the UA string override just for navigator.userAgent via Web Inspector,
we need to put this override behind the site specific quirks. Because WebInspector overrides Page's setting
without updating WKPreferences, there is no way for WKWebView client's to know whether the site specific quirks
had been disabled or not.

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::setCustomJavaScriptUserAgentAsSiteSpecificQuirks):
(WebCore::DocumentLoader::customJavaScriptUserAgentAsSiteSpecificQuirks const):
(WebCore::DocumentLoader::setCustomJavaScriptUserAgent): Deleted.
(WebCore::DocumentLoader::customJavaScriptUserAgent const): Deleted.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::userAgentForJavaScript const):

Source/WebKit:

Renamed the various member variables, functions, properties and selectors.

  • Shared/WebsitePoliciesData.cpp:

(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):

  • Shared/WebsitePoliciesData.h:
  • UIProcess/API/APIWebsitePolicies.cpp:

(API::WebsitePolicies::data):

  • UIProcess/API/APIWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]): Renamed from setCustomJavaScriptUserAgent.
(-[_WKWebsitePolicies customJavaScriptUserAgentAsSiteSpecificQuirks]): Renamed from customJavaScriptUserAgent.

Tools:

Updated per the _WKWebsitePolicies rename.

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(-[CustomJavaScriptUserAgentDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):

Location:
trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r240644 r240646  
     12019-01-28  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        User agent string override for navigator.userAgent should be site specific quirks
     4        https://bugs.webkit.org/show_bug.cgi?id=193950
     5
     6        Reviewed by Brent Fulgham.
     7
     8        In order to make it possible to toggle the UA string override just for navigator.userAgent via Web Inspector,
     9        we need to put this override behind the site specific quirks. Because WebInspector overrides Page's setting
     10        without updating WKPreferences, there is no way for WKWebView client's to know whether the site specific quirks
     11        had been disabled or not.
     12
     13        * loader/DocumentLoader.h:
     14        (WebCore::DocumentLoader::setCustomJavaScriptUserAgentAsSiteSpecificQuirks):
     15        (WebCore::DocumentLoader::customJavaScriptUserAgentAsSiteSpecificQuirks const):
     16        (WebCore::DocumentLoader::setCustomJavaScriptUserAgent): Deleted.
     17        (WebCore::DocumentLoader::customJavaScriptUserAgent const): Deleted.
     18        * loader/FrameLoader.cpp:
     19        (WebCore::FrameLoader::userAgentForJavaScript const):
     20
    1212019-01-28  Devin Rousso  <drousso@apple.com>
    222
  • trunk/Source/WebCore/loader/DocumentLoader.h

    r240541 r240646  
    272272    const String& customUserAgent() const { return m_customUserAgent; }
    273273
    274     void setCustomJavaScriptUserAgent(const String& customJavaScriptUserAgent) { m_customJavaScriptUserAgent = customJavaScriptUserAgent; }
    275     const String& customJavaScriptUserAgent() const { return m_customJavaScriptUserAgent; }
     274    void setCustomJavaScriptUserAgentAsSiteSpecificQuirks(const String& customUserAgent) { m_customJavaScriptUserAgentAsSiteSpecificQuirks = customUserAgent; }
     275    const String& customJavaScriptUserAgentAsSiteSpecificQuirks() const { return m_customJavaScriptUserAgentAsSiteSpecificQuirks; }
    276276
    277277    void setCustomNavigatorPlatform(const String& customNavigatorPlatform) { m_customNavigatorPlatform = customNavigatorPlatform; }
     
    547547#endif
    548548    String m_customUserAgent;
    549     String m_customJavaScriptUserAgent;
     549    String m_customJavaScriptUserAgentAsSiteSpecificQuirks;
    550550    String m_customNavigatorPlatform;
    551551    bool m_userContentExtensionsEnabled { true };
  • trunk/Source/WebCore/loader/FrameLoader.cpp

    r240549 r240646  
    27162716
    27172717    if (auto* documentLoader = m_frame.mainFrame().loader().activeDocumentLoader()) {
    2718         userAgent = documentLoader->customJavaScriptUserAgent();
     2718        if (m_frame.settings().needsSiteSpecificQuirks())
     2719            userAgent = documentLoader->customJavaScriptUserAgentAsSiteSpecificQuirks();
    27192720        if (userAgent.isEmpty())
    27202721            userAgent = documentLoader->customUserAgent();
  • trunk/Source/WebKit/ChangeLog

    r240645 r240646  
     12019-01-28  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        User agent string override for navigator.userAgent should be site specific quirks
     4        https://bugs.webkit.org/show_bug.cgi?id=193950
     5
     6        Reviewed by Brent Fulgham.
     7
     8        Renamed the various member variables, functions, properties and selectors.
     9
     10        * Shared/WebsitePoliciesData.cpp:
     11        (WebKit::WebsitePoliciesData::encode const):
     12        (WebKit::WebsitePoliciesData::decode):
     13        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
     14        * Shared/WebsitePoliciesData.h:
     15        * UIProcess/API/APIWebsitePolicies.cpp:
     16        (API::WebsitePolicies::data):
     17        * UIProcess/API/APIWebsitePolicies.h:
     18        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
     19        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
     20        (-[_WKWebsitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]): Renamed from setCustomJavaScriptUserAgent.
     21        (-[_WKWebsitePolicies customJavaScriptUserAgentAsSiteSpecificQuirks]): Renamed from customJavaScriptUserAgent.
     22
    1232019-01-28  Commit Queue  <commit-queue@webkit.org>
    224
  • trunk/Source/WebKit/Shared/WebsitePoliciesData.cpp

    r240541 r240646  
    4545    encoder << websiteDataStoreParameters;
    4646    encoder << customUserAgent;
    47     encoder << customJavaScriptUserAgent;
     47    encoder << customJavaScriptUserAgentAsSiteSpecificQuirks;
    4848    encoder << customNavigatorPlatform;
    4949}
     
    9191        return WTF::nullopt;
    9292
    93     Optional<String> customJavaScriptUserAgent;
    94     decoder >> customJavaScriptUserAgent;
    95     if (!customJavaScriptUserAgent)
     93    Optional<String> customJavaScriptUserAgentAsSiteSpecificQuirks;
     94    decoder >> customJavaScriptUserAgentAsSiteSpecificQuirks;
     95    if (!customJavaScriptUserAgentAsSiteSpecificQuirks)
    9696        return WTF::nullopt;
    9797
     
    110110        WTFMove(*websiteDataStoreParameters),
    111111        WTFMove(*customUserAgent),
    112         WTFMove(*customJavaScriptUserAgent),
     112        WTFMove(*customJavaScriptUserAgentAsSiteSpecificQuirks),
    113113        WTFMove(*customNavigatorPlatform),
    114114    } };
     
    119119    documentLoader.setCustomHeaderFields(WTFMove(websitePolicies.customHeaderFields));
    120120    documentLoader.setCustomUserAgent(websitePolicies.customUserAgent);
    121     documentLoader.setCustomJavaScriptUserAgent(websitePolicies.customJavaScriptUserAgent);
     121    documentLoader.setCustomJavaScriptUserAgentAsSiteSpecificQuirks(websitePolicies.customJavaScriptUserAgentAsSiteSpecificQuirks);
    122122    documentLoader.setCustomNavigatorPlatform(websitePolicies.customNavigatorPlatform);
    123123    documentLoader.setDeviceOrientationEventEnabled(websitePolicies.deviceOrientationEventEnabled);
  • trunk/Source/WebKit/Shared/WebsitePoliciesData.h

    r240541 r240646  
    5555    Optional<WebsiteDataStoreParameters> websiteDataStoreParameters;
    5656    String customUserAgent;
    57     String customJavaScriptUserAgent;
     57    String customJavaScriptUserAgentAsSiteSpecificQuirks;
    5858    String customNavigatorPlatform;
    5959
  • trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp

    r240541 r240646  
    5858        parameters = m_websiteDataStore->websiteDataStore().parameters();
    5959    return { contentBlockersEnabled(), deviceOrientationEventEnabled(), allowedAutoplayQuirks(), autoplayPolicy(),
    60         customHeaderFields(), popUpPolicy(), WTFMove(parameters), m_customUserAgent, m_customJavaScriptUserAgent, m_customNavigatorPlatform };
     60        customHeaderFields(), popUpPolicy(), WTFMove(parameters), m_customUserAgent, m_customJavaScriptUserAgentAsSiteSpecificQuirks, m_customNavigatorPlatform };
    6161}
    6262
  • trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h

    r240541 r240646  
    7676    const WTF::String& customUserAgent() const { return m_customUserAgent; }
    7777
    78     void setCustomJavaScriptUserAgent(const WTF::String& customJavaScriptUserAgent) { m_customJavaScriptUserAgent = customJavaScriptUserAgent; }
    79     const WTF::String& customJavaScriptUserAgent() const { return m_customJavaScriptUserAgent; }
     78    void setCustomJavaScriptUserAgentAsSiteSpecificQuirks(const WTF::String& customUserAgent) { m_customJavaScriptUserAgentAsSiteSpecificQuirks = customUserAgent; }
     79    const WTF::String& customJavaScriptUserAgentAsSiteSpecificQuirks() const { return m_customJavaScriptUserAgentAsSiteSpecificQuirks; }
    8080
    8181    void setCustomNavigatorPlatform(const WTF::String& customNavigatorPlatform) { m_customNavigatorPlatform = customNavigatorPlatform; }
     
    9393    RefPtr<WebsiteDataStore> m_websiteDataStore;
    9494    WTF::String m_customUserAgent;
    95     WTF::String m_customJavaScriptUserAgent;
     95    WTF::String m_customJavaScriptUserAgentAsSiteSpecificQuirks;
    9696    WTF::String m_customNavigatorPlatform;
    9797};
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h

    r240541 r240646  
    6060@property (nonatomic, strong) WKWebsiteDataStore *websiteDataStore WK_API_AVAILABLE(macosx(10.13.4), ios(11.3));
    6161@property (nonatomic, copy) NSString *customUserAgent WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    62 @property (nonatomic, copy) NSString *customJavaScriptUserAgent WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
     62@property (nonatomic, copy) NSString *customJavaScriptUserAgentAsSiteSpecificQuirks WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    6363@property (nonatomic, copy) NSString *customNavigatorPlatform WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    6464@property (nonatomic) BOOL deviceOrientationEventEnabled WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm

    r240541 r240646  
    210210}
    211211
    212 - (void)setCustomJavaScriptUserAgent:(NSString *)customUserAgent
    213 {
    214     _websitePolicies->setCustomJavaScriptUserAgent(customUserAgent);
    215 }
    216 
    217 - (NSString *)customJavaScriptUserAgent
    218 {
    219     return _websitePolicies->customJavaScriptUserAgent();
     212- (void)setCustomJavaScriptUserAgentAsSiteSpecificQuirks:(NSString *)customUserAgent
     213{
     214    _websitePolicies->setCustomJavaScriptUserAgentAsSiteSpecificQuirks(customUserAgent);
     215}
     216
     217- (NSString *)customJavaScriptUserAgentAsSiteSpecificQuirks
     218{
     219    return _websitePolicies->customJavaScriptUserAgentAsSiteSpecificQuirks();
    220220}
    221221
  • trunk/Tools/ChangeLog

    r240641 r240646  
     12019-01-28  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        User agent string override for navigator.userAgent should be site specific quirks
     4        https://bugs.webkit.org/show_bug.cgi?id=193950
     5
     6        Reviewed by Brent Fulgham.
     7
     8        Updated per the _WKWebsitePolicies rename.
     9
     10        * TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
     11        (-[CustomJavaScriptUserAgentDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
     12
    1132019-01-28  Ross Kirsling  <ross.kirsling@sony.com>
    214
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm

    r240541 r240646  
    3030#import <WebKit/WKNavigationDelegatePrivate.h>
    3131#import <WebKit/WKPagePrivate.h>
     32#import <WebKit/WKPreferencesPrivate.h>
    3233#import <WebKit/WKPreferencesRefPrivate.h>
    3334#import <WebKit/WKUIDelegatePrivate.h>
     
    11151116    _WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
    11161117    if (navigationAction.targetFrame.mainFrame) {
    1117         [websitePolicies setCustomJavaScriptUserAgent:@"Foo Custom JavaScript UserAgent"];
     1118        [websitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:@"Foo Custom JavaScript UserAgent"];
    11181119        if (_setCustomUserAgent)
    11191120            [websitePolicies setCustomUserAgent:@"Foo Custom Request UserAgent"];
     
    11431144    }];
    11441145    [configuration setURLSchemeHandler:schemeHandler.get() forURLScheme:@"test"];
     1146    [configuration preferences]._needsSiteSpecificQuirks = YES;
    11451147
    11461148    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
     
    11741176    }];
    11751177    [configuration setURLSchemeHandler:schemeHandler.get() forURLScheme:@"test"];
     1178    [configuration preferences]._needsSiteSpecificQuirks = YES;
    11761179
    11771180    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
Note: See TracChangeset for help on using the changeset viewer.