Home | History | Annotate | Download | only in media
      1 // Copyright 2013 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 CONTENT_RENDERER_MEDIA_PEER_CONNECTION_IDENTITY_SERVICE_H_
      6 #define CONTENT_RENDERER_MEDIA_PEER_CONNECTION_IDENTITY_SERVICE_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "content/public/renderer/render_process_observer.h"
     12 #include "third_party/libjingle/source/talk/app/webrtc/peerconnectioninterface.h"
     13 #include "url/gurl.h"
     14 
     15 namespace content {
     16 
     17 // This class is associated with a peer connection and handles WebRTC DTLS
     18 // identity requests by delegating to the per-renderer WebRTCIdentityProxy.
     19 class PeerConnectionIdentityService
     20     : public webrtc::DTLSIdentityServiceInterface {
     21  public:
     22   static PeerConnectionIdentityService* Create(const GURL& origin);
     23 
     24   virtual ~PeerConnectionIdentityService();
     25 
     26   // webrtc::DTLSIdentityServiceInterface implementation.
     27   virtual bool RequestIdentity(
     28       const std::string& identity_name,
     29       const std::string& common_name,
     30       webrtc::DTLSIdentityRequestObserver* observer) OVERRIDE;
     31 
     32  private:
     33   explicit PeerConnectionIdentityService(const GURL& origin);
     34 
     35   void OnIdentityReady(const std::string& certificate,
     36                        const std::string& private_key);
     37   void OnRequestFailed(int error);
     38 
     39   void ResetPendingRequest();
     40 
     41   // The origin of the DTLS connection.
     42   GURL origin_;
     43   talk_base::scoped_refptr<webrtc::DTLSIdentityRequestObserver>
     44       pending_observer_;
     45   int pending_request_id_;
     46 
     47   DISALLOW_COPY_AND_ASSIGN(PeerConnectionIdentityService);
     48 };
     49 
     50 }  // namespace content
     51 
     52 #endif  // CONTENT_RENDERER_MEDIA_PEER_CONNECTION_IDENTITY_SERVICE_H_
     53