Changeset 245979 in webkit
- Timestamp:
- May 31, 2019, 1:00:07 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 43 edited
-
Source/WTF/ChangeLog (modified) (1 diff)
-
Source/WTF/wtf/Platform.h (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/en.lproj/Localizable.strings (modified) (1 diff)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/Configurations/Network-iOS.entitlements (modified) ( previous)
-
Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.h (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkDataTask.cpp (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/NetworkDataTask.h (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/NetworkLoad.cpp (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkLoad.h (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkLoadParameters.h (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp (modified) (4 diffs)
-
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h (modified) (1 diff)
-
Source/WebKit/NetworkProcess/PingLoad.cpp (modified) (1 diff)
-
Source/WebKit/NetworkProcess/PingLoad.h (modified) (1 diff)
-
Source/WebKit/NetworkProcess/cocoa/DeviceManagementSoftLink.h (added)
-
Source/WebKit/NetworkProcess/cocoa/DeviceManagementSoftLink.mm (added)
-
Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h (modified) (3 diffs)
-
Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (modified) (4 diffs)
-
Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h (modified) (3 diffs)
-
Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (modified) (5 diffs)
-
Source/WebKit/Platform/spi/Cocoa/DeviceManagementSPI.h (added)
-
Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb (modified) (1 diff)
-
Source/WebKit/Shared/API/APIError.h (modified) (1 diff)
-
Source/WebKit/Shared/API/c/WKErrorRef.cpp (modified) (1 diff)
-
Source/WebKit/Shared/API/c/WKErrorRef.h (modified) (1 diff)
-
Source/WebKit/Shared/WebErrors.cpp (modified) (1 diff)
-
Source/WebKit/Shared/WebErrors.h (modified) (1 diff)
-
Source/WebKit/UIProcess/API/APIWebsiteDataStore.cpp (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKErrorPrivate.h (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm (modified) (9 diffs)
-
Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (modified) (1 diff)
-
Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp (modified) (2 diffs)
-
Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h (modified) (3 diffs)
-
Source/WebKit/WebKit.xcodeproj/project.pbxproj (modified) (8 diffs)
-
Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (modified) (4 diffs)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/DeviceManagementRestrictions.mm (added)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm (modified) (2 diffs)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r245972 r245979 1 2019-05-31 Tim Horton <timothy_horton@apple.com> 2 3 Optionally respect device management restrictions when loading from the network 4 https://bugs.webkit.org/show_bug.cgi?id=198318 5 <rdar://problem/44263806> 6 7 Reviewed by Alex Christensen. 8 9 * wtf/Platform.h: 10 Add a HAVE flag for DeviceManagement.framework. 11 It does exist in the simulator, but does not function; pretend it doesn't exist. 12 1 13 2019-05-31 Geoffrey Garen <ggaren@apple.com> 2 14 -
trunk/Source/WTF/wtf/Platform.h
r245672 r245979 1548 1548 #endif 1549 1549 1550 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 120000 && !PLATFORM(IOS_SIMULATOR)) 1551 #define HAVE_DEVICE_MANAGEMENT 1 1552 #endif 1553 1550 1554 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101500 1551 1555 #define USE_REALPATH_FOR_DLOPEN_PREFLIGHT 1 -
trunk/Source/WebCore/ChangeLog
r245977 r245979 1 2019-05-31 Tim Horton <timothy_horton@apple.com> 2 3 Optionally respect device management restrictions when loading from the network 4 https://bugs.webkit.org/show_bug.cgi?id=198318 5 <rdar://problem/44263806> 6 7 Reviewed by Alex Christensen. 8 9 * en.lproj/Localizable.strings: 10 1 11 2019-05-31 Simon Fraser <simon.fraser@apple.com> 2 12 -
trunk/Source/WebCore/en.lproj/Localizable.strings
r244742 r245979 803 803 "The URL was blocked by a content filter" = "The URL was blocked by a content filter"; 804 804 805 /* WebKitErrorFrameLoadBlockedByRestrictions description */ 806 "The URL was blocked by device restrictions" = "The URL was blocked by device restrictions"; 807 805 808 /* WKErrorWebViewInvalidated description */ 806 809 "The WKWebView was invalidated" = "The WKWebView was invalidated"; -
trunk/Source/WebKit/ChangeLog
r245978 r245979 1 2019-05-31 Tim Horton <timothy_horton@apple.com> 2 3 Optionally respect device management restrictions when loading from the network 4 https://bugs.webkit.org/show_bug.cgi?id=198318 5 <rdar://problem/44263806> 6 7 Reviewed by Alex Christensen. 8 9 * Configurations/Network-iOS.entitlements: 10 * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: 11 Add some entitlements and sandbox holes required to talk to DeviceManagement. 12 13 * NetworkProcess/NetworkCORSPreflightChecker.cpp: 14 (WebKit::NetworkCORSPreflightChecker::wasBlockedByRestrictions): 15 * NetworkProcess/NetworkCORSPreflightChecker.h: 16 * NetworkProcess/NetworkLoad.cpp: 17 (WebKit::NetworkLoad::wasBlockedByRestrictions): 18 * NetworkProcess/NetworkLoad.h: 19 * NetworkProcess/PingLoad.cpp: 20 (WebKit::PingLoad::wasBlockedByRestrictions): 21 * NetworkProcess/PingLoad.h: 22 * Shared/WebErrors.cpp: 23 (WebKit::wasBlockedByRestrictionsError): 24 * Shared/WebErrors.h: 25 * NetworkProcess/NetworkDataTask.cpp: 26 (WebKit::NetworkDataTask::create): 27 (WebKit::NetworkDataTask::failureTimerFired): 28 * NetworkProcess/NetworkDataTask.h: 29 * Shared/API/APIError.h: 30 * Shared/API/c/WKErrorRef.cpp: 31 (WKErrorGetErrorCode): 32 * Shared/API/c/WKErrorRef.h: 33 Plumb a new error for loads that are blocked by device management restrictions. 34 35 * NetworkProcess/NetworkLoadParameters.h: 36 * NetworkProcess/NetworkResourceLoadParameters.cpp: 37 (WebKit::NetworkResourceLoadParameters::encode const): 38 (WebKit::NetworkResourceLoadParameters::decode): 39 * WebProcess/Network/WebLoaderStrategy.cpp: 40 (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): 41 Plumb a new bit that indicates whether a load is for the main resource of a frame. 42 We will only apply device management restrictions to main resources. 43 44 * NetworkProcess/NetworkSessionCreationParameters.cpp: 45 (WebKit::NetworkSessionCreationParameters::privateSessionParameters): 46 (WebKit::NetworkSessionCreationParameters::encode const): 47 (WebKit::NetworkSessionCreationParameters::decode): 48 * NetworkProcess/NetworkSessionCreationParameters.h: 49 * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: 50 (WebKit::WebsiteDataStore::parameters): 51 Plumb a new bit indicating whether a network session should respect device mangement 52 restrictions. 53 54 * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: 55 * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: 56 (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): 57 (WebKit::NetworkDataTaskCocoa::resume): 58 Defer resuming the load until we have a reply from DeviceManagement framework 59 about whether the URL should be blocked. If it is blocked, instead fail the load. 60 61 * NetworkProcess/cocoa/NetworkSessionCocoa.h: 62 * NetworkProcess/cocoa/NetworkSessionCocoa.mm: 63 (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): 64 (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): 65 (WebKit::NetworkSessionCocoa::deviceManagementPolicyMonitor): 66 Cache a single DMFWebsitePolicyMonitor instance per NetworkSession. 67 68 * UIProcess/API/APIWebsiteDataStore.cpp: 69 (API::WebsiteDataStore::defaultDataStoreConfiguration): 70 The default data store is persistent; its configuration should reflect that. 71 72 * UIProcess/API/Cocoa/WKProcessPool.mm: 73 (-[WKProcessPool _setAllowsAnySSLCertificateForServiceWorker:]): Style. 74 75 * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: 76 (-[WKWebsiteDataStore _initWithConfiguration:]): 77 Make it possible to create a non-persistent WKWebsiteDataStore from a 78 configuration, and ensure that it does not have any persistent storage directories set. 79 80 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: 81 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: 82 (-[_WKWebsiteDataStoreConfiguration init]): 83 (-[_WKWebsiteDataStoreConfiguration initWithNonPersistentConfiguration]): 84 (-[_WKWebsiteDataStoreConfiguration isPersistent]): 85 (-[_WKWebsiteDataStoreConfiguration _setWebStorageDirectory:]): 86 (-[_WKWebsiteDataStoreConfiguration _setIndexedDBDatabaseDirectory:]): 87 (-[_WKWebsiteDataStoreConfiguration _setWebSQLDatabaseDirectory:]): 88 (-[_WKWebsiteDataStoreConfiguration _setCookieStorageFile:]): 89 (-[_WKWebsiteDataStoreConfiguration _setResourceLoadStatisticsDirectory:]): 90 (-[_WKWebsiteDataStoreConfiguration _setCacheStorageDirectory:]): 91 (-[_WKWebsiteDataStoreConfiguration _setServiceWorkerRegistrationDirectory:]): 92 (-[_WKWebsiteDataStoreConfiguration deviceManagementRestrictionsEnabled]): 93 (-[_WKWebsiteDataStoreConfiguration setDeviceManagementRestrictionsEnabled:]): 94 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: 95 (WebKit::WebsiteDataStoreConfiguration::copy): 96 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: 97 (WebKit::WebsiteDataStoreConfiguration::isPersistent const): 98 (WebKit::WebsiteDataStoreConfiguration::setPersistent): 99 (WebKit::WebsiteDataStoreConfiguration::perOriginStorageQuota const): 100 (WebKit::WebsiteDataStoreConfiguration::deviceManagementRestrictionsEnabled const): 101 (WebKit::WebsiteDataStoreConfiguration::setDeviceManagementRestrictionsEnabled): 102 (WebKit::WebsiteDataStoreConfiguration::perOriginStorageQuota): Deleted. 103 Make it possible to create a _WKWebsiteDataStoreConfiguration that will create a non-persistent 104 data store. Add a bit to _WKWebsiteDataStoreConfiguration that controls whether the network 105 session will respect device management restrictions. 106 107 * WebKit.xcodeproj/project.pbxproj: 108 * WebKit/NetworkProcess/cocoa/DeviceManagementSoftLink.h: 109 * WebKit/NetworkProcess/cocoa/DeviceManagementSoftLink.mm: 110 * WebKit/Platform/spi/Cocoa/DeviceManagementSPI.h: 111 Add some soft-linking and SPI headers. 112 1 113 2019-05-31 Ryan Haddad <ryanhaddad@apple.com> 2 114 -
trunk/Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp
r244225 r245979 164 164 } 165 165 166 void NetworkCORSPreflightChecker::wasBlockedByRestrictions() 167 { 168 RELEASE_LOG_IF_ALLOWED("wasBlockedByRestrictions"); 169 m_completionCallback(ResourceError { errorDomainWebKitInternal, 0, m_parameters.originalRequest.url(), "Preflight response was blocked"_s, ResourceError::Type::AccessControl }); 170 } 171 166 172 NetworkTransactionInformation NetworkCORSPreflightChecker::takeInformation() 167 173 { -
trunk/Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.h
r245796 r245979 73 73 void wasBlocked() final; 74 74 void cannotShowURL() final; 75 void wasBlockedByRestrictions() final; 75 76 76 77 Parameters m_parameters; -
trunk/Source/WebKit/NetworkProcess/NetworkDataTask.cpp
r244225 r245979 51 51 ASSERT(!parameters.request.url().protocolIsBlob()); 52 52 #if PLATFORM(COCOA) 53 return NetworkDataTaskCocoa::create(session, client, parameters.request, parameters.webFrameID, parameters.webPageID, parameters.storedCredentialsPolicy, parameters.contentSniffingPolicy, parameters.contentEncodingSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect, parameters.shouldPreconnectOnly, parameters.isMainFrameNavigation, parameters. networkActivityTracker);53 return NetworkDataTaskCocoa::create(session, client, parameters.request, parameters.webFrameID, parameters.webPageID, parameters.storedCredentialsPolicy, parameters.contentSniffingPolicy, parameters.contentEncodingSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect, parameters.shouldPreconnectOnly, parameters.isMainFrameNavigation, parameters.isMainResourceNavigationForAnyFrame, parameters.networkActivityTracker); 54 54 #endif 55 55 #if USE(SOUP) … … 134 134 m_client->cannotShowURL(); 135 135 return; 136 case RestrictedURLFailure: 137 m_scheduledFailureType = NoFailure; 138 if (m_client) 139 m_client->wasBlockedByRestrictions(); 140 return; 136 141 case NoFailure: 137 142 ASSERT_NOT_REACHED(); -
trunk/Source/WebKit/NetworkProcess/NetworkDataTask.h
r242304 r245979 66 66 virtual void wasBlocked() = 0; 67 67 virtual void cannotShowURL() = 0; 68 virtual void wasBlockedByRestrictions() = 0; 68 69 69 70 virtual bool shouldCaptureExtraNetworkLoadMetrics() const { return false; } … … 135 136 NoFailure, 136 137 BlockedFailure, 137 InvalidURLFailure 138 InvalidURLFailure, 139 RestrictedURLFailure 138 140 }; 139 141 void failureTimerFired(); -
trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp
r244910 r245979 277 277 } 278 278 279 void NetworkLoad::wasBlockedByRestrictions() 280 { 281 m_client.get().didFailLoading(wasBlockedByRestrictionsError(m_currentRequest)); 282 } 279 283 280 284 String NetworkLoad::description() const -
trunk/Source/WebKit/NetworkProcess/NetworkLoad.h
r244910 r245979 81 81 void wasBlocked() final; 82 82 void cannotShowURL() final; 83 void wasBlockedByRestrictions() final; 83 84 84 85 void notifyDidReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&); -
trunk/Source/WebKit/NetworkProcess/NetworkLoadParameters.h
r245796 r245979 52 52 bool needsCertificateInfo { false }; 53 53 bool isMainFrameNavigation { false }; 54 bool isMainResourceNavigationForAnyFrame { false }; 54 55 Vector<RefPtr<WebCore::BlobDataFileReference>> blobFileReferences; 55 56 PreconnectOnly shouldPreconnectOnly { PreconnectOnly::No }; -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp
r245796 r245979 79 79 encoder << needsCertificateInfo; 80 80 encoder << isMainFrameNavigation; 81 encoder << isMainResourceNavigationForAnyFrame; 81 82 encoder << maximumBufferingTime; 82 83 … … 170 171 if (!decoder.decode(result.isMainFrameNavigation)) 171 172 return false; 173 if (!decoder.decode(result.isMainResourceNavigationForAnyFrame)) 174 return false; 172 175 if (!decoder.decode(result.maximumBufferingTime)) 173 176 return false; -
trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp
r245540 r245979 51 51 , { }, { } 52 52 #endif 53 , { }, { }, false, { }, { }, { }, { }, { } 53 , { }, { }, false, { }, { }, { }, { }, { }, { }, { } 54 54 }; 55 55 } … … 85 85 encoder << resourceLoadStatisticsManualPrevalentResource; 86 86 87 encoder << localStorageDirectory << localStorageDirectoryExtensionHandle; 87 encoder << localStorageDirectory << localStorageDirectoryExtensionHandle; 88 89 encoder << deviceManagementRestrictionsEnabled; 90 encoder << allLoadsBlockedByDeviceManagementRestrictionsForTesting; 88 91 } 89 92 … … 207 210 decoder >> localStorageDirectoryExtensionHandle; 208 211 if (!localStorageDirectoryExtensionHandle) 212 return WTF::nullopt; 213 214 Optional<bool> deviceManagementRestrictionsEnabled; 215 decoder >> deviceManagementRestrictionsEnabled; 216 if (!deviceManagementRestrictionsEnabled) 217 return WTF::nullopt; 218 219 Optional<bool> allLoadsBlockedByDeviceManagementRestrictionsForTesting; 220 decoder >> allLoadsBlockedByDeviceManagementRestrictionsForTesting; 221 if (!allLoadsBlockedByDeviceManagementRestrictionsForTesting) 209 222 return WTF::nullopt; 210 223 … … 236 249 , WTFMove(*shouldIncludeLocalhostInResourceLoadStatistics) 237 250 , WTFMove(*enableResourceLoadStatisticsDebugMode) 251 , WTFMove(*deviceManagementRestrictionsEnabled) 252 , WTFMove(*allLoadsBlockedByDeviceManagementRestrictionsForTesting) 238 253 , WTFMove(*resourceLoadStatisticsManualPrevalentResource) 239 254 , WTFMove(*localStorageDirectory) -
trunk/Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
r245540 r245979 87 87 bool shouldIncludeLocalhostInResourceLoadStatistics { true }; 88 88 bool enableResourceLoadStatisticsDebugMode { false }; 89 bool deviceManagementRestrictionsEnabled { false }; 90 bool allLoadsBlockedByDeviceManagementRestrictionsForTesting { false }; 89 91 WebCore::RegistrableDomain resourceLoadStatisticsManualPrevalentResource { }; 90 92 -
trunk/Source/WebKit/NetworkProcess/PingLoad.cpp
r244389 r245979 201 201 } 202 202 203 void PingLoad::wasBlockedByRestrictions() 204 { 205 RELEASE_LOG_IF_ALLOWED("wasBlockedByRestrictions"); 206 didFinish(wasBlockedByRestrictionsError(ResourceRequest { currentURL() })); 207 } 208 203 209 void PingLoad::timeoutTimerFired() 204 210 { -
trunk/Source/WebKit/NetworkProcess/PingLoad.h
r244288 r245979 59 59 void wasBlocked() final; 60 60 void cannotShowURL() final; 61 void wasBlockedByRestrictions() final; 61 62 void timeoutTimerFired(); 62 63 -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h
r245796 r245979 43 43 friend class NetworkSessionCocoa; 44 44 public: 45 static Ref<NetworkDataTask> create(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& request, uint64_t frameID, WebCore::PageIdentifier pageID, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly shouldPreconnectOnly, bool dataTaskIsForMainFrameNavigation, Optional<NetworkActivityTracker> networkActivityTracker)45 static Ref<NetworkDataTask> create(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& request, uint64_t frameID, WebCore::PageIdentifier pageID, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly shouldPreconnectOnly, bool dataTaskIsForMainFrameNavigation, bool dataTaskIsForMainResourceNavigationForAnyFrame, Optional<NetworkActivityTracker> networkActivityTracker) 46 46 { 47 return adoptRef(*new NetworkDataTaskCocoa(session, client, request, frameID, pageID, storedCredentialsPolicy, shouldContentSniff, shouldContentEncodingSniff, shouldClearReferrerOnHTTPSToHTTPRedirect, shouldPreconnectOnly, dataTaskIsForMainFrameNavigation, networkActivityTracker));47 return adoptRef(*new NetworkDataTaskCocoa(session, client, request, frameID, pageID, storedCredentialsPolicy, shouldContentSniff, shouldContentEncodingSniff, shouldClearReferrerOnHTTPSToHTTPRedirect, shouldPreconnectOnly, dataTaskIsForMainFrameNavigation, dataTaskIsForMainResourceNavigationForAnyFrame, networkActivityTracker)); 48 48 } 49 49 … … 76 76 77 77 private: 78 NetworkDataTaskCocoa(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, uint64_t frameID, WebCore::PageIdentifier, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly, bool dataTaskIsForMainFrameNavigation, Optional<NetworkActivityTracker>);78 NetworkDataTaskCocoa(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, uint64_t frameID, WebCore::PageIdentifier, WebCore::StoredCredentialsPolicy, WebCore::ContentSniffingPolicy, WebCore::ContentEncodingSniffingPolicy, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly, bool dataTaskIsForMainFrameNavigation, bool dataTaskIsForMainResourceNavigationForAnyFrame, Optional<NetworkActivityTracker>); 79 79 80 80 bool tryPasswordBasedAuthentication(const WebCore::AuthenticationChallenge&, ChallengeCompletionHandler&); … … 99 99 bool m_hasBeenSetToUseStatelessCookieStorage { false }; 100 100 #endif 101 102 bool m_isForMainResourceNavigationForAnyFrame { false }; 101 103 }; 102 104 -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
r245796 r245979 29 29 #import "AuthenticationChallengeDisposition.h" 30 30 #import "AuthenticationManager.h" 31 #import "DeviceManagementSPI.h" 31 32 #import "Download.h" 32 33 #import "DownloadProxyMessages.h" … … 40 41 #import <WebCore/ResourceRequest.h> 41 42 #import <pal/spi/cf/CFNetworkSPI.h> 43 #import <wtf/BlockPtr.h> 42 44 #import <wtf/FileSystem.h> 43 45 #import <wtf/MainThread.h> … … 161 163 } 162 164 163 NetworkDataTaskCocoa::NetworkDataTaskCocoa(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& requestWithCredentials, uint64_t frameID, WebCore::PageIdentifier pageID, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly shouldPreconnectOnly, bool dataTaskIsForMainFrameNavigation, Optional<NetworkActivityTracker> networkActivityTracker)165 NetworkDataTaskCocoa::NetworkDataTaskCocoa(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& requestWithCredentials, uint64_t frameID, WebCore::PageIdentifier pageID, WebCore::StoredCredentialsPolicy storedCredentialsPolicy, WebCore::ContentSniffingPolicy shouldContentSniff, WebCore::ContentEncodingSniffingPolicy shouldContentEncodingSniff, bool shouldClearReferrerOnHTTPSToHTTPRedirect, PreconnectOnly shouldPreconnectOnly, bool dataTaskIsForMainFrameNavigation, bool dataTaskIsForMainResourceNavigationForAnyFrame, Optional<NetworkActivityTracker> networkActivityTracker) 164 166 : NetworkDataTask(session, client, requestWithCredentials, storedCredentialsPolicy, shouldClearReferrerOnHTTPSToHTTPRedirect, dataTaskIsForMainFrameNavigation) 165 167 , m_frameID(frameID) 166 168 , m_pageID(pageID) 169 , m_isForMainResourceNavigationForAnyFrame(dataTaskIsForMainResourceNavigationForAnyFrame) 167 170 { 168 171 if (m_scheduledFailureType != NoFailure) … … 490 493 if (m_scheduledFailureType != NoFailure) 491 494 m_failureTimer.startOneShot(0_s); 495 496 auto& cocoaSession = static_cast<NetworkSessionCocoa&>(m_session.get()); 497 if (cocoaSession.deviceManagementRestrictionsEnabled() && m_isForMainResourceNavigationForAnyFrame) { 498 auto didDetermineDeviceRestrictionPolicyForURL = makeBlockPtr([this, protectedThis = makeRef(*this)](BOOL isBlocked) { 499 callOnMainThread([this, protectedThis = makeRef(*this), isBlocked] { 500 if (isBlocked) { 501 scheduleFailure(RestrictedURLFailure); 502 return; 503 } 504 505 [m_task resume]; 506 }); 507 }); 508 509 #if HAVE(DEVICE_MANAGEMENT) 510 if (cocoaSession.allLoadsBlockedByDeviceManagementRestrictionsForTesting()) 511 didDetermineDeviceRestrictionPolicyForURL(true); 512 else { 513 RetainPtr<NSURL> urlToCheck = [m_task currentRequest].URL; 514 [cocoaSession.deviceManagementPolicyMonitor() requestPoliciesForWebsites:@[ urlToCheck.get() ] completionHandler:makeBlockPtr([didDetermineDeviceRestrictionPolicyForURL, urlToCheck] (NSDictionary<NSURL *, NSNumber *> *policies, NSError *error) { 515 bool isBlocked = error || policies[urlToCheck.get()].integerValue != DMFPolicyOK; 516 didDetermineDeviceRestrictionPolicyForURL(isBlocked); 517 }).get()]; 518 } 519 #else 520 didDetermineDeviceRestrictionPolicyForURL(cocoaSession.allLoadsBlockedByDeviceManagementRestrictionsForTesting()); 521 #endif 522 return; 523 } 524 492 525 [m_task resume]; 493 526 } -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h
r244475 r245979 26 26 #pragma once 27 27 28 OBJC_CLASS DMFWebsitePolicyMonitor; 28 29 OBJC_CLASS NSData; 29 30 OBJC_CLASS NSURLSession; … … 70 71 void continueDidReceiveChallenge(const WebCore::AuthenticationChallenge&, NetworkDataTaskCocoa::TaskIdentifier, NetworkDataTaskCocoa*, CompletionHandler<void(WebKit::AuthenticationChallengeDisposition, const WebCore::Credential&)>&&); 71 72 73 bool deviceManagementRestrictionsEnabled() const { return m_deviceManagementRestrictionsEnabled; } 74 bool allLoadsBlockedByDeviceManagementRestrictionsForTesting() const { return m_allLoadsBlockedByDeviceManagementRestrictionsForTesting; } 75 DMFWebsitePolicyMonitor *deviceManagementPolicyMonitor(); 76 72 77 private: 73 78 NetworkSessionCocoa(NetworkProcess&, NetworkSessionCreationParameters&&); … … 94 99 String m_sourceApplicationSecondaryIdentifier; 95 100 RetainPtr<CFDictionaryRef> m_proxyConfiguration; 101 RetainPtr<DMFWebsitePolicyMonitor> m_deviceManagementPolicyMonitor; 102 bool m_deviceManagementRestrictionsEnabled { false }; 103 bool m_allLoadsBlockedByDeviceManagementRestrictionsForTesting { false }; 96 104 bool m_shouldLogCookieInformation { false }; 97 105 Seconds m_loadThrottleLatency; -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
r245901 r245979 52 52 #import <wtf/ObjCRuntimeExtras.h> 53 53 #import <wtf/ProcessPrivilege.h> 54 #import <wtf/SoftLinking.h> 54 55 #import <wtf/URL.h> 55 56 #import <wtf/text/WTFString.h> … … 58 59 #include <WebKitAdditions/NetworkSessionCocoaAdditions.h> 59 60 #endif 61 62 #import "DeviceManagementSoftLink.h" 60 63 61 64 using namespace WebKit; … … 722 725 723 726 // Avoid MIME type sniffing if the response comes back as 304 Not Modified. 724 int statusCode = [response respondsToSelector:@selector(statusCode)] ? [(id)response statusCode] : 0;727 int statusCode = [response isKindOfClass:NSHTTPURLResponse.class] ? [(NSHTTPURLResponse *)response statusCode] : 0; 725 728 if (statusCode != 304) { 726 729 bool isMainResourceLoad = networkDataTask->firstRequest().requester() == WebCore::ResourceRequest::Requester::Main; … … 989 992 m_statelessSessionDelegate = adoptNS([[WKNetworkSessionDelegate alloc] initWithNetworkSession:*this withCredentials:false]); 990 993 m_statelessSession = [NSURLSession sessionWithConfiguration:configuration delegate:static_cast<id>(m_statelessSessionDelegate.get()) delegateQueue:[NSOperationQueue mainQueue]]; 994 995 m_deviceManagementRestrictionsEnabled = parameters.deviceManagementRestrictionsEnabled; 996 m_allLoadsBlockedByDeviceManagementRestrictionsForTesting = parameters.allLoadsBlockedByDeviceManagementRestrictionsForTesting; 991 997 992 998 #if ENABLE(RESOURCE_LOAD_STATISTICS) … … 1176 1182 } 1177 1183 1178 } 1184 DMFWebsitePolicyMonitor *NetworkSessionCocoa::deviceManagementPolicyMonitor() 1185 { 1186 #if HAVE(DEVICE_MANAGEMENT) 1187 ASSERT(m_deviceManagementRestrictionsEnabled); 1188 if (!m_deviceManagementPolicyMonitor) 1189 m_deviceManagementPolicyMonitor = adoptNS([allocDMFWebsitePolicyMonitorInstance() initWithPolicyChangeHandler:nil]); 1190 return m_deviceManagementPolicyMonitor.get(); 1191 #else 1192 RELEASE_ASSERT_NOT_REACHED(); 1193 return nil; 1194 #endif 1195 } 1196 1197 } -
trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb
r243267 r245979 83 83 (global-name "com.apple.passd.library")) 84 84 85 (allow mach-lookup 86 (global-name "com.apple.dmd.policy") 87 (global-name "com.apple.siri.context.service") 88 (global-name "com.apple.ctcategories.service")) 89 85 90 (deny file-write-create 86 91 (vnode-type SYMLINK)) -
trunk/Source/WebKit/Shared/API/APIError.h
r218250 r245979 66 66 CannotUseRestrictedPort = 103, 67 67 FrameLoadBlockedByContentBlocker = 104, 68 FrameLoadBlockedByContentFilter = 105 68 FrameLoadBlockedByContentFilter = 105, 69 FrameLoadBlockedByRestrictions = 106, 69 70 }; 70 71 static const WTF::String& webKitPolicyErrorDomain(); -
trunk/Source/WebKit/Shared/API/c/WKErrorRef.cpp
r238887 r245979 59 59 case API::Error::Policy::FrameLoadBlockedByContentBlocker: 60 60 return kWKErrorCodeFrameLoadBlockedByContentBlocker; 61 case API::Error::Policy::FrameLoadBlockedByRestrictions: 62 return kWKErrorCodeFrameLoadBlockedByRestrictions; 61 63 case API::Error::Policy::FrameLoadBlockedByContentFilter: 62 64 return kWKErrorCodeFrameLoadBlockedByContentFilter; -
trunk/Source/WebKit/Shared/API/c/WKErrorRef.h
r203003 r245979 40 40 kWKErrorCodeFrameLoadBlockedByContentBlocker = 104, 41 41 kWKErrorCodeFrameLoadBlockedByContentFilter = 105, 42 kWKErrorCodeFrameLoadBlockedByRestrictions = 106, 42 43 kWKErrorCodeCannotFindPlugIn = 200, 43 44 kWKErrorCodeCannotLoadPlugIn = 201, -
trunk/Source/WebKit/Shared/WebErrors.cpp
r233113 r245979 53 53 } 54 54 55 ResourceError wasBlockedByRestrictionsError(const ResourceRequest& request) 56 { 57 return ResourceError(API::Error::webKitPolicyErrorDomain(), API::Error::Policy::FrameLoadBlockedByRestrictions, request.url(), WEB_UI_STRING("The URL was blocked by device restrictions", "WebKitErrorFrameLoadBlockedByRestrictions description")); 58 } 59 55 60 ResourceError interruptedForPolicyChangeError(const ResourceRequest& request) 56 61 { -
trunk/Source/WebKit/Shared/WebErrors.h
r238771 r245979 40 40 WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&); 41 41 WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&); 42 WebCore::ResourceError wasBlockedByRestrictionsError(const WebCore::ResourceRequest&); 42 43 WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&); 43 44 WebCore::ResourceError failedCustomProtocolSyncLoad(const WebCore::ResourceRequest&); -
trunk/Source/WebKit/UIProcess/API/APIWebsiteDataStore.cpp
r242289 r245979 146 146 auto configuration = WebKit::WebsiteDataStoreConfiguration::create(); 147 147 148 configuration->setPersistent(true); 149 148 150 configuration->setApplicationCacheDirectory(defaultApplicationCacheDirectory()); 149 151 configuration->setApplicationCacheFlatFileSubdirectoryName("Files"); -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKErrorPrivate.h
r243376 r245979 30 30 typedef NS_ENUM(NSInteger, _WKLegacyErrorCode) { 31 31 _WKErrorCodeFrameLoadInterruptedByPolicyChange WK_API_AVAILABLE(macos(10.11), ios(9.0)) = 102, 32 _WKErrorCodeFrameLoadBlockedByRestrictions WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)) = 106, 32 33 _WKLegacyErrorPlugInWillHandleLoad = 204, 33 34 } WK_API_AVAILABLE(macos(10.11), ios(8.3)); -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm
r245149 r245979 585 585 } 586 586 587 - (void)_setAllowsAnySSLCertificateForServiceWorker:(BOOL) allows587 - (void)_setAllowsAnySSLCertificateForServiceWorker:(BOOL)allows 588 588 { 589 589 #if ENABLE(SERVICE_WORKER) -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
r245328 r245979 230 230 return nil; 231 231 232 auto config = API::WebsiteDataStore::defaultDataStoreConfiguration(); 233 234 if (configuration._webStorageDirectory) 235 config->setLocalStorageDirectory(configuration._webStorageDirectory.path); 236 if (configuration._webSQLDatabaseDirectory) 237 config->setWebSQLDatabaseDirectory(configuration._webSQLDatabaseDirectory.path); 238 if (configuration._indexedDBDatabaseDirectory) 239 config->setIndexedDBDatabaseDirectory(configuration._indexedDBDatabaseDirectory.path); 240 if (configuration._cookieStorageFile) 241 config->setCookieStorageFile(configuration._cookieStorageFile.path); 242 if (configuration._resourceLoadStatisticsDirectory) 243 config->setResourceLoadStatisticsDirectory(configuration._resourceLoadStatisticsDirectory.path); 244 if (configuration._cacheStorageDirectory) 245 config->setCacheStorageDirectory(configuration._cacheStorageDirectory.path); 246 if (configuration._serviceWorkerRegistrationDirectory) 247 config->setServiceWorkerRegistrationDirectory(configuration._serviceWorkerRegistrationDirectory.path); 232 auto config = configuration.isPersistent ? API::WebsiteDataStore::defaultDataStoreConfiguration() : WebKit::WebsiteDataStoreConfiguration::create(); 233 234 RELEASE_ASSERT(config->isPersistent() == configuration.isPersistent); 235 236 if (configuration.isPersistent) { 237 if (configuration._webStorageDirectory) 238 config->setLocalStorageDirectory(configuration._webStorageDirectory.path); 239 if (configuration._webSQLDatabaseDirectory) 240 config->setWebSQLDatabaseDirectory(configuration._webSQLDatabaseDirectory.path); 241 if (configuration._indexedDBDatabaseDirectory) 242 config->setIndexedDBDatabaseDirectory(configuration._indexedDBDatabaseDirectory.path); 243 if (configuration._cookieStorageFile) 244 config->setCookieStorageFile(configuration._cookieStorageFile.path); 245 if (configuration._resourceLoadStatisticsDirectory) 246 config->setResourceLoadStatisticsDirectory(configuration._resourceLoadStatisticsDirectory.path); 247 if (configuration._cacheStorageDirectory) 248 config->setCacheStorageDirectory(configuration._cacheStorageDirectory.path); 249 if (configuration._serviceWorkerRegistrationDirectory) 250 config->setServiceWorkerRegistrationDirectory(configuration._serviceWorkerRegistrationDirectory.path); 251 } else { 252 RELEASE_ASSERT(!configuration._webStorageDirectory); 253 RELEASE_ASSERT(!configuration._webSQLDatabaseDirectory); 254 RELEASE_ASSERT(!configuration._indexedDBDatabaseDirectory); 255 RELEASE_ASSERT(!configuration._cookieStorageFile); 256 RELEASE_ASSERT(!configuration._resourceLoadStatisticsDirectory); 257 RELEASE_ASSERT(!configuration._cacheStorageDirectory); 258 RELEASE_ASSERT(!configuration._serviceWorkerRegistrationDirectory); 259 } 260 248 261 if (configuration.sourceApplicationBundleIdentifier) 249 262 config->setSourceApplicationBundleIdentifier(configuration.sourceApplicationBundleIdentifier); … … 254 267 if (configuration.httpsProxy) 255 268 config->setHTTPSProxy(configuration.httpsProxy); 256 257 API::Object::constructInWrapper<API::WebsiteDataStore>(self, WTFMove(config), PAL::SessionID::generatePersistentSessionID()); 269 config->setDeviceManagementRestrictionsEnabled(configuration.deviceManagementRestrictionsEnabled); 270 config->setAllLoadsBlockedByDeviceManagementRestrictionsForTesting(configuration.allLoadsBlockedByDeviceManagementRestrictionsForTesting); 271 272 auto sessionID = configuration.isPersistent ? PAL::SessionID::generatePersistentSessionID() : PAL::SessionID::generateEphemeralSessionID(); 273 274 API::Object::constructInWrapper<API::WebsiteDataStore>(self, WTFMove(config), sessionID); 258 275 259 276 return self; -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
r245294 r245979 33 33 @interface _WKWebsiteDataStoreConfiguration : NSObject 34 34 35 - (instancetype)init; // Creates a persistent configuration. 36 - (instancetype)initNonPersistentConfiguration WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 37 38 @property (nonatomic, readonly, getter=isPersistent) BOOL persistent WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 39 40 // These properties apply to both persistent and non-persistent data stores. 41 @property (nonatomic, nullable, copy) NSString *sourceApplicationBundleIdentifier WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); 42 @property (nonatomic, nullable, copy) NSString *sourceApplicationSecondaryIdentifier WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); 43 @property (nonatomic, nullable, copy, setter=setHTTPProxy:) NSURL *httpProxy WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); 44 @property (nonatomic, nullable, copy, setter=setHTTPSProxy:) NSURL *httpsProxy WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); 45 @property (nonatomic) BOOL deviceManagementRestrictionsEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 46 47 // These properties only make sense for persistent data stores, and will throw 48 // an exception if set for non-persistent stores. 35 49 @property (nonatomic, copy, setter=_setWebStorageDirectory:) NSURL *_webStorageDirectory; 36 50 @property (nonatomic, copy, setter=_setIndexedDBDatabaseDirectory:) NSURL *_indexedDBDatabaseDirectory; … … 40 54 @property (nonatomic, copy, setter=_setCacheStorageDirectory:) NSURL *_cacheStorageDirectory WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); 41 55 @property (nonatomic, copy, setter=_setServiceWorkerRegistrationDirectory:) NSURL *_serviceWorkerRegistrationDirectory WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); 42 @property (nonatomic, nullable, copy) NSString *sourceApplicationBundleIdentifier WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); 43 @property (nonatomic, nullable, copy) NSString *sourceApplicationSecondaryIdentifier WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); 44 @property (nonatomic, nullable, copy, setter=setHTTPProxy:) NSURL *httpProxy WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); 45 @property (nonatomic, nullable, copy, setter=setHTTPSProxy:) NSURL *httpsProxy WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); 56 57 // Testing only. 58 @property (nonatomic) BOOL allLoadsBlockedByDeviceManagementRestrictionsForTesting WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 46 59 47 60 @end -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
r242339 r245979 37 37 @implementation _WKWebsiteDataStoreConfiguration 38 38 39 - (instancetype)init 40 { 41 self = [super init]; 42 if (!self) 43 return nil; 44 45 _configuration->setPersistent(true); 46 47 return self; 48 } 49 50 - (instancetype)initNonPersistentConfiguration 51 { 52 self = [super init]; 53 if (!self) 54 return nil; 55 56 _configuration->setPersistent(false); 57 58 return self; 59 } 60 61 - (BOOL)isPersistent 62 { 63 return _configuration->isPersistent(); 64 } 65 39 66 - (NSURL *)_webStorageDirectory 40 67 { … … 44 71 - (void)_setWebStorageDirectory:(NSURL *)url 45 72 { 73 if (!_configuration->isPersistent()) 74 [NSException raise:NSInvalidArgumentException format:@"Cannot set _webStorageDirectory on a non-persistent _WKWebsiteDataStoreConfiguration."]; 46 75 checkURLArgument(url); 47 76 _configuration->setWebStorageDirectory(url.path); … … 55 84 - (void)_setIndexedDBDatabaseDirectory:(NSURL *)url 56 85 { 86 if (!_configuration->isPersistent()) 87 [NSException raise:NSInvalidArgumentException format:@"Cannot set _indexedDBDatabaseDirectory on a non-persistent _WKWebsiteDataStoreConfiguration."]; 57 88 checkURLArgument(url); 58 89 _configuration->setIndexedDBDatabaseDirectory(url.path); … … 66 97 - (void)_setWebSQLDatabaseDirectory:(NSURL *)url 67 98 { 99 if (!_configuration->isPersistent()) 100 [NSException raise:NSInvalidArgumentException format:@"Cannot set _webSQLDatabaseDirectory on a non-persistent _WKWebsiteDataStoreConfiguration."]; 68 101 checkURLArgument(url); 69 102 _configuration->setWebSQLDatabaseDirectory(url.path); … … 97 130 - (void)_setCookieStorageFile:(NSURL *)url 98 131 { 132 if (!_configuration->isPersistent()) 133 [NSException raise:NSInvalidArgumentException format:@"Cannot set _cookieStorageFile on a non-persistent _WKWebsiteDataStoreConfiguration."]; 99 134 checkURLArgument(url); 100 135 if ([url hasDirectoryPath]) … … 111 146 - (void)_setResourceLoadStatisticsDirectory:(NSURL *)url 112 147 { 148 if (!_configuration->isPersistent()) 149 [NSException raise:NSInvalidArgumentException format:@"Cannot set _resourceLoadStatisticsDirectory on a non-persistent _WKWebsiteDataStoreConfiguration."]; 113 150 checkURLArgument(url); 114 151 _configuration->setResourceLoadStatisticsDirectory(url.path); … … 122 159 - (void)_setCacheStorageDirectory:(NSURL *)url 123 160 { 161 if (!_configuration->isPersistent()) 162 [NSException raise:NSInvalidArgumentException format:@"Cannot set _cacheStorageDirectory on a non-persistent _WKWebsiteDataStoreConfiguration."]; 124 163 checkURLArgument(url); 125 164 _configuration->setCacheStorageDirectory(url.path); … … 133 172 - (void)_setServiceWorkerRegistrationDirectory:(NSURL *)url 134 173 { 174 if (!_configuration->isPersistent()) 175 [NSException raise:NSInvalidArgumentException format:@"Cannot set _serviceWorkerRegistrationDirectory on a non-persistent _WKWebsiteDataStoreConfiguration."]; 135 176 checkURLArgument(url); 136 177 _configuration->setServiceWorkerRegistrationDirectory(url.path); … … 157 198 } 158 199 200 - (BOOL)deviceManagementRestrictionsEnabled 201 { 202 return _configuration->deviceManagementRestrictionsEnabled(); 203 } 204 205 - (void)setDeviceManagementRestrictionsEnabled:(BOOL)enabled 206 { 207 _configuration->setDeviceManagementRestrictionsEnabled(enabled); 208 } 209 210 - (BOOL)allLoadsBlockedByDeviceManagementRestrictionsForTesting 211 { 212 return _configuration->allLoadsBlockedByDeviceManagementRestrictionsForTesting(); 213 } 214 215 - (void)setAllLoadsBlockedByDeviceManagementRestrictionsForTesting:(BOOL)blocked 216 { 217 _configuration->setAllLoadsBlockedByDeviceManagementRestrictionsForTesting(blocked); 218 } 219 159 220 - (API::Object&)_apiObject 160 221 { -
trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
r245540 r245979 132 132 shouldIncludeLocalhostInResourceLoadStatistics, 133 133 enableResourceLoadStatisticsDebugMode, 134 m_configuration->deviceManagementRestrictionsEnabled(), 135 m_configuration->allLoadsBlockedByDeviceManagementRestrictionsForTesting(), 134 136 WTFMove(resourceLoadStatisticsManualPrevalentResource), 135 137 WTFMove(localStorageDirectory), -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
r243911 r245979 40 40 auto copy = WebsiteDataStoreConfiguration::create(); 41 41 42 copy->m_isPersistent = this->m_isPersistent; 43 42 44 copy->m_cacheStorageDirectory = this->m_cacheStorageDirectory; 43 45 copy->m_perOriginStorageQuota = this->m_perOriginStorageQuota; … … 60 62 copy->m_httpProxy = this->m_httpProxy; 61 63 copy->m_httpsProxy = this->m_httpsProxy; 64 copy->m_deviceManagementRestrictionsEnabled = this->m_deviceManagementRestrictionsEnabled; 65 copy->m_allLoadsBlockedByDeviceManagementRestrictionsForTesting = this->m_allLoadsBlockedByDeviceManagementRestrictionsForTesting; 62 66 63 67 return copy; -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
r245698 r245979 39 39 Ref<WebsiteDataStoreConfiguration> copy(); 40 40 41 uint64_t perOriginStorageQuota() { return m_perOriginStorageQuota; } 41 bool isPersistent() const { return m_isPersistent; } 42 void setPersistent(bool isPersistent) { m_isPersistent = isPersistent; } 43 44 uint64_t perOriginStorageQuota() const { return m_perOriginStorageQuota; } 42 45 void setPerOriginStorageQuota(uint64_t quota) { m_perOriginStorageQuota = quota; } 43 46 … … 99 102 void setHTTPSProxy(URL&& proxy) { m_httpsProxy = WTFMove(proxy); } 100 103 104 bool deviceManagementRestrictionsEnabled() const { return m_deviceManagementRestrictionsEnabled; } 105 void setDeviceManagementRestrictionsEnabled(bool enabled) { m_deviceManagementRestrictionsEnabled = enabled; } 106 107 bool allLoadsBlockedByDeviceManagementRestrictionsForTesting() const { return m_allLoadsBlockedByDeviceManagementRestrictionsForTesting; } 108 void setAllLoadsBlockedByDeviceManagementRestrictionsForTesting(bool blocked) { m_allLoadsBlockedByDeviceManagementRestrictionsForTesting = blocked; } 109 101 110 private: 102 111 WebsiteDataStoreConfiguration(); 112 113 bool m_isPersistent { false }; 103 114 104 115 String m_cacheStorageDirectory; … … 122 133 URL m_httpProxy; 123 134 URL m_httpsProxy; 135 bool m_deviceManagementRestrictionsEnabled { false }; 136 bool m_allLoadsBlockedByDeviceManagementRestrictionsForTesting { false }; 124 137 }; 125 138 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r245715 r245979 431 431 29AD3093164B4C5D0072DEA9 /* LegacyCustomProtocolManagerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 29AD3092164B4C5D0072DEA9 /* LegacyCustomProtocolManagerProxy.h */; }; 432 432 29CD55AA128E294F00133C85 /* WKAccessibilityWebPageObjectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 29CD55A8128E294F00133C85 /* WKAccessibilityWebPageObjectBase.h */; }; 433 2D0C56FD229F1DEA00BD33E7 /* DeviceManagementSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D0C56FB229F1DEA00BD33E7 /* DeviceManagementSoftLink.h */; }; 434 2D0C56FE229F1DEA00BD33E7 /* DeviceManagementSoftLink.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D0C56FC229F1DEA00BD33E7 /* DeviceManagementSoftLink.mm */; }; 433 435 2D1087611D2C573E00B85F82 /* LoadParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D10875F1D2C573E00B85F82 /* LoadParameters.h */; }; 434 436 2D11B7512126A282006F8878 /* UnifiedSource1-mm.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D7DEC9421269E4C00B9F73C /* UnifiedSource1-mm.mm */; }; … … 703 705 2DA944A01884E4F000ED86DB /* WebIOSEventFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA944991884E4F000ED86DB /* WebIOSEventFactory.h */; }; 704 706 2DA944A41884E4F000ED86DB /* GestureTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA9449D1884E4F000ED86DB /* GestureTypes.h */; }; 707 2DAADA8F2298C21000E36B0C /* DeviceManagementSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DAADA8E2298C21000E36B0C /* DeviceManagementSPI.h */; }; 705 708 2DABA7721A817B1700EF0F1A /* WKPageRenderingProgressEventsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DABA7711A817B1700EF0F1A /* WKPageRenderingProgressEventsInternal.h */; }; 706 709 2DABA7741A817EE600EF0F1A /* WKPluginLoadPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DABA7731A817EE600EF0F1A /* WKPluginLoadPolicy.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 2507 2510 2D0035221BC7414800DA8716 /* PDFPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PDFPlugin.h; path = PDF/PDFPlugin.h; sourceTree = "<group>"; }; 2508 2511 2D0035231BC7414800DA8716 /* PDFPlugin.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PDFPlugin.mm; path = PDF/PDFPlugin.mm; sourceTree = "<group>"; }; 2512 2D0C56FB229F1DEA00BD33E7 /* DeviceManagementSoftLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceManagementSoftLink.h; sourceTree = "<group>"; }; 2513 2D0C56FC229F1DEA00BD33E7 /* DeviceManagementSoftLink.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DeviceManagementSoftLink.mm; sourceTree = "<group>"; }; 2509 2514 2D0CF64B21F2A80300787566 /* TextCheckingController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = TextCheckingController.mm; sourceTree = "<group>"; }; 2510 2515 2D0CF64C21F2A80300787566 /* TextCheckingController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextCheckingController.h; sourceTree = "<group>"; }; … … 2799 2804 2DA944B61884EA3500ED86DB /* WebPageIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebPageIOS.mm; path = ios/WebPageIOS.mm; sourceTree = "<group>"; }; 2800 2805 2DA944BC188511E700ED86DB /* NetworkProcessIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkProcessIOS.mm; sourceTree = "<group>"; }; 2806 2DAADA8E2298C21000E36B0C /* DeviceManagementSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceManagementSPI.h; sourceTree = "<group>"; }; 2801 2807 2DABA7711A817B1700EF0F1A /* WKPageRenderingProgressEventsInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageRenderingProgressEventsInternal.h; sourceTree = "<group>"; }; 2802 2808 2DABA7731A817EE600EF0F1A /* WKPluginLoadPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPluginLoadPolicy.h; sourceTree = "<group>"; }; … … 6106 6112 A1FB68261F6E51C100C43F9F /* CrashReporterClientSPI.h */, 6107 6113 57DCEDAA214B9B430016B847 /* DeviceIdentitySPI.h */, 6114 2DAADA8E2298C21000E36B0C /* DeviceManagementSPI.h */, 6108 6115 3754D5441B3A29FD003A4C7F /* NSInvocationSPI.h */, 6109 6116 37B47E2C1D64DB76005F4EFF /* objcSPI.h */, … … 7137 7144 isa = PBXGroup; 7138 7145 children = ( 7146 2D0C56FB229F1DEA00BD33E7 /* DeviceManagementSoftLink.h */, 7147 2D0C56FC229F1DEA00BD33E7 /* DeviceManagementSoftLink.mm */, 7139 7148 5315876B2076B713004BF9F3 /* NetworkActivityTrackerCocoa.mm */, 7140 7149 5321594F1DBAE6D70054AA3C /* NetworkDataTaskCocoa.h */, … … 9224 9233 57DCEDAB214C60090016B847 /* DeviceIdentitySPI.h in Headers */, 9225 9234 07297F9F1C17BBEA015F0735 /* DeviceIdHashSaltStorage.h in Headers */, 9235 2D0C56FD229F1DEA00BD33E7 /* DeviceManagementSoftLink.h in Headers */, 9236 2DAADA8F2298C21000E36B0C /* DeviceManagementSPI.h in Headers */, 9226 9237 83891B6C1A68C30B0030F386 /* DiagnosticLoggingClient.h in Headers */, 9227 9238 C18173612058424700DFDA65 /* DisplayLink.h in Headers */, … … 10983 10994 2D92A77E212B6A7100F493FD /* DataReference.cpp in Sources */, 10984 10995 2D92A77F212B6A7100F493FD /* Decoder.cpp in Sources */, 10996 2D0C56FE229F1DEA00BD33E7 /* DeviceManagementSoftLink.mm in Sources */, 10985 10997 1AB7D6191288B9D900CFD08C /* DownloadProxyMessageReceiver.cpp in Sources */, 10986 10998 1A64229912DD029200CAAE2C /* DrawingAreaMessageReceiver.cpp in Sources */, -
trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
r245796 r245979 336 336 loadParameters.isMainFrameNavigation = resourceLoader.frame() && resourceLoader.frame()->isMainFrame() && resourceLoader.options().mode == FetchOptions::Mode::Navigate; 337 337 338 loadParameters.isMainResourceNavigationForAnyFrame = resourceLoader.frame() && resourceLoader.options().mode == FetchOptions::Mode::Navigate; 339 338 340 loadParameters.shouldEnableCrossOriginResourcePolicy = RuntimeEnabledFeatures::sharedFeatures().crossOriginResourcePolicyEnabled() && !loadParameters.isMainFrameNavigation; 339 341 -
trunk/Tools/ChangeLog
r245978 r245979 1 2019-05-31 Tim Horton <timothy_horton@apple.com> 2 3 Optionally respect device management restrictions when loading from the network 4 https://bugs.webkit.org/show_bug.cgi?id=198318 5 <rdar://problem/44263806> 6 7 Reviewed by Alex Christensen. 8 9 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 10 * TestWebKitAPI/Tests/WebKitCocoa/DeviceManagementRestrictions.mm: Added. 11 (TEST): 12 * TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm: 13 (TestWebKitAPI::TEST): 14 * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm: 15 (TEST): 16 Clone a test that tests non-persistent data stores and ensure 17 that it works if the data store is created via a configuration as well. 18 19 Add a test that ensures that you can't create a data store configuration 20 with an invalid set of options. 21 22 Add a test that device management restrictions (when mocked) correctly 23 fail the load with a new, appropriate error. 24 1 25 2019-05-31 Ryan Haddad <ryanhaddad@apple.com> 2 26 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r245908 r245979 97 97 2D21FE591F04642900B58E7D /* WKPDFViewStablePresentationUpdateCallback.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D21FE581F04642800B58E7D /* WKPDFViewStablePresentationUpdateCallback.mm */; }; 98 98 2D2BEB2D22324E5F005544CA /* RequestTextInputContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D2BEB2C22324E5F005544CA /* RequestTextInputContext.mm */; }; 99 2D2D13B3229F408B005068AF /* DeviceManagementRestrictions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D2D13B2229F408B005068AF /* DeviceManagementRestrictions.mm */; }; 99 100 2D3CA3A8221DF4B40088E803 /* PageOverlayPlugin.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D3CA3A4221DF2390088E803 /* PageOverlayPlugin.mm */; }; 100 101 2D4CF8BD1D8360CC0001CE8D /* WKThumbnailView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D4CF8BC1D8360CC0001CE8D /* WKThumbnailView.mm */; }; … … 1477 1478 2D21FE581F04642800B58E7D /* WKPDFViewStablePresentationUpdateCallback.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKPDFViewStablePresentationUpdateCallback.mm; sourceTree = "<group>"; }; 1478 1479 2D2BEB2C22324E5F005544CA /* RequestTextInputContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RequestTextInputContext.mm; sourceTree = "<group>"; }; 1480 2D2D13B2229F408B005068AF /* DeviceManagementRestrictions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DeviceManagementRestrictions.mm; sourceTree = "<group>"; }; 1479 1481 2D3CA3A4221DF2390088E803 /* PageOverlayPlugin.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PageOverlayPlugin.mm; sourceTree = "<group>"; }; 1480 1482 2D4CF8BC1D8360CC0001CE8D /* WKThumbnailView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKThumbnailView.mm; path = WebKit/WKThumbnailView.mm; sourceTree = "<group>"; }; … … 2600 2602 2DC4CF761D2D9DD800ECCC94 /* DataDetection.mm */, 2601 2603 518EE51C20A78D3300E024F3 /* DecidePolicyForNavigationAction.mm */, 2604 2D2D13B2229F408B005068AF /* DeviceManagementRestrictions.mm */, 2602 2605 46918EFB2237283500468DFE /* DeviceOrientation.mm */, 2603 2606 CEA7F57B20895F5B0078EF6E /* DidResignInputElementStrongPasswordAppearance.mm */, … … 4142 4145 518EE51D20A78D3600E024F3 /* DecidePolicyForNavigationAction.mm in Sources */, 4143 4146 2D1646E21D1862CD00015A1A /* DeferredViewInWindowStateChange.mm in Sources */, 4147 2D2D13B3229F408B005068AF /* DeviceManagementRestrictions.mm in Sources */, 4144 4148 46918EFC2237283C00468DFE /* DeviceOrientation.mm in Sources */, 4145 4149 7CCE7EB91A411A7E00447C4C /* DeviceScaleFactorInDashboardRegions.mm in Sources */, -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm
r245978 r245979 34 34 #import <WebKit/WKWebsiteDataStorePrivate.h> 35 35 #import <WebKit/WebKit.h> 36 #import <WebKit/_WKWebsiteDataStoreConfiguration.h> 36 37 #import <wtf/text/WTFString.h> 37 38 … … 305 306 } 306 307 307 } 308 TEST(WebKit, SettingNonPersistentDataStorePathsThrowsException) 309 { 310 auto configuration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration]); 311 312 auto shouldThrowExceptionWhenUsed = [](Function<void(void)>&& modifier) { 313 @try { 314 modifier(); 315 EXPECT_TRUE(false); 316 } @catch (NSException *exception) { 317 EXPECT_WK_STREQ(NSInvalidArgumentException, exception.name); 318 } 319 }; 320 321 NSURL *fileURL = [NSURL fileURLWithPath:@"/tmp"]; 322 323 shouldThrowExceptionWhenUsed([&] { 324 [configuration _setWebStorageDirectory:fileURL]; 325 }); 326 shouldThrowExceptionWhenUsed([&] { 327 [configuration _setIndexedDBDatabaseDirectory:fileURL]; 328 }); 329 shouldThrowExceptionWhenUsed([&] { 330 [configuration _setWebSQLDatabaseDirectory:fileURL]; 331 }); 332 shouldThrowExceptionWhenUsed([&] { 333 [configuration _setCookieStorageFile:fileURL]; 334 }); 335 shouldThrowExceptionWhenUsed([&] { 336 [configuration _setResourceLoadStatisticsDirectory:fileURL]; 337 }); 338 shouldThrowExceptionWhenUsed([&] { 339 [configuration _setCacheStorageDirectory:fileURL]; 340 }); 341 shouldThrowExceptionWhenUsed([&] { 342 [configuration _setServiceWorkerRegistrationDirectory:fileURL]; 343 }); 344 345 // These properties shouldn't throw exceptions when set on a non-persistent data store. 346 [configuration setDeviceManagementRestrictionsEnabled:YES]; 347 [configuration setHTTPProxy:[NSURL URLWithString:@"http://www.apple.com/"]]; 348 [configuration setHTTPSProxy:[NSURL URLWithString:@"https://www.apple.com/"]]; 349 [configuration setSourceApplicationBundleIdentifier:@"com.apple.Safari"]; 350 [configuration setSourceApplicationSecondaryIdentifier:@"com.apple.Safari"]; 351 } 352 353 } -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm
r243045 r245979 428 428 EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:defaultResourceLoadStatisticsPath.path]); 429 429 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultResourceLoadStatisticsFilePath.path]); 430 431 [[NSFileManager defaultManager] removeItemAtURL:defaultResourceLoadStatisticsPath error:nil]; 432 } 433 434 TEST(WebKit, WebsiteDataStoreEphemeralViaConfiguration) 435 { 436 RetainPtr<WebsiteDataStoreCustomPathsMessageHandler> handler = adoptNS([[WebsiteDataStoreCustomPathsMessageHandler alloc] init]); 437 RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]); 438 [[configuration userContentController] addScriptMessageHandler:handler.get() name:@"testHandler"]; 439 440 NSURL *defaultResourceLoadStatisticsPath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/ResourceLoadStatistics/" stringByExpandingTildeInPath] isDirectory:YES]; 441 442 [[NSFileManager defaultManager] removeItemAtURL:defaultResourceLoadStatisticsPath error:nil]; 443 444 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultResourceLoadStatisticsPath.path]); 445 446 RetainPtr<_WKWebsiteDataStoreConfiguration> dataStoreConfiguration = adoptNS([[_WKWebsiteDataStoreConfiguration alloc] initNonPersistentConfiguration]); 447 configuration.get().websiteDataStore = [[[WKWebsiteDataStore alloc] _initWithConfiguration:dataStoreConfiguration.get()] autorelease]; 448 [configuration.get().websiteDataStore _setResourceLoadStatisticsEnabled:YES]; 449 450 // We expect the directory to be created by starting up the data store machinery, but not the data file. 451 EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:defaultResourceLoadStatisticsPath.path]); 452 453 NSURL *defaultResourceLoadStatisticsFilePath = [NSURL fileURLWithPath:[@"~/Library/WebKit/TestWebKitAPI/WebsiteData/ResourceLoadStatistics/full_browsing_session_resourceLog.plist" stringByExpandingTildeInPath] isDirectory:NO]; 454 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultResourceLoadStatisticsFilePath.path]); 455 456 RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]); 457 458 NSURLRequest *request = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"WebsiteDataStoreCustomPaths" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]; 459 [webView loadRequest:request]; 460 461 [[[webView configuration] processPool] _syncNetworkProcessCookies]; 462 463 // Forcibly shut down everything of WebKit that we can. 464 auto pid = [webView _webProcessIdentifier]; 465 if (pid) 466 kill(pid, SIGKILL); 467 468 webView = nil; 469 handler = nil; 470 configuration = nil; 471 472 EXPECT_TRUE([[NSFileManager defaultManager] fileExistsAtPath:defaultResourceLoadStatisticsPath.path]); 473 EXPECT_FALSE([[NSFileManager defaultManager] fileExistsAtPath:defaultResourceLoadStatisticsFilePath.path]); 474 475 [[NSFileManager defaultManager] removeItemAtURL:defaultResourceLoadStatisticsPath error:nil]; 430 476 } 431 477
Note:
See TracChangeset
for help on using the changeset viewer.