⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 242383 in webkit


Ignore:
Timestamp:
Mar 4, 2019, 1:26:52 PM (7 years ago)
Author:
Kocsen Chung
Message:

Cherry-pick r242302. rdar://problem/48572657

Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
https://bugs.webkit.org/show_bug.cgi?id=195229
<rdar://problem/48520362>

Reviewed by Chris Dumez.

Source/WebKit:

Just like _setBoundInterfaceIdentifier, we need a way to set these properties after instantiation of a WKWebsiteDataStore,
but we need to make sure we don't set it after the parameters have been copied to the NetworkProcess.

Functionality verified by manual testing. See radar.
Added an API test that verifies the setter restrictions work as expected.

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm: (-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]): (-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]): (-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]): (-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]):
  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::toPKPaymentRequest):
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: (WebKit::WebsiteDataStore::parameters):
  • UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::WebsiteDataStore): (WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier): (WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier):
  • UIProcess/WebsiteData/WebsiteDataStore.h: (WebKit::WebsiteDataStore::sourceApplicationBundleIdentifier): (WebKit::WebsiteDataStore::sourceApplicationSecondaryIdentifier):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm: (TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242302 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Location:
branches/safari-607.1.40.0-branch
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-607.1.40.0-branch/Source/WebKit/ChangeLog

    r242362 r242383  
     12019-03-04  Null  <null@apple.com>
     2
     3        Cherry-pick r242302. rdar://problem/48520362
     4
     5    Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
     6    https://bugs.webkit.org/show_bug.cgi?id=195229
     7    <rdar://problem/48520362>
     8   
     9    Reviewed by Chris Dumez.
     10   
     11    Source/WebKit:
     12   
     13    Just like _setBoundInterfaceIdentifier, we need a way to set these properties after instantiation of a WKWebsiteDataStore,
     14    but we need to make sure we don't set it after the parameters have been copied to the NetworkProcess.
     15   
     16    Functionality verified by manual testing.  See radar.
     17    Added an API test that verifies the setter restrictions work as expected.
     18   
     19    * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
     20    (-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]):
     21    (-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]):
     22    (-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]):
     23    (-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]):
     24    * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
     25    * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
     26    (WebKit::toPKPaymentRequest):
     27    * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
     28    (WebKit::WebsiteDataStore::parameters):
     29    * UIProcess/WebsiteData/WebsiteDataStore.cpp:
     30    (WebKit::WebsiteDataStore::WebsiteDataStore):
     31    (WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier):
     32    (WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier):
     33    * UIProcess/WebsiteData/WebsiteDataStore.h:
     34    (WebKit::WebsiteDataStore::sourceApplicationBundleIdentifier):
     35    (WebKit::WebsiteDataStore::sourceApplicationSecondaryIdentifier):
     36   
     37    Tools:
     38   
     39    * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
     40    (TEST):
     41   
     42    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242302 268f45cc-cd09-0410-ab3c-d52691b4dbfc
     43
     44    2019-03-01  Alex Christensen  <achristensen@webkit.org>
     45
     46            Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
     47            https://bugs.webkit.org/show_bug.cgi?id=195229
     48            <rdar://problem/48520362>
     49
     50            Reviewed by Chris Dumez.
     51
     52            Just like _setBoundInterfaceIdentifier, we need a way to set these properties after instantiation of a WKWebsiteDataStore,
     53            but we need to make sure we don't set it after the parameters have been copied to the NetworkProcess.
     54
     55            Functionality verified by manual testing.  See radar.
     56            Added an API test that verifies the setter restrictions work as expected.
     57
     58            * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
     59            (-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]):
     60            (-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]):
     61            (-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]):
     62            (-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]):
     63            * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
     64            * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
     65            (WebKit::toPKPaymentRequest):
     66            * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
     67            (WebKit::WebsiteDataStore::parameters):
     68            * UIProcess/WebsiteData/WebsiteDataStore.cpp:
     69            (WebKit::WebsiteDataStore::WebsiteDataStore):
     70            (WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier):
     71            (WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier):
     72            * UIProcess/WebsiteData/WebsiteDataStore.h:
     73            (WebKit::WebsiteDataStore::sourceApplicationBundleIdentifier):
     74            (WebKit::WebsiteDataStore::sourceApplicationSecondaryIdentifier):
     75
    1762019-03-04  Babak Shafiei  <bshafiei@apple.com>
    277
  • branches/safari-607.1.40.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm

    r239322 r242383  
    319319}
    320320
     321- (NSString *)_sourceApplicationBundleIdentifier
     322{
     323    return _websiteDataStore->websiteDataStore().sourceApplicationBundleIdentifier();
     324}
     325
     326- (void)_setSourceApplicationBundleIdentifier:(NSString *)identifier
     327{
     328    if (!_websiteDataStore->websiteDataStore().setSourceApplicationBundleIdentifier(identifier))
     329        [NSException raise:NSGenericException format:@"_setSourceApplicationBundleIdentifier cannot be called after networking has begun"];
     330}
     331
     332- (NSString *)_sourceApplicationSecondaryIdentifier
     333{
     334    return _websiteDataStore->websiteDataStore().sourceApplicationSecondaryIdentifier();
     335}
     336
     337- (void)_setSourceApplicationSecondaryIdentifier:(NSString *)identifier
     338{
     339    if (!_websiteDataStore->websiteDataStore().setSourceApplicationSecondaryIdentifier(identifier))
     340        [NSException raise:NSGenericException format:@"_setSourceApplicationSecondaryIdentifier cannot be called after networking has begun"];
     341}
     342
    321343- (NSDictionary *)_proxyConfiguration
    322344{
  • branches/safari-607.1.40.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h

    r237060 r242383  
    5656@property (nonatomic, setter=_setAllowsCellularAccess:) BOOL _allowsCellularAccess WK_API_AVAILABLE(macosx(10.13.4), ios(11.3));
    5757@property (nonatomic, setter=_setProxyConfiguration:) NSDictionary *_proxyConfiguration WK_API_AVAILABLE(macosx(10.14), ios(12.0));
     58@property (nonatomic, copy, setter=_setSourceApplicationBundleIdentifier:) NSString *_sourceApplicationBundleIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
     59@property (nonatomic, copy, setter=_setSourceApplicationSecondaryIdentifier:) NSString *_sourceApplicationSecondaryIdentifier WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
    5860
    5961- (void)_resourceLoadStatisticsSetShouldSubmitTelemetry:(BOOL)value WK_API_AVAILABLE(macosx(10.13), ios(11.0));
  • branches/safari-607.1.40.0-branch/Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm

    r239427 r242383  
    507507
    508508    // FIXME: Instead of using respondsToSelector, this should use a proper #if version check.
    509     auto& configuration = webPageProxy.websiteDataStore().configuration();
    510 
    511     if (!configuration.sourceApplicationBundleIdentifier().isEmpty() && [result respondsToSelector:@selector(setSourceApplicationBundleIdentifier:)])
    512         [result setSourceApplicationBundleIdentifier:configuration.sourceApplicationBundleIdentifier()];
    513 
    514     if (!configuration.sourceApplicationSecondaryIdentifier().isEmpty() && [result respondsToSelector:@selector(setSourceApplicationSecondaryIdentifier:)])
    515         [result setSourceApplicationSecondaryIdentifier:configuration.sourceApplicationSecondaryIdentifier()];
     509    auto& websiteDataStore = webPageProxy.websiteDataStore();
     510
     511    if (!websiteDataStore.sourceApplicationBundleIdentifier().isEmpty() && [result respondsToSelector:@selector(setSourceApplicationBundleIdentifier:)])
     512        [result setSourceApplicationBundleIdentifier:websiteDataStore.sourceApplicationBundleIdentifier()];
     513
     514    if (!websiteDataStore.sourceApplicationSecondaryIdentifier().isEmpty() && [result respondsToSelector:@selector(setSourceApplicationSecondaryIdentifier:)])
     515        [result setSourceApplicationSecondaryIdentifier:websiteDataStore.sourceApplicationSecondaryIdentifier()];
    516516
    517517#if PLATFORM(IOS_FAMILY)
  • branches/safari-607.1.40.0-branch/Source/WebKit/UIProcess/WebProcessPool.cpp

    r242025 r242383  
    493493        parameters.defaultDataStoreParameters.pendingCookies = copyToVector(m_websiteDataStore->websiteDataStore().pendingCookies());
    494494        m_websiteDataStore->websiteDataStore().clearPendingCookies();
     495        parameters.defaultDataStoreParameters.networkSessionParameters.sourceApplicationBundleIdentifier = m_websiteDataStore->websiteDataStore().sourceApplicationBundleIdentifier();
     496        parameters.defaultDataStoreParameters.networkSessionParameters.sourceApplicationSecondaryIdentifier = m_websiteDataStore->websiteDataStore().sourceApplicationSecondaryIdentifier();
     497        m_websiteDataStore->websiteDataStore().finalizeApplicationIdentifiers();
    495498    }
    496499
  • branches/safari-607.1.40.0-branch/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm

    r239322 r242383  
    9090        m_allowsCellularAccess,
    9191        m_proxyConfiguration,
    92         m_configuration->sourceApplicationBundleIdentifier(),
    93         m_configuration->sourceApplicationSecondaryIdentifier(),
     92        m_sourceApplicationBundleIdentifier,
     93        m_sourceApplicationSecondaryIdentifier,
    9494        shouldLogCookieInformation,
    9595        Seconds { [defaults integerForKey:WebKitNetworkLoadThrottleLatencyMillisecondsDefaultsKey] / 1000. },
     
    9797        WTFMove(httpsProxy),
    9898    };
     99    finalizeApplicationIdentifiers();
    99100
    100101    auto cookieFile = resolvedCookieStorageFile();
     
    108109
    109110    parameters.uiProcessCookieStorageIdentifier = m_uiProcessCookieStorageIdentifier;
    110     parameters.networkSessionParameters.sourceApplicationBundleIdentifier = m_configuration->sourceApplicationBundleIdentifier();
    111     parameters.networkSessionParameters.sourceApplicationSecondaryIdentifier = m_configuration->sourceApplicationSecondaryIdentifier();
     111    parameters.networkSessionParameters.sourceApplicationBundleIdentifier = m_sourceApplicationBundleIdentifier;
     112    parameters.networkSessionParameters.sourceApplicationSecondaryIdentifier = m_sourceApplicationSecondaryIdentifier;
    112113
    113114    parameters.pendingCookies = copyToVector(m_pendingCookies);
  • branches/safari-607.1.40.0-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp

    r242143 r242383  
    9696    , m_deviceIdHashSaltStorage(DeviceIdHashSaltStorage::create(isPersistent() ? m_configuration->deviceIdHashSaltsStorageDirectory() : String()))
    9797    , m_queue(WorkQueue::create("com.apple.WebKit.WebsiteDataStore"))
     98    , m_sourceApplicationBundleIdentifier(m_configuration->sourceApplicationBundleIdentifier())
     99    , m_sourceApplicationSecondaryIdentifier(m_configuration->sourceApplicationSecondaryIdentifier())
    98100#if ENABLE(WEB_AUTHN)
    99101    , m_authenticatorManager(makeUniqueRef<AuthenticatorManager>())
     
    17121714}
    17131715
    1714 }
     1716bool WebsiteDataStore::setSourceApplicationSecondaryIdentifier(String&& identifier)
     1717{
     1718    if (!m_allowedToSetApplicationIdentifiers)
     1719        return false;
     1720    m_sourceApplicationSecondaryIdentifier = WTFMove(identifier);
     1721    return true;
     1722}
     1723
     1724bool WebsiteDataStore::setSourceApplicationBundleIdentifier(String&& identifier)
     1725{
     1726    if (!m_allowedToSetApplicationIdentifiers)
     1727        return false;
     1728    m_sourceApplicationBundleIdentifier = WTFMove(identifier);
     1729    return true;
     1730}
     1731
     1732}
  • branches/safari-607.1.40.0-branch/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h

    r240064 r242383  
    159159    void setBoundInterfaceIdentifier(String&& identifier) { m_boundInterfaceIdentifier = WTFMove(identifier); }
    160160    const String& boundInterfaceIdentifier() { return m_boundInterfaceIdentifier; }
     161
     162    const String& sourceApplicationBundleIdentifier() const { return m_sourceApplicationBundleIdentifier; }
     163    bool setSourceApplicationBundleIdentifier(String&&);
     164
     165    const String& sourceApplicationSecondaryIdentifier() const { return m_sourceApplicationSecondaryIdentifier; }
     166    bool setSourceApplicationSecondaryIdentifier(String&&);
     167   
     168    void finalizeApplicationIdentifiers() { m_allowedToSetApplicationIdentifiers = false; }
    161169   
    162170    void setAllowsCellularAccess(AllowsCellularAccess allows) { m_allowsCellularAccess = allows; }
     
    249257    String m_boundInterfaceIdentifier;
    250258    AllowsCellularAccess m_allowsCellularAccess { AllowsCellularAccess::Yes };
     259    String m_sourceApplicationBundleIdentifier;
     260    String m_sourceApplicationSecondaryIdentifier;
     261    bool m_allowedToSetApplicationIdentifiers { true };
    251262
    252263#if HAVE(SEC_KEY_PROXY)
  • branches/safari-607.1.40.0-branch/Tools/ChangeLog

    r242143 r242383  
     12019-03-04  Null  <null@apple.com>
     2
     3        Cherry-pick r242302. rdar://problem/48520362
     4
     5    Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
     6    https://bugs.webkit.org/show_bug.cgi?id=195229
     7    <rdar://problem/48520362>
     8   
     9    Reviewed by Chris Dumez.
     10   
     11    Source/WebKit:
     12   
     13    Just like _setBoundInterfaceIdentifier, we need a way to set these properties after instantiation of a WKWebsiteDataStore,
     14    but we need to make sure we don't set it after the parameters have been copied to the NetworkProcess.
     15   
     16    Functionality verified by manual testing.  See radar.
     17    Added an API test that verifies the setter restrictions work as expected.
     18   
     19    * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
     20    (-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]):
     21    (-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]):
     22    (-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]):
     23    (-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]):
     24    * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
     25    * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
     26    (WebKit::toPKPaymentRequest):
     27    * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
     28    (WebKit::WebsiteDataStore::parameters):
     29    * UIProcess/WebsiteData/WebsiteDataStore.cpp:
     30    (WebKit::WebsiteDataStore::WebsiteDataStore):
     31    (WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier):
     32    (WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier):
     33    * UIProcess/WebsiteData/WebsiteDataStore.h:
     34    (WebKit::WebsiteDataStore::sourceApplicationBundleIdentifier):
     35    (WebKit::WebsiteDataStore::sourceApplicationSecondaryIdentifier):
     36   
     37    Tools:
     38   
     39    * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
     40    (TEST):
     41   
     42    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242302 268f45cc-cd09-0410-ab3c-d52691b4dbfc
     43
     44    2019-03-01  Alex Christensen  <achristensen@webkit.org>
     45
     46            Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
     47            https://bugs.webkit.org/show_bug.cgi?id=195229
     48            <rdar://problem/48520362>
     49
     50            Reviewed by Chris Dumez.
     51
     52            * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
     53            (TEST):
     54
    1552019-02-27  Babak Shafiei  <bshafiei@apple.com>
    256
  • branches/safari-607.1.40.0-branch/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm

    r239795 r242383  
    2929#import "Test.h"
    3030#import "TestNavigationDelegate.h"
     31#import "TestWKWebView.h"
     32#import <WebKit/WKPreferencesRef.h>
    3133#import <WebKit/WKProcessPoolPrivate.h>
    3234#import <WebKit/WKUserContentControllerPrivate.h>
     
    449451}
    450452
     453TEST(WebKit, ApplicationIdentifiers)
     454{
     455    auto websiteDataStoreConfiguration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] init]);
     456    [websiteDataStoreConfiguration setSourceApplicationBundleIdentifier:@"testidentifier"];
     457
     458    auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc] init]);
     459    auto websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:websiteDataStoreConfiguration.get()] autorelease];
     460    EXPECT_TRUE([websiteDataStore._sourceApplicationBundleIdentifier isEqualToString:@"testidentifier"]);
     461    [websiteDataStore _setSourceApplicationBundleIdentifier:@"otheridentifier"];
     462
     463    [webViewConfiguration setWebsiteDataStore:websiteDataStore];
     464    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:webViewConfiguration.get()]);
     465    [webView synchronouslyLoadTestPageNamed:@"simple"];
     466   
     467    RetainPtr<NSException> exception;
     468    @try {
     469        [websiteDataStore _setSourceApplicationBundleIdentifier:@"settingShouldFailNow"];
     470    } @catch(NSException *caught) {
     471        exception = caught;
     472    }
     473    EXPECT_TRUE([[exception reason] isEqualToString:@"_setSourceApplicationBundleIdentifier cannot be called after networking has begun"]);
     474    EXPECT_TRUE([websiteDataStore._sourceApplicationBundleIdentifier isEqualToString:@"otheridentifier"]);
     475    EXPECT_TRUE([[websiteDataStoreConfiguration sourceApplicationBundleIdentifier] isEqualToString:@"testidentifier"]);
     476}
     477
    451478#endif
Note: See TracChangeset for help on using the changeset viewer.