[webkit-reviews] review granted: [Bug 222145] Serialize NSURLRequest (rather than CFURLRequest) in IPC : [Attachment 420888] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Feb 18 19:12:25 PST 2021


Darin Adler <darin at apple.com> has granted Brent Fulgham <bfulgham at webkit.org>'s
request for review:
Bug 222145: Serialize NSURLRequest (rather than CFURLRequest) in IPC
https://bugs.webkit.org/show_bug.cgi?id=222145

Attachment 420888: Patch

https://bugs.webkit.org/attachment.cgi?id=420888&action=review




--- Comment #4 from Darin Adler <darin at apple.com> ---
Comment on attachment 420888
  --> https://bugs.webkit.org/attachment.cgi?id=420888
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=420888&action=review

Looks OK but I think we can do better.

> Source/WebKit/ChangeLog:16
> +	   * Shared/mac/WebCoreArgumentCodersMac.mm:

Shouldn't this be in the Cocoa.mm file, not the Mac.mm file? I assume we use it
on iOS, not just Mac.

> Source/WebKit/Shared/mac/WebCoreArgumentCodersMac.mm:219
> +    NSError *error = nil;
> +    auto *archivedData = [NSKeyedArchiver
archivedDataWithRootObject:requestToSerialize.get() requiringSecureCoding:YES
error:&error];
> +    if (error)
> +	   LOG_ERROR("Failed to encode NSURLRequest: %d", error.code);
> +    IPC::encode(encoder, (__bridge CFDataRef)archivedData);

This should use WebCoreArgumentCodersCocoa.h. I believe it can just be this:

    encode(encoder, requestToSerialize.get());

> Source/WebKit/Shared/mac/WebCoreArgumentCodersMac.mm:223
>      encoder <<
resourceRequest.responseContentDispositionEncodingFallbackArray();

Is this still correct with NSURLRequest serialization?

> Source/WebKit/Shared/mac/WebCoreArgumentCodersMac.mm:257
> +    RetainPtr<CFDataRef> data;
> +    if (!IPC::decode(decoder, data) || !data)
> +	   return false;
> +
> +    NSError *error = nil;
> +    auto nsURLRequest = retainPtr([NSKeyedUnarchiver
unarchivedObjectOfClass:[NSURLRequest class] fromData:(__bridge NSData
*)data.get() error:&error]);
> +    if (error) {
> +	   LOG_ERROR("Failed to decode NSURLRequest: %d", error.code);
> +	   return false;
> +    }

This would just be:

    auto request = decode(decoder, NSURLRequest.class);
    if (!request)
	return false;


More information about the webkit-reviews mailing list