WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-178840-20171026120033.patch (text/plain), 12.82 KB, created by
Alex Christensen
on 2017-10-26 12:00:34 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2017-10-26 12:00:34 PDT
Size:
12.82 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 223940) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,21 @@ >+2017-10-26 Alex Christensen <achristensen@webkit.org> >+ >+ Move WKWebViewConfiguration validation to WKWebView construction >+ https://bugs.webkit.org/show_bug.cgi?id=178840 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ I'm trying to remove WKWebViewConfigurationInternal methods so I can make WKWebViewConfiguration >+ a wrapper around an APIObject like all the other API objects. A small step towards making this easier >+ is to remove the unnecessary method _validate and move its logic to its one callsite. I added an API test >+ that ensures no change in behavior. >+ >+ * UIProcess/API/Cocoa/WKWebView.mm: >+ (-[WKWebView _initializeWithConfiguration:]): >+ * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: >+ (-[WKWebViewConfiguration _validate]): Deleted. >+ * UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h: >+ > 2017-10-24 Youenn Fablet <youenn@apple.com> > > Enable service worker to use cache storage api >Index: Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (revision 223940) >+++ Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (working copy) >@@ -447,6 +447,29 @@ static uint32_t convertSystemLayoutDirec > } > #endif > >+- (void)_validateConfiguration:(WKWebViewConfiguration *)configuration >+{ >+ if (!configuration.processPool) >+ [NSException raise:NSInvalidArgumentException format:@"configuration.processPool is nil"]; >+ >+ if (!configuration.preferences) >+ [NSException raise:NSInvalidArgumentException format:@"configuration.preferences is nil"]; >+ >+ if (!configuration.userContentController) >+ [NSException raise:NSInvalidArgumentException format:@"configuration.userContentController is nil"]; >+ >+ if (!configuration.websiteDataStore) >+ [NSException raise:NSInvalidArgumentException format:@"configuration.websiteDataStore is nil"]; >+ >+ if (!configuration._visitedLinkStore) >+ [NSException raise:NSInvalidArgumentException format:@"configuration._visitedLinkStore is nil"]; >+ >+#if PLATFORM(IOS) >+ if (!configuration._contentProviderRegistry) >+ [NSException raise:NSInvalidArgumentException format:@"configuration._contentProviderRegistry is nil"]; >+#endif >+} >+ > - (void)_initializeWithConfiguration:(WKWebViewConfiguration *)configuration > { > if (!configuration) >@@ -463,7 +486,7 @@ - (void)_initializeWithConfiguration:(WK > [_configuration setProcessPool:relatedWebViewProcessPool]; > } > >- [_configuration _validate]; >+ [self _validateConfiguration:_configuration.get()]; > > WebKit::WebProcessPool& processPool = *[_configuration processPool]->_processPool; > processPool.setResourceLoadStatisticsEnabled(configuration.websiteDataStore._resourceLoadStatisticsEnabled); >Index: Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (revision 223940) >+++ Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (working copy) >@@ -495,29 +495,6 @@ - (void)_setContentProviderRegistry:(WKW > } > #endif > >-- (void)_validate >-{ >- if (!self.processPool) >- [NSException raise:NSInvalidArgumentException format:@"configuration.processPool is nil"]; >- >- if (!self.preferences) >- [NSException raise:NSInvalidArgumentException format:@"configuration.preferences is nil"]; >- >- if (!self.userContentController) >- [NSException raise:NSInvalidArgumentException format:@"configuration.userContentController is nil"]; >- >- if (!self.websiteDataStore) >- [NSException raise:NSInvalidArgumentException format:@"configuration.websiteDataStore is nil"]; >- >- if (!self._visitedLinkStore) >- [NSException raise:NSInvalidArgumentException format:@"configuration._visitedLinkStore is nil"]; >- >-#if PLATFORM(IOS) >- if (!self._contentProviderRegistry) >- [NSException raise:NSInvalidArgumentException format:@"configuration._contentProviderRegistry is nil"]; >-#endif >-} >- > @end > > @implementation WKWebViewConfiguration (WKPrivate) >Index: Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h (revision 223940) >+++ Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h (working copy) >@@ -38,8 +38,6 @@ > @property (nonatomic, setter=_setContentProviderRegistry:) WKWebViewContentProviderRegistry *_contentProviderRegistry; > #endif > >-- (void)_validate; >- > @end > > #endif >Index: Tools/ChangeLog >=================================================================== >--- Tools/ChangeLog (revision 223999) >+++ Tools/ChangeLog (working copy) >@@ -1,3 +1,14 @@ >+2017-10-26 Alex Christensen <achristensen@webkit.org> >+ >+ Move WKWebViewConfiguration validation to WKWebView construction >+ https://bugs.webkit.org/show_bug.cgi?id=178840 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: >+ * TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm: Added. >+ (TEST): >+ > 2017-10-25 Eric Carlson <eric.carlson@apple.com> > > [MediaStream] Clear cached gUM prompt state >Index: Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj >=================================================================== >--- Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (revision 223940) >+++ Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (working copy) >@@ -243,6 +243,7 @@ > 5CA1DEC81F71F70100E71BD3 /* HTTPHeaderField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CA1DEC71F71F40700E71BD3 /* HTTPHeaderField.cpp */; }; > 5CA1DED91F74A91A00E71BD3 /* ContentRuleListNotification.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CA1DED81F74A87100E71BD3 /* ContentRuleListNotification.mm */; }; > 5CB18BA81F5645E300EE23C4 /* ClickAutoFillButton.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CB18BA71F5645B200EE23C4 /* ClickAutoFillButton.mm */; }; >+ 5CB3CE391FA1697F00C3A2D6 /* WKWebViewConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CB3CE381FA1691700C3A2D6 /* WKWebViewConfiguration.mm */; }; > 5CB40B4E1F4B98D3007DC7B9 /* UIDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CB40B4D1F4B98BE007DC7B9 /* UIDelegate.mm */; }; > 5CE354D91E70DA5C00BEFE3B /* WKContentExtensionStore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CE354D81E70D9C300BEFE3B /* WKContentExtensionStore.mm */; }; > 5E4B1D2E1D404C6100053621 /* WKScrollViewDelegateCrash.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E4B1D2C1D404C6100053621 /* WKScrollViewDelegateCrash.mm */; }; >@@ -1372,6 +1373,7 @@ > 5CA1DEC71F71F40700E71BD3 /* HTTPHeaderField.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTTPHeaderField.cpp; sourceTree = "<group>"; }; > 5CA1DED81F74A87100E71BD3 /* ContentRuleListNotification.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ContentRuleListNotification.mm; sourceTree = "<group>"; }; > 5CB18BA71F5645B200EE23C4 /* ClickAutoFillButton.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ClickAutoFillButton.mm; sourceTree = "<group>"; }; >+ 5CB3CE381FA1691700C3A2D6 /* WKWebViewConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewConfiguration.mm; sourceTree = "<group>"; }; > 5CB40B4D1F4B98BE007DC7B9 /* UIDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UIDelegate.mm; sourceTree = "<group>"; }; > 5CE354D81E70D9C300BEFE3B /* WKContentExtensionStore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKContentExtensionStore.mm; sourceTree = "<group>"; }; > 5E4B1D2C1D404C6100053621 /* WKScrollViewDelegateCrash.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKScrollViewDelegateCrash.mm; path = ../ios/WKScrollViewDelegateCrash.mm; sourceTree = "<group>"; }; >@@ -2086,6 +2088,7 @@ > 51C683DD1EA134DB00650183 /* WKURLSchemeHandler-1.mm */, > 5182C22D1F2BCB410059BA7C /* WKURLSchemeHandler-leaks.mm */, > 2EFF06D61D8AF34A0004BB30 /* WKWebViewCandidateTests.mm */, >+ 5CB3CE381FA1691700C3A2D6 /* WKWebViewConfiguration.mm */, > 7C417F311D19E14800B8EF53 /* WKWebViewDefaultNavigationDelegate.mm */, > 46E66A8F1F0D75590026D83C /* WKWebViewDiagnosticLogging.mm */, > 2DB647871F4161F70051A89E /* WKWebViewDoesNotLogDuringInitialization.mm */, >@@ -3544,6 +3547,7 @@ > 5182C22E1F2BCE540059BA7C /* WKURLSchemeHandler-leaks.mm in Sources */, > 514958BE1F7427AC00E87BAD /* WKWebViewAutofillTests.mm in Sources */, > 2EFF06D71D8AF34A0004BB30 /* WKWebViewCandidateTests.mm in Sources */, >+ 5CB3CE391FA1697F00C3A2D6 /* WKWebViewConfiguration.mm in Sources */, > A14FC5851B89739100D107EB /* WKWebViewConfigurationExtras.mm in Sources */, > 7C417F331D19E14800B8EF53 /* WKWebViewDefaultNavigationDelegate.mm in Sources */, > 46E66A901F0D75590026D83C /* WKWebViewDiagnosticLogging.mm in Sources */, >Index: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm >=================================================================== >--- Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm (nonexistent) >+++ Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm (working copy) >@@ -0,0 +1,74 @@ >+/* >+ * Copyright (C) 2017 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#import "config.h" >+ >+#if WK_API_ENABLED >+ >+#import "PlatformUtilities.h" >+#import <WebKit/WKWebView.h> >+#import <WebKit/WKWebViewConfigurationPrivate.h> >+#import <wtf/Function.h> >+#import <wtf/RetainPtr.h> >+ >+TEST(WebKit, InvalidConfiguration) >+{ >+ auto shouldThrowExceptionWhenUsed = [](Function<void(WKWebViewConfiguration *)>&& modifier) { >+ @try { >+ auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]); >+ modifier(configuration.get()); >+ auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]); >+ EXPECT_TRUE(false); >+ } @catch (NSException *exception) { >+ EXPECT_WK_STREQ(NSInvalidArgumentException, exception.name); >+ } >+ }; >+ >+#pragma clang diagnostic push >+#pragma clang diagnostic ignored "-Wnonnull" >+ shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) { >+ [configuration setProcessPool: nil]; >+ }); >+ shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) { >+ [configuration setPreferences: nil]; >+ }); >+ shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) { >+ [configuration setUserContentController: nil]; >+ }); >+ shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) { >+ [configuration setWebsiteDataStore: nil]; >+ }); >+ shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) { >+ [configuration _setVisitedLinkStore: nil]; >+ }); >+#if PLATFORM(IOS) >+ shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) { >+ [configuration _setContentProviderRegistry: nil]; >+ }); >+#endif >+#pragma clang diagnostic pop >+} >+ >+#endif // WK_API_ENABLED
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 178840
:
324935
|
325037
|
325041