Source/WebKit/ChangeLog

 12017-10-25 Alex Christensen <achristensen@webkit.org>
 2
 3 Move WKWebViewConfiguration validation to WKWebView construction
 4 https://bugs.webkit.org/show_bug.cgi?id=178840
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 I'm trying to remove WKWebViewConfigurationInternal methods so I can make WKWebViewConfiguration
 9 a wrapper around an APIObject like all the other API objects. A small step towards making this easier
 10 is to remove the unnecessary method _validate and move its logic to its one callsite. I added an API test
 11 that ensures no change in behavior.
 12
 13 * UIProcess/API/Cocoa/WKWebView.mm:
 14 (-[WKWebView _initializeWithConfiguration:]):
 15 * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
 16 (-[WKWebViewConfiguration _validate]): Deleted.
 17 * UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:
 18
1192017-10-24 Youenn Fablet <youenn@apple.com>
220
321 Enable service worker to use cache storage api
223940

Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm

@@- (void)_initializeWithConfiguration:(WK
463463 [_configuration setProcessPool:relatedWebViewProcessPool];
464464 }
465465
466  [_configuration _validate];
 466 if (![_configuration processPool])
 467 [NSException raise:NSInvalidArgumentException format:@"configuration.processPool is nil"];
 468
 469 if (![_configuration preferences])
 470 [NSException raise:NSInvalidArgumentException format:@"configuration.preferences is nil"];
 471
 472 if (![_configuration userContentController])
 473 [NSException raise:NSInvalidArgumentException format:@"configuration.userContentController is nil"];
 474
 475 if (![_configuration websiteDataStore])
 476 [NSException raise:NSInvalidArgumentException format:@"configuration.websiteDataStore is nil"];
 477
 478 if (![_configuration _visitedLinkStore])
 479 [NSException raise:NSInvalidArgumentException format:@"configuration._visitedLinkStore is nil"];
 480
 481#if PLATFORM(IOS)
 482 if (![_configuration _contentProviderRegistry])
 483 [NSException raise:NSInvalidArgumentException format:@"configuration._contentProviderRegistry is nil"];
 484#endif
467485
468486 WebKit::WebProcessPool& processPool = *[_configuration processPool]->_processPool;
469487 processPool.setResourceLoadStatisticsEnabled(configuration.websiteDataStore._resourceLoadStatisticsEnabled);
223940

Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm

@@- (void)_setContentProviderRegistry:(WKW
495495}
496496#endif
497497
498 - (void)_validate
499 {
500  if (!self.processPool)
501  [NSException raise:NSInvalidArgumentException format:@"configuration.processPool is nil"];
502 
503  if (!self.preferences)
504  [NSException raise:NSInvalidArgumentException format:@"configuration.preferences is nil"];
505 
506  if (!self.userContentController)
507  [NSException raise:NSInvalidArgumentException format:@"configuration.userContentController is nil"];
508 
509  if (!self.websiteDataStore)
510  [NSException raise:NSInvalidArgumentException format:@"configuration.websiteDataStore is nil"];
511 
512  if (!self._visitedLinkStore)
513  [NSException raise:NSInvalidArgumentException format:@"configuration._visitedLinkStore is nil"];
514 
515 #if PLATFORM(IOS)
516  if (!self._contentProviderRegistry)
517  [NSException raise:NSInvalidArgumentException format:@"configuration._contentProviderRegistry is nil"];
518 #endif
519 }
520 
521498@end
522499
523500@implementation WKWebViewConfiguration (WKPrivate)
223940

Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h

3838@property (nonatomic, setter=_setContentProviderRegistry:) WKWebViewContentProviderRegistry *_contentProviderRegistry;
3939#endif
4040
41 - (void)_validate;
42 
4341@end
4442
4543#endif
223940

Tools/ChangeLog

 12017-10-25 Alex Christensen <achristensen@webkit.org>
 2
 3 Move WKWebViewConfiguration validation to WKWebView construction
 4 https://bugs.webkit.org/show_bug.cgi?id=178840
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
 9 * TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm: Added.
 10 (TEST):
 11
1122017-10-25 Eric Carlson <eric.carlson@apple.com>
213
314 [MediaStream] Clear cached gUM prompt state
223999

Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

243243 5CA1DEC81F71F70100E71BD3 /* HTTPHeaderField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CA1DEC71F71F40700E71BD3 /* HTTPHeaderField.cpp */; };
244244 5CA1DED91F74A91A00E71BD3 /* ContentRuleListNotification.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CA1DED81F74A87100E71BD3 /* ContentRuleListNotification.mm */; };
245245 5CB18BA81F5645E300EE23C4 /* ClickAutoFillButton.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CB18BA71F5645B200EE23C4 /* ClickAutoFillButton.mm */; };
 246 5CB3CE391FA1697F00C3A2D6 /* WKWebViewConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CB3CE381FA1691700C3A2D6 /* WKWebViewConfiguration.mm */; };
246247 5CB40B4E1F4B98D3007DC7B9 /* UIDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CB40B4D1F4B98BE007DC7B9 /* UIDelegate.mm */; };
247248 5CE354D91E70DA5C00BEFE3B /* WKContentExtensionStore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CE354D81E70D9C300BEFE3B /* WKContentExtensionStore.mm */; };
248249 5E4B1D2E1D404C6100053621 /* WKScrollViewDelegateCrash.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E4B1D2C1D404C6100053621 /* WKScrollViewDelegateCrash.mm */; };

13721373 5CA1DEC71F71F40700E71BD3 /* HTTPHeaderField.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTTPHeaderField.cpp; sourceTree = "<group>"; };
13731374 5CA1DED81F74A87100E71BD3 /* ContentRuleListNotification.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ContentRuleListNotification.mm; sourceTree = "<group>"; };
13741375 5CB18BA71F5645B200EE23C4 /* ClickAutoFillButton.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ClickAutoFillButton.mm; sourceTree = "<group>"; };
 1376 5CB3CE381FA1691700C3A2D6 /* WKWebViewConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewConfiguration.mm; sourceTree = "<group>"; };
13751377 5CB40B4D1F4B98BE007DC7B9 /* UIDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UIDelegate.mm; sourceTree = "<group>"; };
13761378 5CE354D81E70D9C300BEFE3B /* WKContentExtensionStore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKContentExtensionStore.mm; sourceTree = "<group>"; };
13771379 5E4B1D2C1D404C6100053621 /* WKScrollViewDelegateCrash.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKScrollViewDelegateCrash.mm; path = ../ios/WKScrollViewDelegateCrash.mm; sourceTree = "<group>"; };

20862088 51C683DD1EA134DB00650183 /* WKURLSchemeHandler-1.mm */,
20872089 5182C22D1F2BCB410059BA7C /* WKURLSchemeHandler-leaks.mm */,
20882090 2EFF06D61D8AF34A0004BB30 /* WKWebViewCandidateTests.mm */,
 2091 5CB3CE381FA1691700C3A2D6 /* WKWebViewConfiguration.mm */,
20892092 7C417F311D19E14800B8EF53 /* WKWebViewDefaultNavigationDelegate.mm */,
20902093 46E66A8F1F0D75590026D83C /* WKWebViewDiagnosticLogging.mm */,
20912094 2DB647871F4161F70051A89E /* WKWebViewDoesNotLogDuringInitialization.mm */,

35443547 5182C22E1F2BCE540059BA7C /* WKURLSchemeHandler-leaks.mm in Sources */,
35453548 514958BE1F7427AC00E87BAD /* WKWebViewAutofillTests.mm in Sources */,
35463549 2EFF06D71D8AF34A0004BB30 /* WKWebViewCandidateTests.mm in Sources */,
 3550 5CB3CE391FA1697F00C3A2D6 /* WKWebViewConfiguration.mm in Sources */,
35473551 A14FC5851B89739100D107EB /* WKWebViewConfigurationExtras.mm in Sources */,
35483552 7C417F331D19E14800B8EF53 /* WKWebViewDefaultNavigationDelegate.mm in Sources */,
35493553 46E66A901F0D75590026D83C /* WKWebViewDiagnosticLogging.mm in Sources */,
223940

Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm

 1/*
 2 * Copyright (C) 2017 Apple Inc. All rights reserved.
 3 *
 4 * Redistribution and use in source and binary forms, with or without
 5 * modification, are permitted provided that the following conditions
 6 * are met:
 7 * 1. Redistributions of source code must retain the above copyright
 8 * notice, this list of conditions and the following disclaimer.
 9 * 2. Redistributions in binary form must reproduce the above copyright
 10 * notice, this list of conditions and the following disclaimer in the
 11 * documentation and/or other materials provided with the distribution.
 12 *
 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 23 * THE POSSIBILITY OF SUCH DAMAGE.
 24 */
 25
 26#import "config.h"
 27
 28#if WK_API_ENABLED
 29
 30#import "PlatformUtilities.h"
 31#import <WebKit/WKWebView.h>
 32#import <WebKit/WKWebViewConfigurationPrivate.h>
 33#import <wtf/Function.h>
 34#import <wtf/RetainPtr.h>
 35
 36TEST(WebKit, InvalidConfiguration)
 37{
 38 auto shouldThrowExceptionWhenUsed = [](Function<void(WKWebViewConfiguration *)>&& modifier) {
 39 @try {
 40 auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
 41 modifier(configuration.get());
 42 auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
 43 EXPECT_TRUE(false);
 44 } @catch (NSException *exception) {
 45 EXPECT_WK_STREQ(NSInvalidArgumentException, exception.name);
 46 }
 47 };
 48
 49#pragma clang diagnostic push
 50#pragma clang diagnostic ignored "-Wnonnull"
 51 shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) {
 52 [configuration setProcessPool: nil];
 53 });
 54 shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) {
 55 [configuration setPreferences: nil];
 56 });
 57 shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) {
 58 [configuration setUserContentController: nil];
 59 });
 60 shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) {
 61 [configuration setWebsiteDataStore: nil];
 62 });
 63 shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) {
 64 [configuration _setVisitedLinkStore: nil];
 65 });
 66#if PLATFORM(IOS)
 67 shouldThrowExceptionWhenUsed([](WKWebViewConfiguration *configuration) {
 68 [configuration _setContentProviderRegistry: nil];
 69 });
 70#endif
 71#pragma clang diagnostic pop
 72}
 73
 74#endif // WK_API_ENABLED
nonexistent