| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "remoting/host/cast_extension_session.h" | 5 #include "remoting/host/cast_extension_session.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
| 9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 const int kMinFramesPerSecond = 5; | 64 const int kMinFramesPerSecond = 5; |
| 65 | 65 |
| 66 // A webrtc::SetSessionDescriptionObserver implementation used to receive the | 66 // A webrtc::SetSessionDescriptionObserver implementation used to receive the |
| 67 // results of setting local and remote descriptions of the PeerConnection. | 67 // results of setting local and remote descriptions of the PeerConnection. |
| 68 class CastSetSessionDescriptionObserver | 68 class CastSetSessionDescriptionObserver |
| 69 : public webrtc::SetSessionDescriptionObserver { | 69 : public webrtc::SetSessionDescriptionObserver { |
| 70 public: | 70 public: |
| 71 static CastSetSessionDescriptionObserver* Create() { | 71 static CastSetSessionDescriptionObserver* Create() { |
| 72 return new rtc::RefCountedObject<CastSetSessionDescriptionObserver>(); | 72 return new rtc::RefCountedObject<CastSetSessionDescriptionObserver>(); |
| 73 } | 73 } |
| 74 virtual void OnSuccess() override { | 74 void OnSuccess() override { |
| 75 VLOG(1) << "Setting session description succeeded."; | 75 VLOG(1) << "Setting session description succeeded."; |
| 76 } | 76 } |
| 77 virtual void OnFailure(const std::string& error) override { | 77 void OnFailure(const std::string& error) override { |
| 78 LOG(ERROR) << "Setting session description failed: " << error; | 78 LOG(ERROR) << "Setting session description failed: " << error; |
| 79 } | 79 } |
| 80 | 80 |
| 81 protected: | 81 protected: |
| 82 CastSetSessionDescriptionObserver() {} | 82 CastSetSessionDescriptionObserver() {} |
| 83 virtual ~CastSetSessionDescriptionObserver() {} | 83 ~CastSetSessionDescriptionObserver() override {} |
| 84 | 84 |
| 85 DISALLOW_COPY_AND_ASSIGN(CastSetSessionDescriptionObserver); | 85 DISALLOW_COPY_AND_ASSIGN(CastSetSessionDescriptionObserver); |
| 86 }; | 86 }; |
| 87 | 87 |
| 88 // A webrtc::CreateSessionDescriptionObserver implementation used to receive the | 88 // A webrtc::CreateSessionDescriptionObserver implementation used to receive the |
| 89 // results of creating descriptions for this end of the PeerConnection. | 89 // results of creating descriptions for this end of the PeerConnection. |
| 90 class CastCreateSessionDescriptionObserver | 90 class CastCreateSessionDescriptionObserver |
| 91 : public webrtc::CreateSessionDescriptionObserver { | 91 : public webrtc::CreateSessionDescriptionObserver { |
| 92 public: | 92 public: |
| 93 static CastCreateSessionDescriptionObserver* Create( | 93 static CastCreateSessionDescriptionObserver* Create( |
| 94 CastExtensionSession* session) { | 94 CastExtensionSession* session) { |
| 95 return new rtc::RefCountedObject<CastCreateSessionDescriptionObserver>( | 95 return new rtc::RefCountedObject<CastCreateSessionDescriptionObserver>( |
| 96 session); | 96 session); |
| 97 } | 97 } |
| 98 virtual void OnSuccess(webrtc::SessionDescriptionInterface* desc) override { | 98 void OnSuccess(webrtc::SessionDescriptionInterface* desc) override { |
| 99 if (cast_extension_session_ == NULL) { | 99 if (cast_extension_session_ == NULL) { |
| 100 LOG(ERROR) | 100 LOG(ERROR) |
| 101 << "No CastExtensionSession. Creating session description succeeded."; | 101 << "No CastExtensionSession. Creating session description succeeded."; |
| 102 return; | 102 return; |
| 103 } | 103 } |
| 104 cast_extension_session_->OnCreateSessionDescription(desc); | 104 cast_extension_session_->OnCreateSessionDescription(desc); |
| 105 } | 105 } |
| 106 virtual void OnFailure(const std::string& error) override { | 106 void OnFailure(const std::string& error) override { |
| 107 if (cast_extension_session_ == NULL) { | 107 if (cast_extension_session_ == NULL) { |
| 108 LOG(ERROR) | 108 LOG(ERROR) |
| 109 << "No CastExtensionSession. Creating session description failed."; | 109 << "No CastExtensionSession. Creating session description failed."; |
| 110 return; | 110 return; |
| 111 } | 111 } |
| 112 cast_extension_session_->OnCreateSessionDescriptionFailure(error); | 112 cast_extension_session_->OnCreateSessionDescriptionFailure(error); |
| 113 } | 113 } |
| 114 void SetCastExtensionSession(CastExtensionSession* cast_extension_session) { | 114 void SetCastExtensionSession(CastExtensionSession* cast_extension_session) { |
| 115 cast_extension_session_ = cast_extension_session; | 115 cast_extension_session_ = cast_extension_session; |
| 116 } | 116 } |
| 117 | 117 |
| 118 protected: | 118 protected: |
| 119 explicit CastCreateSessionDescriptionObserver(CastExtensionSession* session) | 119 explicit CastCreateSessionDescriptionObserver(CastExtensionSession* session) |
| 120 : cast_extension_session_(session) {} | 120 : cast_extension_session_(session) {} |
| 121 virtual ~CastCreateSessionDescriptionObserver() {} | 121 ~CastCreateSessionDescriptionObserver() override {} |
| 122 | 122 |
| 123 private: | 123 private: |
| 124 CastExtensionSession* cast_extension_session_; | 124 CastExtensionSession* cast_extension_session_; |
| 125 | 125 |
| 126 DISALLOW_COPY_AND_ASSIGN(CastCreateSessionDescriptionObserver); | 126 DISALLOW_COPY_AND_ASSIGN(CastCreateSessionDescriptionObserver); |
| 127 }; | 127 }; |
| 128 | 128 |
| 129 // A webrtc::StatsObserver implementation used to receive statistics about the | 129 // A webrtc::StatsObserver implementation used to receive statistics about the |
| 130 // current PeerConnection. | 130 // current PeerConnection. |
| 131 class CastStatsObserver : public webrtc::StatsObserver { | 131 class CastStatsObserver : public webrtc::StatsObserver { |
| 132 public: | 132 public: |
| 133 static CastStatsObserver* Create() { | 133 static CastStatsObserver* Create() { |
| 134 return new rtc::RefCountedObject<CastStatsObserver>(); | 134 return new rtc::RefCountedObject<CastStatsObserver>(); |
| 135 } | 135 } |
| 136 | 136 |
| 137 virtual void OnComplete( | 137 void OnComplete(const std::vector<webrtc::StatsReport>& reports) override { |
| 138 const std::vector<webrtc::StatsReport>& reports) override { | |
| 139 typedef webrtc::StatsReport::Values::iterator ValuesIterator; | 138 typedef webrtc::StatsReport::Values::iterator ValuesIterator; |
| 140 | 139 |
| 141 VLOG(1) << "Received " << reports.size() << " new StatsReports."; | 140 VLOG(1) << "Received " << reports.size() << " new StatsReports."; |
| 142 | 141 |
| 143 int index; | 142 int index; |
| 144 std::vector<webrtc::StatsReport>::const_iterator it; | 143 std::vector<webrtc::StatsReport>::const_iterator it; |
| 145 for (it = reports.begin(), index = 0; it != reports.end(); ++it, ++index) { | 144 for (it = reports.begin(), index = 0; it != reports.end(); ++it, ++index) { |
| 146 webrtc::StatsReport::Values v = it->values; | 145 webrtc::StatsReport::Values v = it->values; |
| 147 VLOG(1) << "Report " << index << ":"; | 146 VLOG(1) << "Report " << index << ":"; |
| 148 for (ValuesIterator vIt = v.begin(); vIt != v.end(); ++vIt) { | 147 for (ValuesIterator vIt = v.begin(); vIt != v.end(); ++vIt) { |
| 149 VLOG(1) << "Stat: " << vIt->name << "=" << vIt->value << "."; | 148 VLOG(1) << "Stat: " << vIt->name << "=" << vIt->value << "."; |
| 150 } | 149 } |
| 151 } | 150 } |
| 152 } | 151 } |
| 153 | 152 |
| 154 protected: | 153 protected: |
| 155 CastStatsObserver() {} | 154 CastStatsObserver() {} |
| 156 virtual ~CastStatsObserver() {} | 155 ~CastStatsObserver() override {} |
| 157 | 156 |
| 158 DISALLOW_COPY_AND_ASSIGN(CastStatsObserver); | 157 DISALLOW_COPY_AND_ASSIGN(CastStatsObserver); |
| 159 }; | 158 }; |
| 160 | 159 |
| 161 // TODO(aiguha): Fix PeerConnnection-related tear down crash caused by premature | 160 // TODO(aiguha): Fix PeerConnnection-related tear down crash caused by premature |
| 162 // destruction of cricket::CaptureManager (which occurs on releasing | 161 // destruction of cricket::CaptureManager (which occurs on releasing |
| 163 // |peer_conn_factory_|). See crbug.com/403840. | 162 // |peer_conn_factory_|). See crbug.com/403840. |
| 164 CastExtensionSession::~CastExtensionSession() { | 163 CastExtensionSession::~CastExtensionSession() { |
| 165 DCHECK(caller_task_runner_->BelongsToCurrentThread()); | 164 DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
| 166 | 165 |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 json->SetString(kWebRtcCandidate, candidate_str); | 660 json->SetString(kWebRtcCandidate, candidate_str); |
| 662 std::string json_str; | 661 std::string json_str; |
| 663 if (!base::JSONWriter::Write(json.get(), &json_str)) { | 662 if (!base::JSONWriter::Write(json.get(), &json_str)) { |
| 664 LOG(ERROR) << "Failed to serialize candidate message."; | 663 LOG(ERROR) << "Failed to serialize candidate message."; |
| 665 return; | 664 return; |
| 666 } | 665 } |
| 667 SendMessageToClient(kSubjectNewCandidate, json_str); | 666 SendMessageToClient(kSubjectNewCandidate, json_str); |
| 668 } | 667 } |
| 669 | 668 |
| 670 } // namespace remoting | 669 } // namespace remoting |
| OLD | NEW |