Changeset 282881 in webkit
- Timestamp:
- Sep 22, 2021, 10:58:45 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 16 edited
-
Source/WTF/ChangeLog (modified) (1 diff)
-
Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml (modified) (1 diff)
-
Source/WTF/wtf/URL.cpp (modified) (2 diffs)
-
Source/WTF/wtf/URL.h (modified) (2 diffs)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkLoad.cpp (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/NetworkProcess.cpp (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkProcess.h (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (modified) (2 diffs)
-
Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (modified) (1 diff)
-
Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/PlatformUtilities.h (modified) (1 diff)
-
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (modified) (6 diffs)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/BundlePageConsoleMessage.mm (added)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/FTP.mm (added)
-
Tools/TestWebKitAPI/cocoa/PlatformUtilitiesCocoa.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r282876 r282881 1 2021-09-22 Brady Eidson <beidson@apple.com> 2 3 Disable FTP. 4 <rdar://81193860> and https://bugs.webkit.org/show_bug.cgi?id=230477 5 6 Reviewed by Geoff Garen. 7 8 * Scripts/Preferences/WebPreferencesExperimental.yaml: 9 10 * wtf/URL.cpp: 11 (WTF::URL::protocolIsInFTPFamily const): 12 (WTF::protocolIsInFTPFamily): 13 * wtf/URL.h: 14 1 15 2021-09-22 Simon Fraser <simon.fraser@apple.com> 2 16 -
trunk/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml
r282752 r282881 422 422 default: false 423 423 424 FTPEnabled: 425 type: bool 426 humanReadableName: "FTP support enabled" 427 humanReadableDescription: "FTP support enabled" 428 defaultValue: 429 WebCore: 430 default: false 431 WebKit: 432 default: false 433 WebKitLegacy: 434 default: false 435 424 436 # FIXME: This seems to be accidentally enabled for WebKit1 right now due to the old code using the 425 437 # wrong preference key in some places. We should identify whether it really makes sense to keep this -
trunk/Source/WTF/wtf/URL.cpp
r281854 r282881 330 330 } 331 331 332 bool URL::protocolIsInFTPFamily() const 333 { 334 return WTF::protocolIsInFTPFamily(string()); 335 } 336 332 337 bool URL::protocolIs(const char* protocol) const 333 338 { … … 855 860 { 856 861 return protocolIsInternal(string, "javascript"); 862 } 863 864 bool protocolIsInFTPFamily(StringView url) 865 { 866 auto length = url.length(); 867 // Do the comparison without making a new string object. 868 return length >= 4 869 && isASCIIAlphaCaselessEqual(url[0], 'f') 870 && isASCIIAlphaCaselessEqual(url[1], 't') 871 && isASCIIAlphaCaselessEqual(url[2], 'p') 872 && (url[3] == ':' || (isASCIIAlphaCaselessEqual(url[3], 's') && length >= 5 && url[4] == ':')); 857 873 } 858 874 -
trunk/Source/WTF/wtf/URL.h
r281854 r282881 137 137 WTF_EXPORT_PRIVATE bool protocolIsAbout() const; 138 138 WTF_EXPORT_PRIVATE bool protocolIsJavaScript() const; 139 WTF_EXPORT_PRIVATE bool protocolIsInFTPFamily() const; 139 140 bool protocolIsInHTTPFamily() const; 140 141 WTF_EXPORT_PRIVATE bool isLocalFile() const; … … 260 261 WTF_EXPORT_PRIVATE bool protocolIs(StringView url, const char* protocol); 261 262 WTF_EXPORT_PRIVATE bool protocolIsJavaScript(StringView url); 263 WTF_EXPORT_PRIVATE bool protocolIsInFTPFamily(StringView url); 262 264 WTF_EXPORT_PRIVATE bool protocolIsInHTTPFamily(StringView url); 263 265 -
trunk/Source/WebKit/ChangeLog
r282879 r282881 1 2021-09-22 Brady Eidson <beidson@apple.com> 2 3 Disable FTP. 4 <rdar://81193860> and https://bugs.webkit.org/show_bug.cgi?id=230477 5 6 Reviewed by Geoff Garen. 7 8 Covered by new API tests. 9 10 * NetworkProcess/NetworkLoad.cpp: 11 (WebKit::NetworkLoad::start): 12 (WebKit::NetworkLoad::willPerformHTTPRedirection): 13 14 * NetworkProcess/NetworkProcess.cpp: 15 (WebKit::NetworkProcess::initializeNetworkProcess): 16 * NetworkProcess/NetworkProcess.h: 17 (WebKit::NetworkProcess::ftpEnabled const): 18 19 * NetworkProcess/NetworkProcessCreationParameters.cpp: 20 (WebKit::NetworkProcessCreationParameters::encode const): 21 (WebKit::NetworkProcessCreationParameters::decode): 22 * NetworkProcess/NetworkProcessCreationParameters.h: 23 24 * UIProcess/Cocoa/WebProcessPoolCocoa.mm: 25 (WebKit::WebProcessPool::platformInitializeNetworkProcess): 26 1 27 2021-09-22 Megan Gardner <megan_gardner@apple.com> 2 28 -
trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp
r282252 r282881 59 59 void NetworkLoad::start() 60 60 { 61 if (m_task) 62 m_task->resume(); 61 if (!m_task) 62 return; 63 64 if (!m_networkProcess->ftpEnabled() && m_parameters.request.url().protocolIsInFTPFamily()) { 65 m_task->clearClient(); 66 m_task = nullptr; 67 WebCore::NetworkLoadMetrics emptyMetrics; 68 didCompleteWithError(ResourceError { errorDomainWebKitInternal, 0, url(), "FTP URLs are disabled"_s, ResourceError::Type::AccessControl }, emptyMetrics); 69 return; 70 } 71 72 m_task->resume(); 63 73 } 64 74 … … 182 192 ASSERT(!m_redirectCompletionHandler); 183 193 194 if (!m_networkProcess->ftpEnabled() && request.url().protocolIsInFTPFamily()) { 195 m_task->clearClient(); 196 m_task = nullptr; 197 WebCore::NetworkLoadMetrics emptyMetrics; 198 didCompleteWithError(ResourceError { errorDomainWebKitInternal, 0, url(), "FTP URLs are disabled"_s, ResourceError::Type::AccessControl }, emptyMetrics); 199 200 if (completionHandler) 201 completionHandler({ }); 202 return; 203 } 204 184 205 redirectResponse.setSource(ResourceResponse::Source::Network); 185 206 m_redirectCompletionHandler = WTFMove(completionHandler); -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r282755 r282881 347 347 setPrivateClickMeasurementEnabled(parameters.enablePrivateClickMeasurement); 348 348 setPrivateClickMeasurementDebugMode(parameters.enablePrivateClickMeasurementDebugMode); 349 m_ftpEnabled = parameters.ftpEnabled; 349 350 350 351 for (auto& supplement : m_supplements.values()) -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.h
r282712 r282881 391 391 #endif 392 392 393 bool ftpEnabled() const { return m_ftpEnabled; } 394 393 395 private: 394 396 void platformInitializeNetworkProcess(const NetworkProcessCreationParameters&); … … 616 618 bool m_privateClickMeasurementEnabled { true }; 617 619 bool m_privateClickMeasurementDebugModeEnabled { false }; 620 bool m_ftpEnabled { false }; 618 621 619 622 HashMap<PAL::SessionID, Ref<NetworkStorageManager>> m_storageManagers; -
trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp
r281070 r282881 73 73 encoder << enablePrivateClickMeasurement; 74 74 encoder << enablePrivateClickMeasurementDebugMode; 75 encoder << ftpEnabled; 75 76 encoder << websiteDataStoreParameters; 76 77 } … … 147 148 if (!decoder.decode(result.enablePrivateClickMeasurementDebugMode)) 148 149 return false; 150 if (!decoder.decode(result.ftpEnabled)) 151 return false; 149 152 150 153 std::optional<Vector<WebsiteDataStoreParameters>> websiteDataStoreParameters; -
trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h
r281070 r282881 89 89 bool enablePrivateClickMeasurement { true }; 90 90 bool enablePrivateClickMeasurementDebugMode { false }; 91 bool ftpEnabled { false }; 91 92 92 93 Vector<WebsiteDataStoreParameters> websiteDataStoreParameters; -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
r282853 r282881 348 348 m_networkLoad->startWithScheduling(); 349 349 350 LOADER_RELEASE_LOG("startNetworkLoad: Going to the network (description=%" PUBLIC_LOG_STRING ")", m_networkLoad->description().utf8().data()); 350 if (m_networkLoad) 351 LOADER_RELEASE_LOG("startNetworkLoad: Going to the network (description=%" PUBLIC_LOG_STRING ")", m_networkLoad->description().utf8().data()); 351 352 } 352 353 -
trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
r282849 r282881 568 568 #endif 569 569 parameters.enablePrivateClickMeasurementDebugMode = [defaults boolForKey:[NSString stringWithFormat:format, WebPreferencesKey::privateClickMeasurementDebugModeEnabledKey().createCFString().get()]]; 570 571 parameters.ftpEnabled = [defaults objectForKey:WebPreferencesKey::ftpEnabledKey()] && [defaults boolForKey:WebPreferencesKey::ftpEnabledKey()]; 570 572 } 571 573 -
trunk/Tools/ChangeLog
r282878 r282881 1 2021-09-22 Brady Eidson <beidson@apple.com> 2 3 Disable FTP. 4 <rdar://81193860> and https://bugs.webkit.org/show_bug.cgi?id=230477 5 6 Reviewed by Geoff Garen. 7 8 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 9 10 * TestWebKitAPI/Tests/WebKitCocoa/BundlePageConsoleMessage.mm: Added. 11 (willAddMessageToConsoleCallback): 12 (-[BundlePageConsoleMessage webProcessPlugIn:didCreateBrowserContextController:]): 13 14 * TestWebKitAPI/Tests/WebKitCocoa/FTP.mm: Added. 15 (TestWebKitAPI::didReceivePageMessageFromInjectedBundle): 16 (TestWebKitAPI::setInjectedBundleClient): 17 (TestWebKitAPI::TEST): 18 19 * TestWebKitAPI/PlatformUtilities.h: 20 * TestWebKitAPI/cocoa/PlatformUtilitiesCocoa.mm: 21 (TestWebKitAPI::Util::toNS): 22 1 23 2021-09-22 Philippe Normand <pnormand@igalia.com> 2 24 -
trunk/Tools/TestWebKitAPI/PlatformUtilities.h
r276276 r282881 67 67 std::string toSTD(WKRetainPtr<WKStringRef>); 68 68 69 #if PLATFORM(MAC) 70 NSString *toNS(WKStringRef); 71 NSString *toNS(WKRetainPtr<WKStringRef>); 72 #endif // PLATFORM(MAC) 73 69 74 WKRetainPtr<WKStringRef> toWK(const char* utf8String); 70 75 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r282844 r282881 349 349 51714EB51CF8C78C004723C4 /* WebProcessKillIDBCleanup-2.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 51714EB31CF8C761004723C4 /* WebProcessKillIDBCleanup-2.html */; }; 350 350 51714EB81CF8CA17004723C4 /* WebProcessKillIDBCleanup.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51714EB61CF8C7A4004723C4 /* WebProcessKillIDBCleanup.mm */; }; 351 5175C7A226F876230003AF5C /* BundlePageConsoleMessage.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5175C7A126F876230003AF5C /* BundlePageConsoleMessage.mm */; }; 351 352 517E7E04151119C100D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 517E7E031511187500D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html */; }; 353 51819F2A26EAC98300E47375 /* FTP.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51819F2926EAC98200E47375 /* FTP.mm */; }; 352 354 51820A4D22F4EE7F00DF0A01 /* JavascriptURLNavigation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51820A4C22F4EE7700DF0A01 /* JavascriptURLNavigation.mm */; }; 353 355 5182C22E1F2BCE540059BA7C /* WKURLSchemeHandler-leaks.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5182C22D1F2BCB410059BA7C /* WKURLSchemeHandler-leaks.mm */; }; … … 2195 2197 51714EB61CF8C7A4004723C4 /* WebProcessKillIDBCleanup.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebProcessKillIDBCleanup.mm; sourceTree = "<group>"; }; 2196 2198 51714EB91D087416004723C4 /* CrossThreadTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrossThreadTask.cpp; sourceTree = "<group>"; }; 2199 5175C7A126F876230003AF5C /* BundlePageConsoleMessage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BundlePageConsoleMessage.mm; sourceTree = "<group>"; }; 2197 2200 517E7DFB15110EA600D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MemoryCachePruneWithinResourceLoadDelegate.mm; sourceTree = "<group>"; }; 2198 2201 517E7E031511187500D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = MemoryCachePruneWithinResourceLoadDelegate.html; sourceTree = "<group>"; }; 2202 51819F2926EAC98200E47375 /* FTP.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FTP.mm; sourceTree = "<group>"; }; 2199 2203 51820A4C22F4EE7700DF0A01 /* JavascriptURLNavigation.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = JavascriptURLNavigation.mm; sourceTree = "<group>"; }; 2200 2204 5182C22D1F2BCB410059BA7C /* WKURLSchemeHandler-leaks.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "WKURLSchemeHandler-leaks.mm"; sourceTree = "<group>"; }; … … 3436 3440 7A89BB662331635D0042CB1E /* BundleFormDelegatePlugIn.mm */, 3437 3441 7A89BB69233165650042CB1E /* BundleFormDelegateProtocol.h */, 3442 5175C7A126F876230003AF5C /* BundlePageConsoleMessage.mm */, 3438 3443 A13EBBAC1B87436F00097110 /* BundleParameters.mm */, 3439 3444 A13EBBAE1B87436F00097110 /* BundleParametersPlugIn.mm */, … … 3487 3492 CDA29B2820FD2A9900F15CED /* ExitFullscreenOnEnterPiP.mm */, 3488 3493 1D12BEBF245BEF85004C0B7A /* ExitPiPOnSuspendVideoElement.mm */, 3494 51819F2926EAC98200E47375 /* FTP.mm */, 3489 3495 2D8104CB1BEC13E70020DA46 /* FindInPage.mm */, 3490 3496 51242CD42374E61E00EED9C1 /* FindInPageAPI.mm */, … … 5837 5843 37BCA61C1B596BA9002012CA /* ShouldOpenExternalURLsInNewWindowActions.mm in Sources */, 5838 5844 7C83E0C51D0A654600FEBCF3 /* ShrinkToFit.mm in Sources */, 5845 51819F2A26EAC98300E47375 /* FTP.mm in Sources */, 5839 5846 7CCE7ECD1A411A7E00447C4C /* SimplifyMarkup.mm in Sources */, 5840 5847 C149D550242E98DF003EBB12 /* SleepDisabler.mm in Sources */, … … 6073 6080 F44C7A0020F9EEBF0014478C /* ParserYieldTokenPlugIn.mm in Sources */, 6074 6081 A13EBBAB1B87434600097110 /* PlatformUtilitiesCocoa.mm in Sources */, 6082 5175C7A226F876230003AF5C /* BundlePageConsoleMessage.mm in Sources */, 6075 6083 1A4F81CF1BDFFD53004E672E /* RemoteObjectRegistryPlugIn.mm in Sources */, 6076 6084 A12DDC021E837C2400CF6CAE /* RenderedImageWithOptionsPlugIn.mm in Sources */, -
trunk/Tools/TestWebKitAPI/cocoa/PlatformUtilitiesCocoa.mm
r273620 r282881 33 33 namespace TestWebKitAPI { 34 34 namespace Util { 35 36 #if PLATFORM(MAC) 37 38 NSString *toNS(WKStringRef string) 39 { 40 size_t bufferSize = WKStringGetMaximumUTF8CStringSize(string) + 1; 41 auto buffer = makeUniqueWithoutFastMallocCheck<char[]>(bufferSize); 42 size_t stringLength = WKStringGetUTF8CString(string, buffer.get(), bufferSize); 43 buffer[stringLength] = '\0'; 44 45 return [NSString stringWithUTF8String:buffer.get()]; 46 } 47 48 NSString *toNS(WKRetainPtr<WKStringRef> string) 49 { 50 return toNS(string.get()); 51 } 52 53 #endif // PLATFORM(MAC) 35 54 36 55 std::string toSTD(NSString *string)
Note:
See TracChangeset
for help on using the changeset viewer.