Changeset 202520 in webkit
- Timestamp:
- Jun 27, 2016 4:56:09 PM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r202517 r202520 1 2016-06-27 Jer Noble <jer.noble@apple.com> 2 3 REGRESSION?(r202466): http/tests/security/canvas-remote-read-remote-video-redirect.html failing on Sierra 4 https://bugs.webkit.org/show_bug.cgi?id=159172 5 <rdar://problem/27030025> 6 7 Reviewed by Brent Fulgham. 8 9 Add a hasSingleSecurityOrigin property to WebCoreNSURLSession that gets updated each time one of that 10 sessions' tasks receieves a response or a redirect request. Check that property from the MediaPlayerPrivate. 11 12 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: 13 (WebCore::MediaPlayerPrivateAVFoundationObjC::hasSingleSecurityOrigin): 14 * platform/network/cocoa/WebCoreNSURLSession.h: 15 * platform/network/cocoa/WebCoreNSURLSession.mm: 16 (-[WebCoreNSURLSession updateHasSingleSecurityOrigin:]): 17 (-[WebCoreNSURLSession dataTaskWithRequest:]): 18 (-[WebCoreNSURLSession dataTaskWithURL:]): 19 (-[WebCoreNSURLSessionDataTask resource:receivedResponse:]): 20 (-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:]): 21 1 22 2016-06-27 Benjamin Poulain <benjamin@webkit.org> 2 23 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
r202350 r202520 2242 2242 Ref<SecurityOrigin> resolvedOrigin(SecurityOrigin::create(resolvedURL())); 2243 2243 Ref<SecurityOrigin> requestedOrigin(SecurityOrigin::createFromString(assetURL())); 2244 return resolvedOrigin.get().isSameSchemeHostPort(&requestedOrigin.get()); 2244 if (!resolvedOrigin.get().isSameSchemeHostPort(&requestedOrigin.get())) 2245 return false; 2246 2247 #if PLATFORM(IOS) || __MAC_OS_X_VERSION_MIN_REQUIRED > 101100 2248 AVAssetResourceLoader *resourceLoader = m_avAsset.get().resourceLoader; 2249 if (Settings::isAVFoundationNSURLSessionEnabled() && [resourceLoader respondsToSelector:@selector(URLSession)]) { 2250 WebCoreNSURLSession *session = (WebCoreNSURLSession *)resourceLoader.URLSession; 2251 if ([session respondsToSelector:@selector(hasSingleSecurityOrigin)]) 2252 return session.hasSingleSecurityOrigin; 2253 } 2254 #endif 2255 return true; 2245 2256 } 2246 2257 -
trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.h
r199960 r202520 47 47 class PlatformMediaResourceLoader; 48 48 class WebCoreNSURLSessionDataTaskClient; 49 class SecurityOrigin; 49 50 } 50 51 … … 64 65 HashSet<RetainPtr<WebCoreNSURLSessionDataTask>> _dataTasks; 65 66 BOOL _invalidated; 67 BOOL _hasSingleSecurityOrigin; 66 68 NSUInteger _nextTaskIdentifier; 67 69 OSObjectPtr<dispatch_queue_t> _internalQueue; 68 70 WebCoreNSURLSessionCORSAccessCheckResults _corsResults; 71 RefPtr<WebCore::SecurityOrigin> _requestedOrigin; 69 72 } 70 73 - (id)initWithResourceLoader:(WebCore::PlatformMediaResourceLoader&)loader delegate:(id<NSURLSessionTaskDelegate>)delegate delegateQueue:(NSOperationQueue*)queue; … … 74 77 @property (copy) NSString *sessionDescription; 75 78 @property (readonly) BOOL didPassCORSAccessChecks; 79 @property (readonly) BOOL hasSingleSecurityOrigin; 76 80 - (void)finishTasksAndInvalidate; 77 81 - (void)invalidateAndCancel; -
trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm
r202493 r202520 31 31 #import "CachedResourceRequest.h" 32 32 #import "PlatformMediaResourceLoader.h" 33 #import "SecurityOrigin.h" 33 34 #import "SubresourceLoader.h" 34 35 … … 45 46 - (void)addDelegateOperation:(void (^)(void))operation; 46 47 - (void)task:(WebCoreNSURLSessionDataTask *)task didReceiveCORSAccessCheckResult:(BOOL)result; 48 - (void)updateHasSingleSecurityOrigin:(SecurityOrigin&)origin; 47 49 @end 48 50 … … 84 86 _queue = inQueue ? inQueue : [NSOperationQueue mainQueue]; 85 87 _internalQueue = adoptOSObject(dispatch_queue_create("WebCoreNSURLSession _internalQueue", DISPATCH_QUEUE_SERIAL)); 88 _hasSingleSecurityOrigin = YES; 86 89 87 90 return self; … … 140 143 } 141 144 145 - (void)updateHasSingleSecurityOrigin:(SecurityOrigin&)origin 146 { 147 if (!_requestedOrigin) { 148 _requestedOrigin = &origin; 149 return; 150 } 151 152 if (!origin.isSameSchemeHostPort(_requestedOrigin.get())) 153 _hasSingleSecurityOrigin = false; 154 } 155 142 156 #pragma mark - NSURLSession API 143 157 @synthesize sessionDescription=_sessionDescription; … … 235 249 return nil; 236 250 251 [self updateHasSingleSecurityOrigin:SecurityOrigin::create([request URL])]; 252 237 253 WebCoreNSURLSessionDataTask *task = [[WebCoreNSURLSessionDataTask alloc] initWithSession:self identifier:_nextTaskIdentifier++ request:request]; 238 254 _dataTasks.add(task); … … 244 260 if (_invalidated) 245 261 return nil; 262 263 [self updateHasSingleSecurityOrigin:SecurityOrigin::create(url)]; 246 264 247 265 WebCoreNSURLSessionDataTask *task = [[WebCoreNSURLSessionDataTask alloc] initWithSession:self identifier:_nextTaskIdentifier++ URL:url]; … … 525 543 ASSERT(isMainThread()); 526 544 [self.session task:self didReceiveCORSAccessCheckResult:resource.didPassAccessControlCheck()]; 545 [self.session updateHasSingleSecurityOrigin:SecurityOrigin::create(response.url())]; 527 546 self.countOfBytesExpectedToReceive = response.expectedContentLength(); 528 547 [self _setDefersLoading:YES]; … … 609 628 if (response.httpStatusCode() != 302 && response.httpStatusCode() != 307) 610 629 self.currentRequest = [NSURLRequest requestWithURL:request.url()]; 630 631 [self.session updateHasSingleSecurityOrigin:SecurityOrigin::create(request.url())]; 611 632 } 612 633
Note: See TracChangeset
for help on using the changeset viewer.