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

Side by Side Diff: Source/modules/mediastream/MediaRecorder.h

Issue 1255873002: MediaRecorder Blink part (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: tommi@s comments. Added dummy Source/platform/exported/WebMediaRecorderHandlerClient.cpp Created 5 years, 4 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef MediaRecorder_h
6 #define MediaRecorder_h
7
8 #include "core/dom/ActiveDOMObject.h"
9 #include "core/events/EventTarget.h"
10 #include "modules/EventTargetModules.h"
11 #include "modules/mediastream/MediaStream.h"
12 #include "modules/ModulesExport.h"
13 #include "platform/AsyncMethodRunner.h"
14 #include "public/platform/WebMediaRecorderHandler.h"
15 #include "public/platform/WebMediaRecorderHandlerClient.h"
16
17 namespace blink {
18
19 class BlobData;
20 class ExceptionState;
21
22 class MODULES_EXPORT MediaRecorder final
23 : public RefCountedGarbageCollectedEventTargetWithInlineData<MediaRecorder>
24 , public WebMediaRecorderHandlerClient
25 , public ActiveDOMObject {
26 REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(MediaRecorder);
27 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(MediaRecorder);
28 DEFINE_WRAPPERTYPEINFO();
29 public:
30 enum class MediaRecorderState {
esprehn 2015/08/12 22:27:34 rename to just State, no reason to add the class n
mcasas 2015/08/13 09:31:51 Done.
31 Inactive = 0,
32 Recording,
33 Paused
34 };
35
36 static MediaRecorder* create(ExecutionContext*, MediaStream*, ExceptionState &);
37 static MediaRecorder* create(ExecutionContext*, MediaStream*, const String& mimeType, ExceptionState&);
38
39 virtual ~MediaRecorder() {}
40
41 MediaStream* stream() const { return m_stream.get(); }
42 const String& mimeType() const { return m_mimeType; }
43 String state() const;
44
45 DEFINE_ATTRIBUTE_EVENT_LISTENER(start);
46 DEFINE_ATTRIBUTE_EVENT_LISTENER(stop);
47 DEFINE_ATTRIBUTE_EVENT_LISTENER(dataavailable);
48 DEFINE_ATTRIBUTE_EVENT_LISTENER(pause);
49 DEFINE_ATTRIBUTE_EVENT_LISTENER(resume);
50 DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
51
52 bool ignoreMutedMedia() const { return m_ignoreMutedMedia; }
53 void setIgnoreMutedMedia(bool ignoreMutedMedia) { m_ignoreMutedMedia = ignor eMutedMedia; }
54
55 void start(ExceptionState&);
56 void start(int& timeSlice, ExceptionState&);
esprehn 2015/08/12 22:27:34 This shouldn't be a reference to an int.
mcasas 2015/08/13 09:31:51 Done.
57 void stop(ExceptionState&);
58 void pause(ExceptionState&);
59 void resume(ExceptionState&);
60 void requestData(ExceptionState&);
61
62 static String canRecordMimeType(const String& mimeType);
63
64 // EventTarget
65 virtual const AtomicString& interfaceName() const override;
66 virtual ExecutionContext* executionContext() const override;
67
68 // ActiveDOMObject
69 virtual void suspend() override { m_dispatchScheduledEventRunner.suspend(); }
70 virtual void resume() override { m_dispatchScheduledEventRunner.resume(); }
71 virtual void stop() override;
72 virtual bool hasPendingActivity() const override { return !m_stopped; }
73
74 // WebMediaRecorderHandlerClient
75 virtual void writeData(const char* data, size_t length, bool lastInSlice) ov erride;
76 virtual void failOutOfMemory(const WebString& message) override;
77 virtual void failIllegalStreamModification(const WebString& message) overrid e;
78 virtual void failOtherRecordingError(const WebString& message) override;
79
80 DECLARE_VIRTUAL_TRACE();
81
82 private:
83 MediaRecorder(ExecutionContext*, MediaStream*, const String&, ExceptionState &);
esprehn 2015/08/12 22:27:34 add argument name for the string.
mcasas 2015/08/13 09:31:50 Done.
84
85 void createBlobEvent(PassOwnPtr<BlobData> blobData);
86
87 void doStop();
88 void scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event>);
89 void dispatchScheduledEvent();
esprehn 2015/08/12 22:27:34 I think you want an EventSender instead of this.
mcasas 2015/08/13 09:31:50 I'm not sure I understand how that class would be
90
91 Member<MediaStream> m_stream;
92 bool m_stopped;
93 String m_mimeType;
94 bool m_ignoreMutedMedia;
esprehn 2015/08/12 22:27:34 combine bools so this packs better.
mcasas 2015/08/13 09:31:50 Done.
95
96 MediaRecorderState m_state;
97
98 OwnPtr<WebMediaRecorderHandler> m_recorderHandler;
99
100 AsyncMethodRunner<MediaRecorder> m_dispatchScheduledEventRunner;
101 WillBeHeapVector<RefPtrWillBeMember<Event>> m_scheduledEvents;
102 };
103
104 } // namespace blink
105
106 #endif // MediaRecorder_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698