Title: [170396] trunk/Source/WebCore
- Revision
- 170396
- Author
- jer.no...@apple.com
- Date
- 2014-06-24 15:33:38 -0700 (Tue, 24 Jun 2014)
Log Message
[MSE][Mac] Pass AVSampleBufferDisplayLayer HDCP status through to EME
https://bugs.webkit.org/show_bug.cgi?id=134221
Reviewed by Eric Carlson.
Pass the outputObscuredDueToInsufficientExternalProtection property of AVSampleBufferDisplayLayer
as an error to the associated MediaKeySession object.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVSampleBufferErrorListener invalidate]):
(-[WebAVSampleBufferErrorListener beginObservingLayer:]):
(-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (170395 => 170396)
--- trunk/Source/WebCore/ChangeLog 2014-06-24 22:32:33 UTC (rev 170395)
+++ trunk/Source/WebCore/ChangeLog 2014-06-24 22:33:38 UTC (rev 170396)
@@ -1,3 +1,18 @@
+2014-06-24 Jer Noble <jer.no...@apple.com>
+
+ [MSE][Mac] Pass AVSampleBufferDisplayLayer HDCP status through to EME
+ https://bugs.webkit.org/show_bug.cgi?id=134221
+
+ Reviewed by Eric Carlson.
+
+ Pass the outputObscuredDueToInsufficientExternalProtection property of AVSampleBufferDisplayLayer
+ as an error to the associated MediaKeySession object.
+
+ * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
+ (-[WebAVSampleBufferErrorListener invalidate]):
+ (-[WebAVSampleBufferErrorListener beginObservingLayer:]):
+ (-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):
+
2014-06-20 Myles C. Maxfield <mmaxfi...@apple.com>
Use unsigneds instead of ints for indexes into a string in text layout code
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm (170395 => 170396)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm 2014-06-24 22:32:33 UTC (rev 170395)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm 2014-06-24 22:33:38 UTC (rev 170396)
@@ -319,8 +319,10 @@
if (!_parent && !_layers.size() && !_renderers.size())
return;
- for (auto& layer : _layers)
+ for (auto& layer : _layers) {
[layer removeObserver:self forKeyPath:@"error"];
+ [layer removeObserver:self forKeyPath:@"outputObscuredDueToInsufficientExternalProtection"];
+ }
_layers.clear();
for (auto& renderer : _renderers)
@@ -339,6 +341,7 @@
_layers.append(layer);
[layer addObserver:self forKeyPath:@"error" options:NSKeyValueObservingOptionNew context:nullptr];
+ [layer addObserver:self forKeyPath:@"outputObscuredDueToInsufficientExternalProtection" options:NSKeyValueObservingOptionNew context:nullptr];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(layerFailedToDecode:) name:AVSampleBufferDisplayLayerFailedToDecodeNotification object:layer];
}
@@ -380,14 +383,23 @@
RetainPtr<WebAVSampleBufferErrorListener> strongSelf = self;
if ([object isKindOfClass:getAVSampleBufferDisplayLayerClass()]) {
RetainPtr<AVSampleBufferDisplayLayer> layer = (AVSampleBufferDisplayLayer *)object;
- RetainPtr<NSError> error = [change valueForKey:NSKeyValueChangeNewKey];
-
ASSERT(_layers.contains(layer.get()));
- ASSERT([keyPath isEqualTo:@"error"]);
- callOnMainThread([strongSelf, layer, error] {
- strongSelf->_parent->layerDidReceiveError(layer.get(), error.get());
- });
+ if ([keyPath isEqualTo:@"error"]) {
+ RetainPtr<NSError> error = [change valueForKey:NSKeyValueChangeNewKey];
+ callOnMainThread([strongSelf, layer, error] {
+ strongSelf->_parent->layerDidReceiveError(layer.get(), error.get());
+ });
+ } else if ([keyPath isEqualTo:@"outputObscuredDueToInsufficientExternalProtection"]) {
+ if ([[change valueForKey:NSKeyValueChangeNewKey] boolValue]) {
+ RetainPtr<NSError> error = [NSError errorWithDomain:@"com.apple.WebKit" code:'HDCP' userInfo:nil];
+ callOnMainThread([strongSelf, layer, error] {
+ strongSelf->_parent->layerDidReceiveError(layer.get(), error.get());
+ });
+ }
+ } else
+ ASSERT_NOT_REACHED();
+
} else if ([object isKindOfClass:getAVSampleBufferAudioRendererClass()]) {
RetainPtr<AVSampleBufferAudioRenderer> renderer = (AVSampleBufferAudioRenderer *)object;
RetainPtr<NSError> error = [change valueForKey:NSKeyValueChangeNewKey];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes