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

Side by Side Diff: third_party/WebKit/Source/modules/encryptedmedia/MediaKeySession.cpp

Issue 1805843002: [v8 gc] Introduce a base class for all objects that can have pending activity (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updates Created 4 years, 9 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 unified diff | Download patch
OLDNEW
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 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 }; 301 };
302 302
303 MediaKeySession* MediaKeySession::create(ScriptState* scriptState, MediaKeys* me diaKeys, WebEncryptedMediaSessionType sessionType) 303 MediaKeySession* MediaKeySession::create(ScriptState* scriptState, MediaKeys* me diaKeys, WebEncryptedMediaSessionType sessionType)
304 { 304 {
305 RefPtrWillBeRawPtr<MediaKeySession> session = new MediaKeySession(scriptStat e, mediaKeys, sessionType); 305 RefPtrWillBeRawPtr<MediaKeySession> session = new MediaKeySession(scriptStat e, mediaKeys, sessionType);
306 session->suspendIfNeeded(); 306 session->suspendIfNeeded();
307 return session.get(); 307 return session.get();
308 } 308 }
309 309
310 MediaKeySession::MediaKeySession(ScriptState* scriptState, MediaKeys* mediaKeys, WebEncryptedMediaSessionType sessionType) 310 MediaKeySession::MediaKeySession(ScriptState* scriptState, MediaKeys* mediaKeys, WebEncryptedMediaSessionType sessionType)
311 : ActiveDOMObject(scriptState->getExecutionContext()) 311 : ActiveScriptWrappable(this)
312 , ActiveDOMObject(scriptState->getExecutionContext())
312 , m_asyncEventQueue(GenericEventQueue::create(this)) 313 , m_asyncEventQueue(GenericEventQueue::create(this))
313 , m_mediaKeys(mediaKeys) 314 , m_mediaKeys(mediaKeys)
314 , m_sessionType(sessionType) 315 , m_sessionType(sessionType)
315 , m_expiration(std::numeric_limits<double>::quiet_NaN()) 316 , m_expiration(std::numeric_limits<double>::quiet_NaN())
316 , m_keyStatusesMap(new MediaKeyStatusMap()) 317 , m_keyStatusesMap(new MediaKeyStatusMap())
317 , m_isUninitialized(true) 318 , m_isUninitialized(true)
318 , m_isCallable(false) 319 , m_isCallable(false)
319 , m_isClosed(false) 320 , m_isClosed(false)
320 , m_closedPromise(new ClosedPromise(scriptState->getExecutionContext(), this , ClosedPromise::Closed)) 321 , m_closedPromise(new ClosedPromise(scriptState->getExecutionContext(), this , ClosedPromise::Closed))
321 , m_actionTimer(this, &MediaKeySession::actionTimerFired) 322 , m_actionTimer(this, &MediaKeySession::actionTimerFired)
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
887 888
888 ExecutionContext* MediaKeySession::getExecutionContext() const 889 ExecutionContext* MediaKeySession::getExecutionContext() const
889 { 890 {
890 return ActiveDOMObject::getExecutionContext(); 891 return ActiveDOMObject::getExecutionContext();
891 } 892 }
892 893
893 bool MediaKeySession::hasPendingActivity() const 894 bool MediaKeySession::hasPendingActivity() const
894 { 895 {
895 // Remain around if there are pending events or MediaKeys is still around 896 // Remain around if there are pending events or MediaKeys is still around
896 // and we're not closed. 897 // and we're not closed.
897 WTF_LOG(Media, "MediaKeySession(%p)::hasPendingActivity %s%s%s%s", this, 898 WTF_LOG(Media, "MediaKeySession(%p)::hasPendingActivity %s%s%s", this,
898 ScriptWrappable::hasPendingActivity() ? " ScriptWrappable::hasPendingAct ivity()" : "",
899 !m_pendingActions.isEmpty() ? " !m_pendingActions.isEmpty()" : "", 899 !m_pendingActions.isEmpty() ? " !m_pendingActions.isEmpty()" : "",
900 m_asyncEventQueue->hasPendingEvents() ? " m_asyncEventQueue->hasPendingE vents()" : "", 900 m_asyncEventQueue->hasPendingEvents() ? " m_asyncEventQueue->hasPendingE vents()" : "",
901 (m_mediaKeys && !m_isClosed) ? " m_mediaKeys && !m_isClosed" : ""); 901 (m_mediaKeys && !m_isClosed) ? " m_mediaKeys && !m_isClosed" : "");
902 902
903 return ScriptWrappable::hasPendingActivity() 903 return !m_pendingActions.isEmpty()
904 || !m_pendingActions.isEmpty()
905 || m_asyncEventQueue->hasPendingEvents() 904 || m_asyncEventQueue->hasPendingEvents()
906 || (m_mediaKeys && !m_isClosed); 905 || (m_mediaKeys && !m_isClosed);
907 } 906 }
908 907
909 void MediaKeySession::stop() 908 void MediaKeySession::stop()
910 { 909 {
911 // Stop the CDM from firing any more events for this session. 910 // Stop the CDM from firing any more events for this session.
912 m_session.clear(); 911 m_session.clear();
913 m_isClosed = true; 912 m_isClosed = true;
914 913
915 if (m_actionTimer.isActive()) 914 if (m_actionTimer.isActive())
916 m_actionTimer.stop(); 915 m_actionTimer.stop();
917 m_pendingActions.clear(); 916 m_pendingActions.clear();
918 m_asyncEventQueue->close(); 917 m_asyncEventQueue->close();
919 } 918 }
920 919
921 DEFINE_TRACE(MediaKeySession) 920 DEFINE_TRACE(MediaKeySession)
922 { 921 {
923 visitor->trace(m_asyncEventQueue); 922 visitor->trace(m_asyncEventQueue);
924 visitor->trace(m_pendingActions); 923 visitor->trace(m_pendingActions);
925 visitor->trace(m_mediaKeys); 924 visitor->trace(m_mediaKeys);
926 visitor->trace(m_keyStatusesMap); 925 visitor->trace(m_keyStatusesMap);
927 visitor->trace(m_closedPromise); 926 visitor->trace(m_closedPromise);
928 RefCountedGarbageCollectedEventTargetWithInlineData<MediaKeySession>::trace( visitor); 927 RefCountedGarbageCollectedEventTargetWithInlineData<MediaKeySession>::trace( visitor);
929 ActiveDOMObject::trace(visitor); 928 ActiveDOMObject::trace(visitor);
930 } 929 }
931 930
932 } // namespace blink 931 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698