Changeset 279375 in webkit
- Timestamp:
- Jun 29, 2021 10:11:34 AM (13 months ago)
- Location:
- trunk
- Files:
-
- 3 added
- 12 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/http/tests/media/resources/.htaccess (added)
-
LayoutTests/http/tests/media/video-webm-stall-expected.txt (added)
-
LayoutTests/http/tests/media/video-webm-stall.html (added)
-
LayoutTests/platform/ios/TestExpectations (modified) (1 diff)
-
LayoutTests/platform/mac-wk1/TestExpectations (modified) (1 diff)
-
LayoutTests/platform/mac/TestExpectations (modified) (1 diff)
-
Source/WebCore/PAL/ChangeLog (modified) (1 diff)
-
Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.cpp (modified) (1 diff)
-
Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.h (modified) (1 diff)
-
Source/WebCore/PAL/pal/spi/cf/CoreMediaSPI.h (modified) (2 diffs)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/Configurations/BaseTarget.xcconfig (modified) (1 diff)
-
Source/WebKit/GPUProcess/mac/GPUProcessMac.mm (modified) (1 diff)
-
Source/WebKit/Shared/mac/MediaFormatReader/MediaFormatReader.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r279374 r279375 1 2021-06-24 Jer Noble <jer.noble@apple.com> 2 3 Loading WebM hangs if server sends only small amount of data 4 https://bugs.webkit.org/show_bug.cgi?id=226217 5 <rdar://problem/78709010> 6 7 Reviewed by Eric Carlson. 8 9 * http/tests/media/resources/.htaccess: Added. 10 * http/tests/media/video-webm-stall-expected.txt: Added. 11 * http/tests/media/video-webm-stall.html: Added. 12 1 13 2021-06-29 Yoshiaki Jitsukawa <yoshiaki.jitsukawa@sony.com> 2 14 -
trunk/LayoutTests/platform/ios/TestExpectations
r279344 r279375 3386 3386 imported/w3c/web-platform-tests/webxr [ Skip ] 3387 3387 http/wpt/webxr [ Skip ] 3388 3389 # WebM is not supported on iOS 3390 http/tests/media/video-webm-stall.html [ Skip ] -
trunk/LayoutTests/platform/mac-wk1/TestExpectations
r279302 r279375 224 224 platform/mac/media/media-source/media-source-change-source.html [ Skip ] 225 225 media/now-playing-status-without-media.html [ Skip ] 226 227 # WebM not supported in WK1 on macOS. 228 http/tests/media/video-webm-stall.html 226 229 227 230 #////////////////////////////////////////////////////////////////////////////////////////// -
trunk/LayoutTests/platform/mac/TestExpectations
r279358 r279375 2144 2144 [ Catalina Mojave ] fast/text/system-font-width-9.html [ ImageOnlyFailure ] 2145 2145 2146 # WebM support is on Monterey and later 2147 [ Catalina Mojave BigSur ] http/tests/media/video-webm-stall.html [ Skip ] 2148 2146 2149 webkit.org/b/221152 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html [ Pass Failure ] 2147 2150 -
trunk/Source/WebCore/PAL/ChangeLog
r279335 r279375 1 2021-06-24 Jer Noble <jer.noble@apple.com> 2 3 Loading WebM hangs if server sends only small amount of data 4 https://bugs.webkit.org/show_bug.cgi?id=226217 5 <rdar://problem/78709010> 6 7 Reviewed by Eric Carlson. 8 9 * pal/cf/CoreMediaSoftLink.cpp: 10 * pal/cf/CoreMediaSoftLink.h: 11 * pal/spi/cf/CoreMediaSPI.h: 12 1 13 2021-06-28 Jean-Yves Avenard <jya@apple.com> 2 14 -
trunk/Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.cpp
r279335 r279375 214 214 215 215 SOFT_LINK_FUNCTION_FOR_SOURCE_WITH_EXPORT(PAL, CoreMedia, CMAudioClockCreate, OSStatus, (CFAllocatorRef allocator, CMClockRef* clockOut), (allocator, clockOut), PAL_EXPORT) 216 SOFT_LINK_FUNCTION_FOR_SOURCE_WITH_EXPORT(PAL, CoreMedia, FigThreadRegisterAbortAction, OSStatus, (FigThreadAbortAction action, void* refcon, FigThreadAbortActionToken* token), (action, refcon, token), PAL_EXPORT) 217 SOFT_LINK_FUNCTION_FOR_SOURCE_WITH_EXPORT(PAL, CoreMedia, FigThreadUnregisterAbortAction, void, (FigThreadAbortActionToken token), (token), PAL_EXPORT) 216 218 217 219 SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE_WITH_EXPORT(PAL, CoreMedia, kCMFormatDescriptionExtension_ProtectedContentOriginalFormat, CFStringRef, PAL_EXPORT) -
trunk/Source/WebCore/PAL/pal/cf/CoreMediaSoftLink.h
r279335 r279375 362 362 SOFT_LINK_FUNCTION_FOR_HEADER(PAL, CoreMedia, CMAudioClockCreate, OSStatus, (CFAllocatorRef allocator, CMClockRef* clockOut), (allocator, clockOut)) 363 363 #define CMAudioClockCreate softLink_CoreMedia_CMAudioClockCreate 364 SOFT_LINK_FUNCTION_FOR_HEADER(PAL, CoreMedia, FigThreadRegisterAbortAction, OSStatus, (FigThreadAbortAction action, void* refcon, FigThreadAbortActionToken* token), (action, refcon, token)) 365 #define FigThreadRegisterAbortAction softLink_CoreMedia_FigThreadRegisterAbortAction 366 SOFT_LINK_FUNCTION_FOR_HEADER(PAL, CoreMedia, FigThreadUnregisterAbortAction, void, (FigThreadAbortActionToken token), (token)) 367 #define FigThreadUnregisterAbortAction softLink_CoreMedia_FigThreadUnregisterAbortAction 364 368 365 369 SOFT_LINK_CONSTANT_MAY_FAIL_FOR_HEADER(PAL, CoreMedia, kCMFormatDescriptionExtension_ProtectedContentOriginalFormat, CFStringRef) -
trunk/Source/WebCore/PAL/pal/spi/cf/CoreMediaSPI.h
r270758 r279375 36 36 #if USE(APPLE_INTERNAL_SDK) 37 37 #include <CoreMedia/CMNotificationCenter.h> 38 #include <CoreMedia/FigThreadPlatform.h> 38 39 #else 39 40 typedef struct opaqueCMNotificationCenter *CMNotificationCenterRef; 40 41 typedef void (*CMNotificationCallback)(CMNotificationCenterRef inCenter, const void *inListener, CFStringRef inNotificationName, const void *inNotifyingObject, CFTypeRef inNotificationPayload); 42 typedef void (*FigThreadAbortAction)(void* refcon); 43 typedef struct OpaqueFigThreadAbortActionToken* FigThreadAbortActionToken; 41 44 #endif 42 45 … … 45 48 OSStatus CMNotificationCenterAddListener(CMNotificationCenterRef inCenter, const void *inListener, CMNotificationCallback inCallBack, CFStringRef inNotificationName, const void *inObjectToObserve, UInt32 inFlags); 46 49 OSStatus CMNotificationCenterRemoveListener(CMNotificationCenterRef inCenter, const void *inListener, CMNotificationCallback inCallBack, CFStringRef inNotificationName, const void *inObject); 50 OSStatus FigThreadRegisterAbortAction(FigThreadAbortAction, void* refcon, FigThreadAbortActionToken*); 51 void FigThreadUnregisterAbortAction(FigThreadAbortActionToken); 47 52 WTF_EXTERN_C_END 48 53 -
trunk/Source/WebKit/ChangeLog
r279369 r279375 1 2021-06-24 Jer Noble <jer.noble@apple.com> 2 3 Loading WebM hangs if server sends only small amount of data 4 https://bugs.webkit.org/show_bug.cgi?id=226217 5 <rdar://problem/78709010> 6 7 Reviewed by Eric Carlson. 8 9 Test: http/tests/media/video-webm-stall.html 10 11 Adopt FigThread{Un,}RegisterAbortAction() when blocking against track parsing. 12 13 CoreMedia will attempt to abort reads during AVPlayer teardown, but because the parsing 14 thread is blocked on a Condition variable in WebKit code, the abort request has no effect. 15 Adopt methods from CoreMedia to run code during an abort request, and wrap these calls in a 16 stack-based object. The new AbortAction object takes a Condition variable to notify during 17 an abort, and its aborted() state can be queried by the Condition's predicate. 18 19 Drive-by Fix: enable running an unsigned MTFormatReaderPlugin in the GPU process for 20 engineering builds. 21 22 * Configurations/BaseTarget.xcconfig: 23 * GPUProcess/mac/GPUProcessMac.mm: 24 (WebKit::GPUProcess::initializeProcess): 25 * Shared/mac/MediaFormatReader/MediaFormatReader.cpp: 26 (WebKit::AbortAction::AbortAction): 27 (WebKit::AbortAction::~AbortAction): 28 (WebKit::AbortAction::aborted const): 29 (WebKit::AbortAction::action): 30 (WebKit::MediaFormatReader::copyProperty): 31 (WebKit::MediaFormatReader::copyTrackArray): 32 1 33 2021-06-29 Carlos Garcia Campos <cgarcia@igalia.com> 2 34 -
trunk/Source/WebKit/Configurations/BaseTarget.xcconfig
r267775 r279375 40 40 WK_ENABLE_EXPERIMENTAL_FEATURES_YES = ENABLE_EXPERIMENTAL_FEATURES; 41 41 42 WK_FORMATREADERBUNDLE_CODESIGNING_DEFINES = ENABLE_LOWER_FORMATREADERBUNDLE_CODESIGNING_REQUIREMENTS; 43 WK_FORMATREADERBUNDLE_CODESIGNING_DEFINES[config=Production] = ; 44 42 45 GCC_PREFIX_HEADER = WebKit2Prefix.h; 43 GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) $(WK_ENABLE_EXPERIMENTAL_FEATURES) $(WK_CORE_PREDICTION_DEFINES) FRAMEWORK_NAME=WebKit;46 GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) $(WK_ENABLE_EXPERIMENTAL_FEATURES) $(WK_CORE_PREDICTION_DEFINES) $(WK_FORMATREADERBUNDLE_CODESIGNING_DEFINES) FRAMEWORK_NAME=WebKit; 44 47 WEBKITADDITIONS_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include/WebKitAdditions $(SDKROOT)/usr/local/include/WebKitAdditions; 45 48 LIBWEBRTC_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include/webrtc $(SDKROOT)/usr/local/include/webrtc; -
trunk/Source/WebKit/GPUProcess/mac/GPUProcessMac.mm
r253098 r279375 50 50 #endif 51 51 52 #if ENABLE(LOWER_FORMATREADERBUNDLE_CODESIGNING_REQUIREMENTS) 53 // For testing in engineering builds, allow CoreMedia to load the MediaFormatReader bundle no matter its code signature. 54 auto userDefaults = adoptNS([[NSUserDefaults alloc] initWithSuiteName:@"com.apple.coremedia"]); 55 [userDefaults registerDefaults:@{ @"pluginformatreader_unsigned": @YES }]; 56 #endif 57 52 58 launchServicesCheckIn(); 53 59 } -
trunk/Source/WebKit/Shared/mac/MediaFormatReader/MediaFormatReader.cpp
r279335 r279375 59 59 static const char* logClassName() { return "MediaFormatReader"; } 60 60 61 class AbortAction { 62 public: 63 AbortAction(Condition& condition) 64 : m_condition(condition) 65 { 66 if (noErr != PAL::FigThreadRegisterAbortAction(action, this, &m_token)) 67 m_token = nullptr; 68 } 69 70 ~AbortAction() 71 { 72 if (m_token) 73 PAL::FigThreadUnregisterAbortAction(m_token); 74 } 75 76 bool aborted() const { return m_aborted; } 77 78 private: 79 static void action(void* refcon) 80 { 81 auto thisPtr = static_cast<AbortAction*>(refcon); 82 thisPtr->m_aborted = true; 83 thisPtr->m_condition.notifyAll(); 84 } 85 86 Condition& m_condition; 87 FigThreadAbortActionToken m_token { nullptr }; 88 bool m_aborted { false }; 89 }; 90 61 91 CMBaseClassID MediaFormatReader::wrapperClassID() 62 92 { … … 236 266 } 237 267 268 AbortAction action { m_parseTracksCondition }; 269 238 270 Locker locker { m_parseTracksLock }; 239 271 m_parseTracksCondition.wait(m_parseTracksLock, [&] { 240 272 assertIsHeld(m_parseTracksLock); 241 return m_parseTracksStatus.has_value() ;273 return m_parseTracksStatus.has_value() || action.aborted(); 242 274 }); 243 275 … … 256 288 OSStatus MediaFormatReader::copyTrackArray(CFArrayRef* trackArrayCopy) 257 289 { 290 AbortAction action { m_parseTracksCondition }; 291 258 292 Locker locker { m_parseTracksLock }; 259 293 m_parseTracksCondition.wait(m_parseTracksLock, [&] { 260 294 assertIsHeld(m_parseTracksLock); 261 return m_parseTracksStatus.has_value() ;295 return m_parseTracksStatus.has_value() || action.aborted(); 262 296 }); 263 297
Note: See TracChangeset
for help on using the changeset viewer.