Changeset 256867 in webkit
- Timestamp:
- Feb 18, 2020 3:48:18 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r256864 r256867 1 2020-02-18 Alex Christensen <achristensen@webkit.org> 2 3 Expand WKRemoteObjectCoder supported POD types to encode NSURLResponse types 4 https://bugs.webkit.org/show_bug.cgi?id=207912 5 <rdar://problem/59556922> 6 7 Reviewed by Brian Weinstein. 8 9 This expands on r158806. There's no reason not to support all NSNumber types, so I did. 10 Covered by API tests. 11 12 * Shared/API/Cocoa/WKRemoteObjectCoder.mm: 13 (encodeInvocationArguments): 14 (-[WKRemoteObjectEncoder encodeValueOfObjCType:at:]): 15 (-[WKRemoteObjectDecoder decodeValueOfObjCType:at:]): 16 (decodeInvocationArguments): 17 1 18 2020-02-18 Daniel Bates <dabates@apple.com> 2 19 -
trunk/Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm
r254087 r256867 141 141 } 142 142 143 // short 144 case 's': { 145 short value; 146 [invocation getArgument:&value atIndex:i]; 147 148 encodeToObjectStream(encoder, @(value)); 149 break; 150 } 151 152 // unsigned short 153 case 'S': { 154 unsigned short value; 155 [invocation getArgument:&value atIndex:i]; 156 157 encodeToObjectStream(encoder, @(value)); 158 break; 159 } 160 143 161 // int 144 162 case 'i': { … … 162 180 case 'c': { 163 181 char value; 182 [invocation getArgument:&value atIndex:i]; 183 184 encodeToObjectStream(encoder, @(value)); 185 break; 186 } 187 188 // unsigned char 189 case 'C': { 190 unsigned char value; 164 191 [invocation getArgument:&value atIndex:i]; 165 192 … … 311 338 { 312 339 switch (*type) { 340 // double 341 case 'd': 342 encodeToObjectStream(self, @(*static_cast<const double*>(address))); 343 break; 344 345 // float 346 case 'f': 347 encodeToObjectStream(self, @(*static_cast<const float*>(address))); 348 break; 349 350 // short 351 case 's': 352 encodeToObjectStream(self, @(*static_cast<const short*>(address))); 353 break; 354 355 // unsigned short 356 case 'S': 357 encodeToObjectStream(self, @(*static_cast<const unsigned short*>(address))); 358 break; 359 313 360 // int 314 361 case 'i': … … 316 363 break; 317 364 365 // unsigned 366 case 'I': 367 encodeToObjectStream(self, @(*static_cast<const unsigned*>(address))); 368 break; 369 370 // char 371 case 'c': 372 encodeToObjectStream(self, @(*static_cast<const char*>(address))); 373 break; 374 375 // unsigned char 376 case 'C': 377 encodeToObjectStream(self, @(*static_cast<const unsigned char*>(address))); 378 break; 379 380 // bool 381 case 'B': 382 encodeToObjectStream(self, @(*static_cast<const bool*>(address))); 383 break; 384 385 // long 386 case 'l': 387 encodeToObjectStream(self, @(*static_cast<const long*>(address))); 388 break; 389 390 // unsigned long 391 case 'L': 392 encodeToObjectStream(self, @(*static_cast<const unsigned long*>(address))); 393 break; 394 395 // long long 396 case 'q': 397 encodeToObjectStream(self, @(*static_cast<const long long*>(address))); 398 break; 399 400 // unsigned long long 401 case 'Q': 402 encodeToObjectStream(self, @(*static_cast<const unsigned long long*>(address))); 403 break; 404 318 405 // Objective-C object. 319 406 case '@': … … 425 512 { 426 513 switch (*type) { 514 // double 515 case 'd': 516 *static_cast<double*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) doubleValue]; 517 break; 518 519 // float 520 case 'f': 521 *static_cast<float*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) floatValue]; 522 break; 523 524 // short 525 case 's': 526 *static_cast<short*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) shortValue]; 527 break; 528 529 // unsigned short 530 case 'S': 531 *static_cast<unsigned short*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) unsignedShortValue]; 532 break; 533 427 534 // int 428 535 case 'i': 429 536 *static_cast<int*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) intValue]; 537 break; 538 539 // unsigned 540 case 'I': 541 *static_cast<unsigned*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) unsignedIntValue]; 542 break; 543 544 // char 545 case 'c': 546 *static_cast<char*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) charValue]; 547 break; 548 549 // unsigned char 550 case 'C': 551 *static_cast<unsigned char*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) unsignedCharValue]; 552 break; 553 554 // bool 555 case 'B': 556 *static_cast<bool*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) boolValue]; 557 break; 558 559 // long 560 case 'l': 561 *static_cast<long*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) longValue]; 562 break; 563 564 // unsigned long 565 case 'L': 566 *static_cast<unsigned long*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) unsignedLongValue]; 567 break; 568 569 // long long 570 case 'q': 571 *static_cast<long long*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) longLongValue]; 572 break; 573 574 // unsigned long long 575 case 'Q': 576 *static_cast<unsigned long long*>(data) = [decodeObjectFromObjectStream(self, { (__bridge CFTypeRef)[NSNumber class] }) unsignedLongLongValue]; 430 577 break; 431 578 … … 520 667 } 521 668 669 // short 670 case 's': { 671 short value = [decodeObjectFromObjectStream(decoder, { (__bridge CFTypeRef)[NSNumber class] }) shortValue]; 672 [invocation setArgument:&value atIndex:i]; 673 break; 674 } 675 676 // unsigned short 677 case 'S': { 678 unsigned short value = [decodeObjectFromObjectStream(decoder, { (__bridge CFTypeRef)[NSNumber class] }) unsignedShortValue]; 679 [invocation setArgument:&value atIndex:i]; 680 break; 681 } 682 522 683 // int 523 684 case 'i': { … … 537 698 case 'c': { 538 699 char value = [decodeObjectFromObjectStream(decoder, { (__bridge CFTypeRef)[NSNumber class] }) charValue]; 700 [invocation setArgument:&value atIndex:i]; 701 break; 702 } 703 704 // unsigned char 705 case 'C': { 706 unsigned char value = [decodeObjectFromObjectStream(decoder, { (__bridge CFTypeRef)[NSNumber class] }) unsignedCharValue]; 539 707 [invocation setArgument:&value atIndex:i]; 540 708 break; -
trunk/Tools/ChangeLog
r256859 r256867 1 2020-02-18 Alex Christensen <achristensen@webkit.org> 2 3 Expand WKRemoteObjectCoder supported POD types to encode NSURLResponse types 4 https://bugs.webkit.org/show_bug.cgi?id=207912 5 <rdar://problem/59556922> 6 7 Reviewed by Brian Weinstein. 8 9 * TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h: 10 * TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm: 11 (TEST): 12 * TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm: 13 (-[RemoteObjectRegistryPlugIn sendRequest:response:challenge:error:completionHandler:]): 14 1 15 2020-02-18 Wenson Hsieh <wenson_hsieh@apple.com> 2 16 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h
r247288 r256867 50 50 - (void)takeLong:(long)value completionHandler:(void (^)(long value))completionHandler; 51 51 - (void)doNotCallCompletionHandler:(void (^)())completionHandler; 52 - (void)sendRequest:(NSURLRequest *)request response:(NSURLResponse *)response challenge:(NSURLAuthenticationChallenge *)challenge error:(NSError *)error completionHandler:(void (^)(NSURLRequest *, NSURLResponse *, NSURLAuthenticationChallenge *, NSError *))completionHandler; 52 53 53 54 @end -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm
r247288 r256867 37 37 #import <wtf/RetainPtr.h> 38 38 39 static bool isDone;40 41 39 TEST(WebKit, RemoteObjectRegistry) 42 40 { 41 __block bool isDone = false; 42 43 43 @autoreleasepool { 44 44 NSString * const testPlugInClassName = @"RemoteObjectRegistryPlugIn"; … … 127 127 class DoneWhenDestroyed : public RefCounted<DoneWhenDestroyed> { 128 128 public: 129 DoneWhenDestroyed(bool& isDone) 130 : isDone(isDone) { } 129 131 ~DoneWhenDestroyed() { isDone = true; } 132 private: 133 bool& isDone; 130 134 }; 131 135 132 136 { 133 RefPtr<DoneWhenDestroyed> doneWhenDestroyed = adoptRef(*new DoneWhenDestroyed );137 RefPtr<DoneWhenDestroyed> doneWhenDestroyed = adoptRef(*new DoneWhenDestroyed(isDone)); 134 138 [object doNotCallCompletionHandler:[doneWhenDestroyed]() { 135 139 }]; … … 137 141 138 142 TestWebKitAPI::Util::run(&isDone); 143 144 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://webkit.org/"]]; 145 NSHTTPURLResponse *response = [[[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@"https://webkit.org/"] statusCode:200 HTTPVersion:@"HTTP/1.1" headerFields:@{ @"testFieldName" : @"testFieldValue" }] autorelease]; 146 NSError *error = [NSError errorWithDomain:@"testDomain" code:123 userInfo:@{@"a":@"b"}]; 147 NSURLProtectionSpace *protectionSpace = [[[NSURLProtectionSpace alloc] initWithHost:@"testHost" port:80 protocol:@"testProtocol" realm:@"testRealm" authenticationMethod:NSURLAuthenticationMethodHTTPDigest] autorelease]; 148 NSURLCredential *credential = [NSURLCredential credentialWithUser:@"testUser" password:@"testPassword" persistence:NSURLCredentialPersistenceForSession]; 149 id<NSURLAuthenticationChallengeSender> sender = nil; 150 NSURLAuthenticationChallenge *challenge = [[[NSURLAuthenticationChallenge alloc] initWithProtectionSpace:protectionSpace proposedCredential:credential previousFailureCount:42 failureResponse:response error:error sender:sender] autorelease]; 151 [object sendRequest:request response:response challenge:challenge error:error completionHandler:^(NSURLRequest *deserializedRequest, NSURLResponse *deserializedResponse, NSURLAuthenticationChallenge *deserializedChallenge, NSError *deserializedError) { 152 EXPECT_WK_STREQ(deserializedRequest.URL.absoluteString, "https://webkit.org/"); 153 EXPECT_WK_STREQ([(NSHTTPURLResponse *)deserializedResponse allHeaderFields][@"testFieldName"], "testFieldValue"); 154 EXPECT_WK_STREQ(deserializedChallenge.protectionSpace.realm, "testRealm"); 155 EXPECT_WK_STREQ(deserializedError.domain, "testDomain"); 156 isDone = true; 157 }]; 158 TestWebKitAPI::Util::run(&isDone); 139 159 } 140 160 } -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm
r247288 r256867 109 109 } 110 110 111 - (void)sendRequest:(NSURLRequest *)request response:(NSURLResponse *)response challenge:(NSURLAuthenticationChallenge *)challenge error:(NSError *)error completionHandler:(void (^)(NSURLRequest *, NSURLResponse *, NSURLAuthenticationChallenge *, NSError *))completionHandler 112 { 113 completionHandler(request, response, challenge, error); 114 } 115 111 116 @end
Note: See TracChangeset
for help on using the changeset viewer.