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

Side by Side Diff: third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp

Issue 1580883002: Oilpan: move AsyncMethodRunner to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rename to RawPtrOrMemberTrait<> Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/mediarecorder/MediaRecorder.h" 5 #include "modules/mediarecorder/MediaRecorder.h"
6 6
7 #include "bindings/core/v8/Dictionary.h" 7 #include "bindings/core/v8/Dictionary.h"
8 #include "core/events/Event.h" 8 #include "core/events/Event.h"
9 #include "core/fileapi/Blob.h" 9 #include "core/fileapi/Blob.h"
10 #include "modules/EventTargetModules.h" 10 #include "modules/EventTargetModules.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 return recorder; 52 return recorder;
53 } 53 }
54 54
55 MediaRecorder::MediaRecorder(ExecutionContext* context, MediaStream* stream, con st MediaRecorderOptions& options, ExceptionState& exceptionState) 55 MediaRecorder::MediaRecorder(ExecutionContext* context, MediaStream* stream, con st MediaRecorderOptions& options, ExceptionState& exceptionState)
56 : ActiveDOMObject(context) 56 : ActiveDOMObject(context)
57 , m_stream(stream) 57 , m_stream(stream)
58 , m_mimeType(options.mimeType()) 58 , m_mimeType(options.mimeType())
59 , m_stopped(true) 59 , m_stopped(true)
60 , m_ignoreMutedMedia(true) 60 , m_ignoreMutedMedia(true)
61 , m_state(State::Inactive) 61 , m_state(State::Inactive)
62 , m_dispatchScheduledEventRunner(this, &MediaRecorder::dispatchScheduledEven t) 62 , m_dispatchScheduledEventRunner(AsyncMethodRunner<MediaRecorder>::create(th is, &MediaRecorder::dispatchScheduledEvent))
63 { 63 {
64 ASSERT(m_stream->getTracks().size()); 64 ASSERT(m_stream->getTracks().size());
65 65
66 m_recorderHandler = adoptPtr(Platform::current()->createMediaRecorderHandler ()); 66 m_recorderHandler = adoptPtr(Platform::current()->createMediaRecorderHandler ());
67 ASSERT(m_recorderHandler); 67 ASSERT(m_recorderHandler);
68 68
69 // We deviate from the spec by not returning |UnsupportedOption|, see https: //github.com/w3c/mediacapture-record/issues/18 69 // We deviate from the spec by not returning |UnsupportedOption|, see https: //github.com/w3c/mediacapture-record/issues/18
70 if (!m_recorderHandler) { 70 if (!m_recorderHandler) {
71 exceptionState.throwDOMException(NotSupportedError, "No MediaRecorder ha ndler can be created."); 71 exceptionState.throwDOMException(NotSupportedError, "No MediaRecorder ha ndler can be created.");
72 return; 72 return;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 return EventTargetNames::MediaRecorder; 174 return EventTargetNames::MediaRecorder;
175 } 175 }
176 176
177 ExecutionContext* MediaRecorder::executionContext() const 177 ExecutionContext* MediaRecorder::executionContext() const
178 { 178 {
179 return ActiveDOMObject::executionContext(); 179 return ActiveDOMObject::executionContext();
180 } 180 }
181 181
182 void MediaRecorder::suspend() 182 void MediaRecorder::suspend()
183 { 183 {
184 m_dispatchScheduledEventRunner.suspend(); 184 m_dispatchScheduledEventRunner->suspend();
185 } 185 }
186 186
187 void MediaRecorder::resume() 187 void MediaRecorder::resume()
188 { 188 {
189 m_dispatchScheduledEventRunner.resume(); 189 m_dispatchScheduledEventRunner->resume();
190 } 190 }
191 191
192 void MediaRecorder::stop() 192 void MediaRecorder::stop()
193 { 193 {
194 if (m_stopped) 194 if (m_stopped)
195 return; 195 return;
196 196
197 m_stopped = true; 197 m_stopped = true;
198 m_stream.clear(); 198 m_stream.clear();
199 m_recorderHandler.clear(); 199 m_recorderHandler.clear();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 m_recorderHandler->stop(); 244 m_recorderHandler->stop();
245 245
246 writeData(nullptr /* data */, 0 /* length */, true /* lastInSlice */); 246 writeData(nullptr /* data */, 0 /* length */, true /* lastInSlice */);
247 scheduleDispatchEvent(Event::create(EventTypeNames::stop)); 247 scheduleDispatchEvent(Event::create(EventTypeNames::stop));
248 } 248 }
249 249
250 void MediaRecorder::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> event) 250 void MediaRecorder::scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event> event)
251 { 251 {
252 m_scheduledEvents.append(event); 252 m_scheduledEvents.append(event);
253 253
254 m_dispatchScheduledEventRunner.runAsync(); 254 m_dispatchScheduledEventRunner->runAsync();
255 } 255 }
256 256
257 void MediaRecorder::dispatchScheduledEvent() 257 void MediaRecorder::dispatchScheduledEvent()
258 { 258 {
259 WillBeHeapVector<RefPtrWillBeMember<Event>> events; 259 WillBeHeapVector<RefPtrWillBeMember<Event>> events;
260 events.swap(m_scheduledEvents); 260 events.swap(m_scheduledEvents);
261 261
262 for (const auto& event : events) 262 for (const auto& event : events)
263 dispatchEvent(event); 263 dispatchEvent(event);
264 } 264 }
265 265
266 DEFINE_TRACE(MediaRecorder) 266 DEFINE_TRACE(MediaRecorder)
267 { 267 {
268 visitor->trace(m_stream); 268 visitor->trace(m_stream);
269 visitor->trace(m_dispatchScheduledEventRunner);
269 visitor->trace(m_scheduledEvents); 270 visitor->trace(m_scheduledEvents);
270 RefCountedGarbageCollectedEventTargetWithInlineData<MediaRecorder>::trace(vi sitor); 271 RefCountedGarbageCollectedEventTargetWithInlineData<MediaRecorder>::trace(vi sitor);
271 ActiveDOMObject::trace(visitor); 272 ActiveDOMObject::trace(visitor);
272 } 273 }
273 274
274 } // namespace blink 275 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698