Index: content/renderer/media/rtc_data_channel_handler.h |
diff --git a/content/renderer/media/rtc_data_channel_handler.h b/content/renderer/media/rtc_data_channel_handler.h |
index 79addde172835073e9ee19e277eddfd5bb0b3f5d..181ba9717beac2edc876617403ab55f58ede5104 100644 |
--- a/content/renderer/media/rtc_data_channel_handler.h |
+++ b/content/renderer/media/rtc_data_channel_handler.h |
@@ -6,9 +6,7 @@ |
#define CONTENT_RENDERER_MEDIA_RTC_DATA_CHANNEL_HANDLER_H_ |
#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/threading/thread_checker.h" |
+#include "base/threading/non_thread_safe.h" |
#include "content/common/content_export.h" |
#include "third_party/libjingle/source/talk/app/webrtc/peerconnectioninterface.h" |
#include "third_party/WebKit/public/platform/WebRTCDataChannelHandler.h" |
@@ -23,20 +21,11 @@ |
// Callbacks to the webrtc::DataChannelObserver implementation also occur on |
// the main render thread. |
class CONTENT_EXPORT RtcDataChannelHandler |
- : NON_EXPORTED_BASE(public blink::WebRTCDataChannelHandler) { |
+ : NON_EXPORTED_BASE(public blink::WebRTCDataChannelHandler), |
+ NON_EXPORTED_BASE(public webrtc::DataChannelObserver), |
+ NON_EXPORTED_BASE(public base::NonThreadSafe) { |
public: |
- // This object can* be constructed on libjingle's signaling thread and then |
- // ownership is passed to the UI thread where it's eventually given to WebKit. |
- // The reason we must construct and hook ourselves up as an observer on the |
- // signaling thread is to avoid missing out on any state changes or messages |
- // that may occur before we've fully connected with webkit. |
- // This period is basically between when the ctor is called and until |
- // setClient is called. |
- // * For local data channels, the object will be construced on the main thread |
- // and we don't have the issue described above. |
- RtcDataChannelHandler( |
- const scoped_refptr<base::SingleThreadTaskRunner>& main_thread, |
- webrtc::DataChannelInterface* channel); |
+ explicit RtcDataChannelHandler(webrtc::DataChannelInterface* channel); |
virtual ~RtcDataChannelHandler(); |
// blink::WebRTCDataChannelHandler implementation. |
@@ -55,46 +44,14 @@ |
virtual bool sendRawData(const char* data, size_t length) override; |
virtual void close() override; |
- const scoped_refptr<webrtc::DataChannelInterface>& channel() const; |
+ // webrtc::DataChannelObserver implementation. |
+ void OnStateChange() override; |
+ void OnMessage(const webrtc::DataBuffer& buffer) override; |
private: |
- void OnStateChange(webrtc::DataChannelInterface::DataState state); |
- void OnMessage(scoped_ptr<webrtc::DataBuffer> buffer); |
void RecordMessageSent(size_t num_bytes); |
- class CONTENT_EXPORT Observer |
- : public NON_EXPORTED_BASE( |
- base::RefCountedThreadSafe<RtcDataChannelHandler::Observer>), |
- public NON_EXPORTED_BASE(webrtc::DataChannelObserver) { |
- public: |
- Observer(RtcDataChannelHandler* handler, |
- const scoped_refptr<base::SingleThreadTaskRunner>& main_thread, |
- webrtc::DataChannelInterface* channel); |
- |
- const scoped_refptr<base::SingleThreadTaskRunner>& main_thread() const; |
- const scoped_refptr<webrtc::DataChannelInterface>& channel() const; |
- |
- void ClearHandler(); |
- |
- private: |
- friend class base::RefCountedThreadSafe<RtcDataChannelHandler::Observer>; |
- ~Observer() override; |
- |
- // webrtc::DataChannelObserver implementation. |
- void OnStateChange() override; |
- void OnMessage(const webrtc::DataBuffer& buffer) override; |
- |
- void OnStateChangeImpl(webrtc::DataChannelInterface::DataState state); |
- void OnMessageImpl(scoped_ptr<webrtc::DataBuffer> buffer); |
- |
- RtcDataChannelHandler* handler_; |
- const scoped_refptr<base::SingleThreadTaskRunner> main_thread_; |
- const scoped_refptr<webrtc::DataChannelInterface> channel_; |
- }; |
- |
- scoped_refptr<Observer> observer_; |
- base::ThreadChecker thread_checker_; |
- |
+ scoped_refptr<webrtc::DataChannelInterface> channel_; |
blink::WebRTCDataChannelHandlerClient* webkit_client_; |
}; |