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

Unified Diff: extensions/renderer/api/display_source/wifi_display/wifi_display_session.cc

Issue 1783843002: [chrome.displaySource][WiFi Display] Video formats capability negotiation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@export_video_format
Patch Set: rebased Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: extensions/renderer/api/display_source/wifi_display/wifi_display_session.cc
diff --git a/extensions/renderer/api/display_source/wifi_display/wifi_display_session.cc b/extensions/renderer/api/display_source/wifi_display/wifi_display_session.cc
index b83685464d8fadc171ca3faa8e65deccdd75c75a..1f0552f67ff06e4e6207507f7e7ea1a19bf01a7e 100644
--- a/extensions/renderer/api/display_source/wifi_display/wifi_display_session.cc
+++ b/extensions/renderer/api/display_source/wifi_display/wifi_display_session.cc
@@ -69,15 +69,20 @@ void WiFiDisplaySession::Start(const CompletionCallback& callback) {
void WiFiDisplaySession::Terminate(const CompletionCallback& callback) {
DCHECK_EQ(DisplaySourceSession::Established, state_);
- service_->Disconnect();
- state_ = DisplaySourceSession::Terminating;
+ Terminate();
teminate_completion_callback_ = callback;
}
void WiFiDisplaySession::OnConnected(const mojo::String& ip_address) {
DCHECK_EQ(DisplaySourceSession::Established, state_);
ip_address_ = ip_address;
- media_manager_.reset(new WiFiDisplayMediaManager());
+ media_manager_.reset(
+ new WiFiDisplayMediaManager(
+ params_.video_track,
+ params_.audio_track,
+ base::Bind(
+ &WiFiDisplaySession::OnMediaError,
+ weak_factory_.GetWeakPtr())));
wfd_source_.reset(wds::Source::Create(this, media_manager_.get(), this));
wfd_source_->Start();
}
@@ -117,26 +122,6 @@ void WiFiDisplaySession::OnMessage(const mojo::String& data) {
wfd_source_->RTSPDataReceived(data);
}
-void WiFiDisplaySession::OnIPCConnectionError() {
- // We must explicitly notify the session termination as it will never
- // arrive from browser process (IPC is broken).
- switch (state_) {
- case DisplaySourceSession::Idle:
- case DisplaySourceSession::Establishing:
- RunStartCallback(false, kErrorInternal);
- break;
- case DisplaySourceSession::Terminating:
- case DisplaySourceSession::Established:
- error_callback_.Run(api::display_source::ERROR_TYPE_UNKNOWN_ERROR,
- kErrorInternal);
- state_ = DisplaySourceSession::Idle;
- terminated_callback_.Run();
- break;
- default:
- NOTREACHED();
- }
-}
-
std::string WiFiDisplaySession::GetLocalIPAddress() const {
return ip_address_;
}
@@ -178,18 +163,45 @@ void WiFiDisplaySession::ErrorOccurred(wds::ErrorType error) {
error_callback_.Run(api::display_source::ERROR_TYPE_UNKNOWN_ERROR,
kErrorInternal);
}
+ // The session cannot continue.
+ Terminate();
+}
- if (state_ == DisplaySourceSession::Established) {
- // The session cannot continue.
- service_->Disconnect();
- state_ = DisplaySourceSession::Terminating;
+void WiFiDisplaySession::SessionCompleted() {
+ DCHECK_NE(DisplaySourceSession::Idle, state_);
+ // The session has finished normally.
+ Terminate();
+}
+
+void WiFiDisplaySession::OnIPCConnectionError() {
+ // We must explicitly notify the session termination as it will never
+ // arrive from browser process (IPC is broken).
+ switch (state_) {
+ case DisplaySourceSession::Idle:
+ case DisplaySourceSession::Establishing:
+ RunStartCallback(false, kErrorInternal);
+ break;
+ case DisplaySourceSession::Terminating:
+ case DisplaySourceSession::Established:
+ error_callback_.Run(api::display_source::ERROR_TYPE_UNKNOWN_ERROR,
+ kErrorInternal);
+ state_ = DisplaySourceSession::Idle;
+ terminated_callback_.Run();
+ break;
+ default:
+ NOTREACHED();
}
}
-void WiFiDisplaySession::SessionCompleted() {
+void WiFiDisplaySession::OnMediaError(const std::string& error) {
DCHECK_NE(DisplaySourceSession::Idle, state_);
+ error_callback_.Run(api::display_source::ERROR_TYPE_MEDIA_PIPELINE_ERROR,
+ error);
+ Terminate();
+}
+
+void WiFiDisplaySession::Terminate() {
if (state_ == DisplaySourceSession::Established) {
- // The session has finished normally.
service_->Disconnect();
state_ = DisplaySourceSession::Terminating;
}

Powered by Google App Engine
This is Rietveld 408576698