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

Side by Side Diff: third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp

Issue 1744133002: Reduce ActiveDOMObjects from modules/mediastream/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * Copyright (C) 2011 Ericsson AB. All rights reserved. 3 * Copyright (C) 2011 Ericsson AB. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 25 matching lines...) Expand all
36 #include "modules/mediastream/MediaStreamTrackSourcesRequestImpl.h" 36 #include "modules/mediastream/MediaStreamTrackSourcesRequestImpl.h"
37 #include "modules/mediastream/UserMediaController.h" 37 #include "modules/mediastream/UserMediaController.h"
38 #include "platform/mediastream/MediaStreamCenter.h" 38 #include "platform/mediastream/MediaStreamCenter.h"
39 #include "platform/mediastream/MediaStreamComponent.h" 39 #include "platform/mediastream/MediaStreamComponent.h"
40 #include "public/platform/WebSourceInfo.h" 40 #include "public/platform/WebSourceInfo.h"
41 41
42 namespace blink { 42 namespace blink {
43 43
44 MediaStreamTrack* MediaStreamTrack::create(ExecutionContext* context, MediaStrea mComponent* component) 44 MediaStreamTrack* MediaStreamTrack::create(ExecutionContext* context, MediaStrea mComponent* component)
45 { 45 {
46 MediaStreamTrack* track = new MediaStreamTrack(context, component); 46 return new MediaStreamTrack(context, component);
47 track->suspendIfNeeded();
48 return track;
49 } 47 }
50 48
51 MediaStreamTrack::MediaStreamTrack(ExecutionContext* context, MediaStreamCompone nt* component) 49 MediaStreamTrack::MediaStreamTrack(ExecutionContext* context, MediaStreamCompone nt* component)
52 : ActiveDOMObject(context) 50 : ContextLifecycleObserver(context)
53 , m_readyState(MediaStreamSource::ReadyStateLive) 51 , m_readyState(MediaStreamSource::ReadyStateLive)
54 , m_isIteratingRegisteredMediaStreams(false) 52 , m_isIteratingRegisteredMediaStreams(false)
55 , m_stopped(false)
56 , m_component(component) 53 , m_component(component)
57 { 54 {
58 m_component->source()->addObserver(this); 55 m_component->source()->addObserver(this);
59 } 56 }
60 57
61 MediaStreamTrack::~MediaStreamTrack() 58 MediaStreamTrack::~MediaStreamTrack()
62 { 59 {
63 } 60 }
64 61
65 String MediaStreamTrack::kind() const 62 String MediaStreamTrack::kind() const
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 MediaStreamTrack* MediaStreamTrack::clone(ExecutionContext* context) 161 MediaStreamTrack* MediaStreamTrack::clone(ExecutionContext* context)
165 { 162 {
166 MediaStreamComponent* clonedComponent = MediaStreamComponent::create(compone nt()->source()); 163 MediaStreamComponent* clonedComponent = MediaStreamComponent::create(compone nt()->source());
167 MediaStreamTrack* clonedTrack = MediaStreamTrack::create(context, clonedComp onent); 164 MediaStreamTrack* clonedTrack = MediaStreamTrack::create(context, clonedComp onent);
168 MediaStreamCenter::instance().didCreateMediaStreamTrack(clonedComponent); 165 MediaStreamCenter::instance().didCreateMediaStreamTrack(clonedComponent);
169 return clonedTrack; 166 return clonedTrack;
170 } 167 }
171 168
172 bool MediaStreamTrack::ended() const 169 bool MediaStreamTrack::ended() const
173 { 170 {
174 return m_stopped || (m_readyState == MediaStreamSource::ReadyStateEnded); 171 return !executionContext() || (m_readyState == MediaStreamSource::ReadyState Ended);
175 } 172 }
176 173
177 void MediaStreamTrack::sourceChangedState() 174 void MediaStreamTrack::sourceChangedState()
178 { 175 {
179 if (ended()) 176 if (ended())
180 return; 177 return;
181 178
182 m_readyState = m_component->source()->readyState(); 179 m_readyState = m_component->source()->readyState();
183 switch (m_readyState) { 180 switch (m_readyState) {
184 case MediaStreamSource::ReadyStateLive: 181 case MediaStreamSource::ReadyStateLive:
(...skipping 13 matching lines...) Expand all
198 195
199 void MediaStreamTrack::propagateTrackEnded() 196 void MediaStreamTrack::propagateTrackEnded()
200 { 197 {
201 RELEASE_ASSERT(!m_isIteratingRegisteredMediaStreams); 198 RELEASE_ASSERT(!m_isIteratingRegisteredMediaStreams);
202 m_isIteratingRegisteredMediaStreams = true; 199 m_isIteratingRegisteredMediaStreams = true;
203 for (HeapHashSet<Member<MediaStream>>::iterator iter = m_registeredMediaStre ams.begin(); iter != m_registeredMediaStreams.end(); ++iter) 200 for (HeapHashSet<Member<MediaStream>>::iterator iter = m_registeredMediaStre ams.begin(); iter != m_registeredMediaStreams.end(); ++iter)
204 (*iter)->trackEnded(); 201 (*iter)->trackEnded();
205 m_isIteratingRegisteredMediaStreams = false; 202 m_isIteratingRegisteredMediaStreams = false;
206 } 203 }
207 204
208 void MediaStreamTrack::stop()
209 {
210 m_stopped = true;
211 }
212
213 bool MediaStreamTrack::hasPendingActivity() const 205 bool MediaStreamTrack::hasPendingActivity() const
214 { 206 {
215 // If 'ended' listeners exist and the object hasn't yet reached 207 // If 'ended' listeners exist and the object hasn't yet reached
216 // that state, keep the object alive. 208 // that state, keep the object alive.
217 // 209 //
218 // An otherwise unreachable MediaStreamTrack object in an non-ended 210 // An otherwise unreachable MediaStreamTrack object in an non-ended
219 // state will otherwise indirectly be transitioned to the 'ended' state 211 // state will otherwise indirectly be transitioned to the 'ended' state
220 // while finalizing m_component. Which dispatches an 'ended' event, 212 // while finalizing m_component. Which dispatches an 'ended' event,
221 // referring to this object as the target. If this object is then GCed 213 // referring to this object as the target. If this object is then GCed
222 // at the same time, v8 objects will retain (wrapper) references to 214 // at the same time, v8 objects will retain (wrapper) references to
(...skipping 24 matching lines...) Expand all
247 m_registeredMediaStreams.remove(iter); 239 m_registeredMediaStreams.remove(iter);
248 } 240 }
249 241
250 const AtomicString& MediaStreamTrack::interfaceName() const 242 const AtomicString& MediaStreamTrack::interfaceName() const
251 { 243 {
252 return EventTargetNames::MediaStreamTrack; 244 return EventTargetNames::MediaStreamTrack;
253 } 245 }
254 246
255 ExecutionContext* MediaStreamTrack::executionContext() const 247 ExecutionContext* MediaStreamTrack::executionContext() const
256 { 248 {
257 return ActiveDOMObject::executionContext(); 249 return ContextLifecycleObserver::executionContext();
258 } 250 }
259 251
260 DEFINE_TRACE(MediaStreamTrack) 252 DEFINE_TRACE(MediaStreamTrack)
261 { 253 {
262 visitor->trace(m_registeredMediaStreams); 254 visitor->trace(m_registeredMediaStreams);
263 visitor->trace(m_component); 255 visitor->trace(m_component);
264 RefCountedGarbageCollectedEventTargetWithInlineData<MediaStreamTrack>::trace (visitor); 256 RefCountedGarbageCollectedEventTargetWithInlineData<MediaStreamTrack>::trace (visitor);
265 ActiveDOMObject::trace(visitor); 257 ContextLifecycleObserver::trace(visitor);
266 } 258 }
267 259
268 } // namespace blink 260 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698