WebKit Bugzilla
Attachment 373775 Details for
Bug 199643
: Fix integer type encoding / decoding in WKRemoteObjectCoder
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-199643-20190709151020.patch (text/plain), 9.02 KB, created by
Chris Dumez
on 2019-07-09 15:10:20 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Chris Dumez
Created:
2019-07-09 15:10:20 PDT
Size:
9.02 KB
patch
obsolete
>Subversion Revision: 247278 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index ddba794bf2158ffa293f0be88f12933c80697935..4146a496baebd285cd77a858dd38d438aefe4ad6 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,19 @@ >+2019-07-09 Chris Dumez <cdumez@apple.com> >+ >+ Fix integer type encoding / decoding in WKRemoteObjectCoder >+ https://bugs.webkit.org/show_bug.cgi?id=199643 >+ <rdar://problem/52732342> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ As per [1], q / Q match to long long / unsigned long long, not long / unsigned long. >+ >+ [1] https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100 >+ >+ * Shared/API/Cocoa/WKRemoteObjectCoder.mm: >+ (encodeInvocationArguments): >+ (decodeInvocationArguments): >+ > 2019-07-09 Truitt Savell <tsavell@apple.com> > > Unreviewed, rolling out r247230. >diff --git a/Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm b/Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm >index c4424f0e1ea49e92e389dd937b075c7cc784a92a..150b941873496989753912c4dde03e72b746b559 100644 >--- a/Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm >+++ b/Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm >@@ -177,7 +177,7 @@ static void encodeInvocationArguments(WKRemoteObjectEncoder *encoder, NSInvocati > } > > // long >- case 'q': { >+ case 'l': { > long value; > [invocation getArgument:&value atIndex:i]; > >@@ -186,7 +186,7 @@ static void encodeInvocationArguments(WKRemoteObjectEncoder *encoder, NSInvocati > } > > // unsigned long >- case 'Q': { >+ case 'L': { > unsigned long value; > [invocation getArgument:&value atIndex:i]; > >@@ -194,6 +194,24 @@ static void encodeInvocationArguments(WKRemoteObjectEncoder *encoder, NSInvocati > break; > } > >+ // long long >+ case 'q': { >+ long long value; >+ [invocation getArgument:&value atIndex:i]; >+ >+ encodeToObjectStream(encoder, @(value)); >+ break; >+ } >+ >+ // unsigned long long >+ case 'Q': { >+ unsigned long long value; >+ [invocation getArgument:&value atIndex:i]; >+ >+ encodeToObjectStream(encoder, @(value)); >+ break; >+ } >+ > // Objective-C object > case '@': { > id value; >@@ -530,18 +548,32 @@ static void decodeInvocationArguments(WKRemoteObjectDecoder *decoder, NSInvocati > } > > // long >- case 'q': { >+ case 'l': { > long value = [decodeObjectFromObjectStream(decoder, { (__bridge CFTypeRef)[NSNumber class] }) longValue]; > [invocation setArgument:&value atIndex:i]; > break; > } > > // unsigned long >- case 'Q': { >+ case 'L': { > unsigned long value = [decodeObjectFromObjectStream(decoder, { (__bridge CFTypeRef)[NSNumber class] }) unsignedLongValue]; > [invocation setArgument:&value atIndex:i]; > break; > } >+ >+ // long long >+ case 'q': { >+ long value = [decodeObjectFromObjectStream(decoder, { (__bridge CFTypeRef)[NSNumber class] }) longLongValue]; >+ [invocation setArgument:&value atIndex:i]; >+ break; >+ } >+ >+ // unsigned long long >+ case 'Q': { >+ unsigned long value = [decodeObjectFromObjectStream(decoder, { (__bridge CFTypeRef)[NSNumber class] }) unsignedLongLongValue]; >+ [invocation setArgument:&value atIndex:i]; >+ break; >+ } > > // Objective-C object > case '@': { >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 2525ecd6102b420c36ee664ea9e15f387406c793..9d5e80153309a460478694e13b82ba3030dc2d84 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,22 @@ >+2019-07-09 Chris Dumez <cdumez@apple.com> >+ >+ Fix integer type encoding / decoding in WKRemoteObjectCoder >+ https://bugs.webkit.org/show_bug.cgi?id=199643 >+ <rdar://problem/52732342> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Update API test coverage. >+ >+ * TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h: >+ * TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm: >+ (TEST): >+ * TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm: >+ (-[RemoteObjectRegistryPlugIn takeUnsignedLongLong:completionHandler:]): >+ (-[RemoteObjectRegistryPlugIn takeLongLong:completionHandler:]): >+ (-[RemoteObjectRegistryPlugIn takeUnsignedLong:completionHandler:]): >+ (-[RemoteObjectRegistryPlugIn takeLong:completionHandler:]): >+ > 2019-07-09 Sihui Liu <sihui_liu@apple.com> > > Only allow fetching and removing session credentials from WebsiteDataStore >diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h b/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h >index 07d3a6baa2b4f3d03c01da6fd2ffc7e6b7df9f4a..bc973110f7cea06cb557d7968f2f4249065abb5c 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h >+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h >@@ -44,6 +44,10 @@ > - (void)selectionAndClickInformationForClickAtPoint:(NSValue *)pointValue completionHandler:(void (^)(NSDictionary *))completionHandler; > - (void)takeRange:(NSRange)range completionHandler:(void (^)(NSUInteger location, NSUInteger length))completionHandler; > - (void)takeSize:(CGSize)size completionHandler:(void (^)(CGFloat width, CGFloat height))completionHandler; >+- (void)takeUnsignedLongLong:(unsigned long long)value completionHandler:(void (^)(unsigned long long value))completionHandler; >+- (void)takeLongLong:(long long)value completionHandler:(void (^)(long long value))completionHandler; >+- (void)takeUnsignedLong:(unsigned long)value completionHandler:(void (^)(unsigned long value))completionHandler; >+- (void)takeLong:(long)value completionHandler:(void (^)(long value))completionHandler; > - (void)doNotCallCompletionHandler:(void (^)())completionHandler; > > @end >diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm b/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm >index 789b46fc3db375849a7a299efdc01b01bf752fff..1bc164314dc12de99e60c9355db6c500cdffe7b5 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm >+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm >@@ -92,6 +92,38 @@ TEST(WebKit, RemoteObjectRegistry) > > isDone = false; > >+ [object takeUnsignedLongLong:std::numeric_limits<unsigned long long>::max() completionHandler:^(unsigned long long value) { >+ EXPECT_EQ(std::numeric_limits<unsigned long long>::max(), value); >+ isDone = true; >+ }]; >+ TestWebKitAPI::Util::run(&isDone); >+ >+ isDone = false; >+ >+ [object takeLongLong:std::numeric_limits<long long>::max() completionHandler:^(long long value) { >+ EXPECT_EQ(std::numeric_limits<long long>::max(), value); >+ isDone = true; >+ }]; >+ TestWebKitAPI::Util::run(&isDone); >+ >+ isDone = false; >+ >+ [object takeUnsignedLong:std::numeric_limits<unsigned long>::max() completionHandler:^(unsigned long value) { >+ EXPECT_EQ(std::numeric_limits<unsigned long>::max(), value); >+ isDone = true; >+ }]; >+ TestWebKitAPI::Util::run(&isDone); >+ >+ isDone = false; >+ >+ [object takeLong:std::numeric_limits<long>::max() completionHandler:^(long value) { >+ EXPECT_EQ(std::numeric_limits<long>::max(), value); >+ isDone = true; >+ }]; >+ TestWebKitAPI::Util::run(&isDone); >+ >+ isDone = false; >+ > class DoneWhenDestroyed : public RefCounted<DoneWhenDestroyed> { > public: > ~DoneWhenDestroyed() { isDone = true; } >diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm b/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm >index 36d574a7c5d179d9bcca02ddb94fdbaef494cf4d..659f713c45b08e965dc73a8861b29ff287efdfdf 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm >+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm >@@ -84,6 +84,26 @@ - (void)takeSize:(CGSize)size completionHandler:(void (^)(CGFloat width, CGFloat > completionHandler(size.width, size.height); > } > >+- (void)takeUnsignedLongLong:(unsigned long long)value completionHandler:(void (^)(unsigned long long value))completionHandler >+{ >+ completionHandler(value); >+} >+ >+- (void)takeLongLong:(long long)value completionHandler:(void (^)(long long value))completionHandler >+{ >+ completionHandler(value); >+} >+ >+- (void)takeUnsignedLong:(unsigned long)value completionHandler:(void (^)(unsigned long value))completionHandler >+{ >+ completionHandler(value); >+} >+ >+- (void)takeLong:(long)value completionHandler:(void (^)(long value))completionHandler >+{ >+ completionHandler(value); >+} >+ > - (void)doNotCallCompletionHandler:(void (^)())completionHandler > { > }
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 199643
:
373775
|
373781