Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / renderer / media / peer_connection_tracker.h
index 406b7ac..08f9086 100644 (file)
@@ -8,6 +8,8 @@
 #include <map>
 
 #include "base/compiler_specific.h"
+#include "base/memory/weak_ptr.h"
+#include "base/threading/thread_checker.h"
 #include "content/public/renderer/render_process_observer.h"
 #include "third_party/WebKit/public/platform/WebMediaStream.h"
 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h"
@@ -33,10 +35,12 @@ class RTCPeerConnectionHandler;
 // This class collects data about each peer connection,
 // sends it to the browser process, and handles messages
 // from the browser process.
-class CONTENT_EXPORT PeerConnectionTracker : public RenderProcessObserver {
+class CONTENT_EXPORT PeerConnectionTracker
+    : public RenderProcessObserver,
+      public base::SupportsWeakPtr<PeerConnectionTracker> {
  public:
   PeerConnectionTracker();
-  virtual ~PeerConnectionTracker();
+  ~PeerConnectionTracker() override;
 
   enum Source {
     SOURCE_LOCAL,
@@ -51,7 +55,7 @@ class CONTENT_EXPORT PeerConnectionTracker : public RenderProcessObserver {
   };
 
   // RenderProcessObserver implementation.
-  virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE;
+  bool OnControlMessageReceived(const IPC::Message& message) override;
 
   //
   // The following methods send an update to the browser process when a
@@ -69,7 +73,7 @@ class CONTENT_EXPORT PeerConnectionTracker : public RenderProcessObserver {
   // page in which the PeerConnection is created.
   void RegisterPeerConnection(
       RTCPeerConnectionHandler* pc_handler,
-      const std::vector<webrtc::PeerConnectionInterface::IceServer>& servers,
+      const webrtc::PeerConnectionInterface::RTCConfiguration& config,
       const RTCMediaConstraints& constraints,
       const blink::WebFrame* frame);
 
@@ -87,18 +91,20 @@ class CONTENT_EXPORT PeerConnectionTracker : public RenderProcessObserver {
   // Sends an update when setLocalDescription or setRemoteDescription is called.
   virtual void TrackSetSessionDescription(
       RTCPeerConnectionHandler* pc_handler,
-      const blink::WebRTCSessionDescription& desc, Source source);
+      const std::string& sdp, const std::string& type, Source source);
 
   // Sends an update when Ice candidates are updated.
   virtual void TrackUpdateIce(
       RTCPeerConnectionHandler* pc_handler,
-      const std::vector<webrtc::PeerConnectionInterface::IceServer>& servers,
+      const webrtc::PeerConnectionInterface::RTCConfiguration& config,
       const RTCMediaConstraints& options);
 
   // Sends an update when an Ice candidate is added.
   virtual void TrackAddIceCandidate(
       RTCPeerConnectionHandler* pc_handler,
-      const blink::WebRTCICECandidate& candidate, Source source);
+      const blink::WebRTCICECandidate& candidate,
+      Source source,
+      bool succeeded);
 
   // Sends an update when a media stream is added.
   virtual void TrackAddStream(
@@ -161,6 +167,9 @@ class CONTENT_EXPORT PeerConnectionTracker : public RenderProcessObserver {
   // IPC Message handler for getting all stats.
   void OnGetAllStats();
 
+  // Called when the browser process reports a suspend event from the OS.
+  void OnSuspend();
+
   void SendPeerConnectionUpdate(RTCPeerConnectionHandler* pc_handler,
                                 const std::string& callback_type,
                                 const std::string& value);
@@ -171,6 +180,7 @@ class CONTENT_EXPORT PeerConnectionTracker : public RenderProcessObserver {
 
   // This keeps track of the next available local ID.
   int next_lid_;
+  base::ThreadChecker main_thread_;
 
   DISALLOW_COPY_AND_ASSIGN(PeerConnectionTracker);
 };