Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Apple Inc. All rights reserved. | 2 * Copyright (C) 2013 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 26 #ifndef MediaKeySession_h | 26 #ifndef MediaKeySession_h |
| 27 #define MediaKeySession_h | 27 #define MediaKeySession_h |
| 28 | 28 |
| 29 #if ENABLE(ENCRYPTED_MEDIA_V2) | 29 #if ENABLE(ENCRYPTED_MEDIA_V2) |
| 30 | 30 |
| 31 #include "bindings/v8/ScriptWrappable.h" | 31 #include "bindings/v8/ScriptWrappable.h" |
| 32 #include "core/dom/ContextDestructionObserver.h" | 32 #include "core/dom/ContextDestructionObserver.h" |
| 33 #include "core/dom/EventTarget.h" | 33 #include "core/dom/EventTarget.h" |
| 34 #include "core/dom/ExceptionCode.h" | 34 #include "core/dom/ExceptionCode.h" |
| 35 #include "core/platform/Timer.h" | 35 #include "core/platform/Timer.h" |
| 36 #include "core/platform/graphics/CDMSession.h" | |
| 36 #include "wtf/Deque.h" | 37 #include "wtf/Deque.h" |
| 37 #include "wtf/PassRefPtr.h" | 38 #include "wtf/PassRefPtr.h" |
| 38 #include "wtf/RefCounted.h" | 39 #include "wtf/RefCounted.h" |
| 39 #include "wtf/Uint8Array.h" | 40 #include "wtf/Uint8Array.h" |
| 40 #include "wtf/text/WTFString.h" | 41 #include "wtf/text/WTFString.h" |
| 41 | 42 |
| 42 namespace WebCore { | 43 namespace WebCore { |
| 43 | 44 |
| 44 class GenericEventQueue; | 45 class GenericEventQueue; |
| 45 class MediaKeyError; | 46 class MediaKeyError; |
| 46 class MediaKeys; | 47 class MediaKeys; |
| 48 class CDM; | |
| 47 class CDMSession; | 49 class CDMSession; |
| 48 | 50 |
| 49 class MediaKeySession : public RefCounted<MediaKeySession>, public ScriptWrappab le, public EventTarget, public ContextDestructionObserver { | 51 // References are held by JS and MediaKeys. |
| 52 // Because this object controls the lifetime of the CDMSession, it may outlive | |
| 53 // any references to it as long as the MediaKeys object is alive. | |
| 54 // The CDMSession has the same lifetime as this object. | |
| 55 class MediaKeySession | |
| 56 : public RefCounted<MediaKeySession>, public ScriptWrappable, public EventTa rget, public ContextDestructionObserver | |
| 57 , private CDMSessionClient { | |
| 50 public: | 58 public: |
| 51 static PassRefPtr<MediaKeySession> create(ScriptExecutionContext*, MediaKeys *, const String& keySystem); | 59 static PassRefPtr<MediaKeySession> create(ScriptExecutionContext*, CDM&, Med iaKeys*); |
| 52 ~MediaKeySession(); | 60 ~MediaKeySession(); |
| 53 | 61 |
| 54 const String& keySystem() const { return m_keySystem; } | 62 const String& keySystem() const { return m_keySystem; } |
| 55 const String& sessionId() const; | 63 String sessionId() const; |
| 56 | 64 |
| 57 void setError(MediaKeyError*); | 65 void setError(MediaKeyError*); |
| 58 MediaKeyError* error() { return m_error.get(); } | 66 PassRefPtr<MediaKeyError> error() const; |
|
ddorwin
2013/06/06 23:29:50
abarth: Which way should we prefer?
I changed this
abarth-chromium
2013/06/07 00:08:23
Do you mean between returning a MediaKeyError* and
ddorwin
2013/06/10 22:52:34
Done.
Should we change HTMLMediaElement too?
| |
| 59 | |
| 60 void setKeys(MediaKeys* keys) { m_keys = keys; } | |
| 61 MediaKeys* keys() const { return m_keys; } | |
| 62 | 67 |
| 63 void generateKeyRequest(const String& mimeType, Uint8Array* initData); | 68 void generateKeyRequest(const String& mimeType, Uint8Array* initData); |
| 64 void update(Uint8Array* key, ExceptionCode&); | 69 void update(Uint8Array* key, ExceptionCode&); |
| 65 void close(); | 70 void close(); |
| 66 | 71 |
| 67 using RefCounted<MediaKeySession>::ref; | 72 using RefCounted<MediaKeySession>::ref; |
| 68 using RefCounted<MediaKeySession>::deref; | 73 using RefCounted<MediaKeySession>::deref; |
| 69 | 74 |
| 70 void enqueueEvent(PassRefPtr<Event>); | 75 void enqueueEvent(PassRefPtr<Event>); |
| 71 | 76 |
| 72 DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitkeyadded); | 77 DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitkeyadded); |
| 73 DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitkeyerror); | 78 DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitkeyerror); |
| 74 DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitkeymessage); | 79 DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitkeymessage); |
| 75 | 80 |
| 76 virtual const AtomicString& interfaceName() const OVERRIDE; | 81 virtual const AtomicString& interfaceName() const OVERRIDE; |
| 77 virtual ScriptExecutionContext* scriptExecutionContext() const OVERRIDE; | 82 virtual ScriptExecutionContext* scriptExecutionContext() const OVERRIDE; |
| 78 | 83 |
| 79 protected: | 84 private: |
| 80 MediaKeySession(ScriptExecutionContext*, MediaKeys*, const String& keySystem ); | 85 MediaKeySession(ScriptExecutionContext*, CDM&, MediaKeys*); |
| 81 void keyRequestTimerFired(Timer<MediaKeySession>*); | 86 void keyRequestTimerFired(Timer<MediaKeySession>*); |
| 82 void addKeyTimerFired(Timer<MediaKeySession>*); | 87 void addKeyTimerFired(Timer<MediaKeySession>*); |
| 83 | 88 |
| 84 MediaKeys* m_keys; | 89 // CDMSessionClient |
| 85 String m_keySystem; | 90 virtual void keyAdded() OVERRIDE; |
| 86 String m_sessionId; | 91 virtual void keyError(MediaKeyError::Code, unsigned long systemCode) OVERRID E; |
| 92 virtual void keyMessage(const unsigned char* message, unsigned messageLength , const KURL& destinationURL) OVERRIDE; | |
| 93 | |
| 94 const String m_keySystem; | |
| 87 RefPtr<MediaKeyError> m_error; | 95 RefPtr<MediaKeyError> m_error; |
| 88 OwnPtr<GenericEventQueue> m_asyncEventQueue; | 96 OwnPtr<GenericEventQueue> m_asyncEventQueue; |
| 89 OwnPtr<CDMSession> m_session; | 97 OwnPtr<CDMSession> m_session; |
| 98 // Used to remove the reference from the parent MediaKeys when close()'d. | |
| 99 MediaKeys* m_keys; | |
| 90 | 100 |
| 91 struct PendingKeyRequest { | 101 struct PendingKeyRequest { |
| 92 PendingKeyRequest(const String& mimeType, Uint8Array* initData) : mimeTy pe(mimeType), initData(initData) { } | 102 PendingKeyRequest(const String& mimeType, Uint8Array* initData) : mimeTy pe(mimeType), initData(initData) { } |
| 93 String mimeType; | 103 String mimeType; |
| 94 RefPtr<Uint8Array> initData; | 104 RefPtr<Uint8Array> initData; |
| 95 }; | 105 }; |
| 96 Deque<PendingKeyRequest> m_pendingKeyRequests; | 106 Deque<PendingKeyRequest> m_pendingKeyRequests; |
| 97 Timer<MediaKeySession> m_keyRequestTimer; | 107 Timer<MediaKeySession> m_keyRequestTimer; |
| 98 | 108 |
| 99 Deque<RefPtr<Uint8Array> > m_pendingKeys; | 109 Deque<RefPtr<Uint8Array> > m_pendingKeys; |
| 100 Timer<MediaKeySession> m_addKeyTimer; | 110 Timer<MediaKeySession> m_addKeyTimer; |
| 101 | 111 |
| 102 private: | 112 private: |
| 103 virtual void refEventTarget() OVERRIDE { ref(); } | 113 virtual void refEventTarget() OVERRIDE { ref(); } |
| 104 virtual void derefEventTarget() OVERRIDE { deref(); } | 114 virtual void derefEventTarget() OVERRIDE { deref(); } |
| 105 | 115 |
| 106 virtual EventTargetData* eventTargetData() OVERRIDE { return &m_eventTargetD ata; } | 116 virtual EventTargetData* eventTargetData() OVERRIDE { return &m_eventTargetD ata; } |
| 107 virtual EventTargetData* ensureEventTargetData() OVERRIDE { return &m_eventT argetData; } | 117 virtual EventTargetData* ensureEventTargetData() OVERRIDE { return &m_eventT argetData; } |
| 108 | 118 |
| 109 EventTargetData m_eventTargetData; | 119 EventTargetData m_eventTargetData; |
| 110 }; | 120 }; |
| 111 | 121 |
| 112 } | 122 } |
| 113 | 123 |
| 114 #endif // ENABLE(ENCRYPTED_MEDIA_V2) | 124 #endif // ENABLE(ENCRYPTED_MEDIA_V2) |
| 115 | 125 |
| 116 #endif // MediaKeySession_h | 126 #endif // MediaKeySession_h |
| OLD | NEW |