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

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

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
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE. 23 * THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #ifndef MediaKeySession_h 26 #ifndef MediaKeySession_h
27 #define MediaKeySession_h 27 #define MediaKeySession_h
28 28
29 #include "bindings/core/v8/ActiveScriptWrappable.h"
29 #include "bindings/core/v8/ScriptPromiseProperty.h" 30 #include "bindings/core/v8/ScriptPromiseProperty.h"
30 #include "core/dom/ActiveDOMObject.h" 31 #include "core/dom/ActiveDOMObject.h"
31 #include "core/dom/DOMArrayPiece.h" 32 #include "core/dom/DOMArrayPiece.h"
32 #include "modules/EventTargetModules.h" 33 #include "modules/EventTargetModules.h"
33 #include "modules/encryptedmedia/MediaKeyStatusMap.h" 34 #include "modules/encryptedmedia/MediaKeyStatusMap.h"
34 #include "platform/Timer.h" 35 #include "platform/Timer.h"
35 #include "platform/heap/Handle.h" 36 #include "platform/heap/Handle.h"
36 #include "public/platform/WebContentDecryptionModuleSession.h" 37 #include "public/platform/WebContentDecryptionModuleSession.h"
37 #include "public/platform/WebEncryptedMediaTypes.h" 38 #include "public/platform/WebEncryptedMediaTypes.h"
38 39
(...skipping 14 matching lines...) Expand all
53 // when it gets destroyed. When the Oilpan garbage collector determines that 54 // when it gets destroyed. When the Oilpan garbage collector determines that
54 // only WeakMember<> references remain to the MediaKeys object, the MediaKeys 55 // only WeakMember<> references remain to the MediaKeys object, the MediaKeys
55 // object will be finalized and the WeakMember<> references will be cleared 56 // object will be finalized and the WeakMember<> references will be cleared
56 // out(zeroed) by the garbage collector. 57 // out(zeroed) by the garbage collector.
57 // 58 //
58 // Because this object controls the lifetime of the WebContentDecryptionModuleSe ssion, 59 // Because this object controls the lifetime of the WebContentDecryptionModuleSe ssion,
59 // it may outlive any JavaScript references as long as the MediaKeys object is a live. 60 // it may outlive any JavaScript references as long as the MediaKeys object is a live.
60 // The WebContentDecryptionModuleSession has the same lifetime as this object. 61 // The WebContentDecryptionModuleSession has the same lifetime as this object.
61 class MediaKeySession final 62 class MediaKeySession final
62 : public RefCountedGarbageCollectedEventTargetWithInlineData<MediaKeySession > 63 : public RefCountedGarbageCollectedEventTargetWithInlineData<MediaKeySession >
64 , public ActiveScriptWrappable
63 , public ActiveDOMObject 65 , public ActiveDOMObject
64 , private WebContentDecryptionModuleSession::Client { 66 , private WebContentDecryptionModuleSession::Client {
65 REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(MediaKeySession); 67 REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(MediaKeySession);
66 DEFINE_WRAPPERTYPEINFO(); 68 DEFINE_WRAPPERTYPEINFO();
67 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(MediaKeySession); 69 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(MediaKeySession);
68 public: 70 public:
69 static MediaKeySession* create(ScriptState*, MediaKeys*, WebEncryptedMediaSe ssionType); 71 static MediaKeySession* create(ScriptState*, MediaKeys*, WebEncryptedMediaSe ssionType);
70 ~MediaKeySession() override; 72 ~MediaKeySession() override;
71 73
72 String sessionId() const; 74 String sessionId() const;
73 double expiration() const { return m_expiration; } 75 double expiration() const { return m_expiration; }
74 ScriptPromise closed(ScriptState*); 76 ScriptPromise closed(ScriptState*);
75 MediaKeyStatusMap* keyStatuses(); 77 MediaKeyStatusMap* keyStatuses();
76 78
77 ScriptPromise generateRequest(ScriptState*, const String& initDataType, cons t DOMArrayPiece& initData); 79 ScriptPromise generateRequest(ScriptState*, const String& initDataType, cons t DOMArrayPiece& initData);
78 ScriptPromise load(ScriptState*, const String& sessionId); 80 ScriptPromise load(ScriptState*, const String& sessionId);
79 81
80 ScriptPromise update(ScriptState*, const DOMArrayPiece& response); 82 ScriptPromise update(ScriptState*, const DOMArrayPiece& response);
81 ScriptPromise close(ScriptState*); 83 ScriptPromise close(ScriptState*);
82 ScriptPromise remove(ScriptState*); 84 ScriptPromise remove(ScriptState*);
83 85
84 // EventTarget 86 // EventTarget
85 const AtomicString& interfaceName() const override; 87 const AtomicString& interfaceName() const override;
86 ExecutionContext* getExecutionContext() const override; 88 ExecutionContext* getExecutionContext() const override;
87 89
90 // ActiveScriptWrappable
91 bool hasPendingActivity() const final;
92
88 // ActiveDOMObject 93 // ActiveDOMObject
89 bool hasPendingActivity() const override;
90 void stop() override; 94 void stop() override;
91 95
92 // Oilpan: eagerly release owned m_session, which in turn 96 // Oilpan: eagerly release owned m_session, which in turn
93 // drops the client reference back to this MediaKeySession object. 97 // drops the client reference back to this MediaKeySession object.
94 EAGERLY_FINALIZE(); 98 EAGERLY_FINALIZE();
95 DECLARE_VIRTUAL_TRACE(); 99 DECLARE_VIRTUAL_TRACE();
96 100
97 private: 101 private:
98 class PendingAction; 102 class PendingAction;
99 friend class NewSessionResultPromise; 103 friend class NewSessionResultPromise;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 typedef ScriptPromiseProperty<Member<MediaKeySession>, ToV8UndefinedGenerato r, Member<DOMException>> ClosedPromise; 139 typedef ScriptPromiseProperty<Member<MediaKeySession>, ToV8UndefinedGenerato r, Member<DOMException>> ClosedPromise;
136 Member<ClosedPromise> m_closedPromise; 140 Member<ClosedPromise> m_closedPromise;
137 141
138 HeapDeque<Member<PendingAction>> m_pendingActions; 142 HeapDeque<Member<PendingAction>> m_pendingActions;
139 Timer<MediaKeySession> m_actionTimer; 143 Timer<MediaKeySession> m_actionTimer;
140 }; 144 };
141 145
142 } // namespace blink 146 } // namespace blink
143 147
144 #endif // MediaKeySession_h 148 #endif // MediaKeySession_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698