Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1391)

Unified Diff: Source/modules/encryptedmedia/MediaKeySession.cpp

Issue 132823005: Schedule session initialization in MediaKeys. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@rename_close_gkr
Patch Set: comments addressed Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/modules/encryptedmedia/MediaKeySession.cpp
diff --git a/Source/modules/encryptedmedia/MediaKeySession.cpp b/Source/modules/encryptedmedia/MediaKeySession.cpp
index 4efaea52c1e5178feacf03603217b63a5433ca72..a0bc16e37e76c06e1dbf55c57d6af08444f19f3f 100644
--- a/Source/modules/encryptedmedia/MediaKeySession.cpp
+++ b/Source/modules/encryptedmedia/MediaKeySession.cpp
@@ -48,7 +48,6 @@ MediaKeySession::MediaKeySession(ExecutionContext* context, ContentDecryptionMod
, m_asyncEventQueue(GenericEventQueue::create(this))
, m_session(cdm->createSession(this))
, m_keys(keys)
- , m_initializeNewSessionTimer(this, &MediaKeySession::initializeNewSessionTimerFired)
, m_updateTimer(this, &MediaKeySession::updateTimerFired)
{
ScriptWrappable::init(this);
@@ -80,21 +79,9 @@ String MediaKeySession::sessionId() const
return m_session->sessionId();
}
-void MediaKeySession::initializeNewSession(const String& mimeType, Uint8Array* initData)
+void MediaKeySession::initializeNewSession(const String& mimeType, const Uint8Array& initData)
{
- m_pendingInitializeNewSessionData.append(InitializeNewSessionData(mimeType, initData));
- m_initializeNewSessionTimer.startOneShot(0);
-}
-
-void MediaKeySession::initializeNewSessionTimerFired(Timer<MediaKeySession>*)
-{
- ASSERT(m_pendingInitializeNewSessionData.size());
-
- while (!m_pendingInitializeNewSessionData.isEmpty()) {
- InitializeNewSessionData data = m_pendingInitializeNewSessionData.takeFirst();
- // FIXME: Refer to the spec to see what needs to be done in blink.
- m_session->initializeNewSession(data.mimeType, *data.initData);
- }
+ m_session->initializeNewSession(mimeType, initData);
}
void MediaKeySession::update(Uint8Array* response, ExceptionState& exceptionState)
@@ -111,24 +98,26 @@ void MediaKeySession::update(Uint8Array* response, ExceptionState& exceptionStat
// FIXME: Implement states in MediaKeySession.
// 3. Schedule a task to handle the call, providing response.
- m_pendingKeys.append(response);
- m_updateTimer.startOneShot(0);
+ m_pendingUpdates.append(response);
+
+ if (!m_updateTimer.isActive())
+ m_updateTimer.startOneShot(0);
}
void MediaKeySession::updateTimerFired(Timer<MediaKeySession>*)
{
- ASSERT(m_pendingKeys.size());
+ ASSERT(m_pendingUpdates.size());
- while (!m_pendingKeys.isEmpty()) {
- RefPtr<Uint8Array> pendingKey = m_pendingKeys.takeFirst();
+ while (!m_pendingUpdates.isEmpty()) {
+ RefPtr<Uint8Array> pendingUpdate = m_pendingUpdates.takeFirst();
- // NOTE: Continued from step 2. of MediaKeySession::update()
- // 2.1. Let cdm be the cdm loaded in the MediaKeys constructor.
+ // NOTE: Continued from step 3. of MediaKeySession::update()
+ // 3.1. Let cdm be the cdm loaded in the MediaKeys constructor.
// NOTE: This is m_session.
- // 2.2. Let 'did store key' be false.
- // 2.3. Let 'next message' be null.
- // 2.4. Use cdm to handle key.
- m_session->update(*pendingKey);
+ // 3.2. Let request be null.
+ // 3.3. Use cdm to execute the following steps:
+ // 3.3.1 Process response.
+ m_session->update(*pendingUpdate);
}
}

Powered by Google App Engine
This is Rietveld 408576698