[webkit-reviews] review denied: [Bug 185715] Conversion between SecurityOriginData and DatabaseIdentifier is asymmetric when port is null : [Attachment 340672] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu May 17 19:38:45 PDT 2018
Chris Dumez <cdumez at apple.com> has denied Sihui Liu <sihui_liu at apple.com>'s
request for review:
Bug 185715: Conversion between SecurityOriginData and DatabaseIdentifier is
asymmetric when port is null
https://bugs.webkit.org/show_bug.cgi?id=185715
Attachment 340672: Patch
https://bugs.webkit.org/attachment.cgi?id=340672&action=review
--- Comment #3 from Chris Dumez <cdumez at apple.com> ---
Comment on attachment 340672
--> https://bugs.webkit.org/attachment.cgi?id=340672
Patch
View in context: https://bugs.webkit.org/attachment.cgi?id=340672&action=review
Note that you could have written an API test specific to SecurityOriginData,
instead of a higher level one, since you change is specific to
SecurityOriginData. See SecurityOrigin.cpp in our API test folder for existing
SecurityOrigin API tests.
> Source/WebCore/ChangeLog:8
> + Fixed the issue of null port when coverting between
SecurityOriginData and DatabaseIdentifier.
Typo: coverting
> Source/WebCore/page/SecurityOriginData.cpp:118
> + return SecurityOriginData {databaseIdentifier.substring(0,
separator1), databaseIdentifier.substring(separator1 + 1, separator2 -
separator1 - 1), std::nullopt};
We may want to store databaseIdentifier.substring(0, separator1) and
databaseIdentifier.substring(separator1 + 1, separator2 - separator1 - 1) in
local variables with meaningful names, to avoid duplication and improve
readability.
We could also use ", port ? make_optional<uint16_t>(port) : std::nullopt)"
below. This may actually be nicer.
Also, I know you copied the code below but we normally have spaces between the
curly brackets. return SecurityOriginData { a, b, c };
> Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:153
> + auto array = [[NSMutableArray alloc] init];
initWithCapacity since we know the size in advance?
Also, may be nice to use NSMutableArray<NSString *> instead of auto here. I
think auto ends up being NSMutableArray which is not as strongly typed.
> Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:155
> + [array addObject:[[NSString alloc]
initWithCString:origin.toString().utf8().data()
encoding:NSUTF8StringEncoding]];
a WTF String can implicitly be converted into a NSString. I think this should
work:
[array addObject:origin.toString()];
If not, maybe:
[array addObject:(NSString *)origin.toString()];
> Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:156
> + return array;
I suck at objc but aren't we supposed to autorelease here? since we transfer
ownership.
> Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:49
> +- (NSArray<NSString *> *)_originsString WK_API_AVAILABLE(macosx(10.13.4),
ios(11.3));
You always want this for new API:
WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
> Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStorageDatabaseTracker.mm:60
> + configuration.get().websiteDataStore = [WKWebsiteDataStore
defaultDataStore];
Isn't this the default? If so, do we even need to pass in a configuration?
> Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStorageDatabaseTracker.mm:62
> + webView.get().UIDelegate = [[LocalStorageUIDelegate alloc] init];
Isn't this leaking? We may want to store [[LocalStorageUIDelegate alloc] init]
in a local RetainPtr<>, then then assign localStorageUIDelegate.get() here.
> Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStorageDatabaseTracker.mm:67
> + TestWebKitAPI::Util::sleep(1);
Why is this needed? Are we sure this is not going to be flaky?
> Tools/TestWebKitAPI/Tests/WebKitCocoa/LocalStorageDatabaseTracker.mm:75
> + EXPECT_TRUE([[origins objectAtIndex:0]
isEqual:@"http://localhost"]);
Is there a way to make EXPECT_STREQ() work here? It would make the output more
useful when failing.
More information about the webkit-reviews
mailing list