| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "extensions/renderer/api/display_source/wifi_display/wifi_display_sessi
on.h" | 5 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_sessi
on.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/timer/timer.h" | 8 #include "base/timer/timer.h" |
| 9 #include "content/public/common/service_registry.h" | 9 #include "content/public/common/service_registry.h" |
| 10 #include "content/public/renderer/render_frame.h" | 10 #include "content/public/renderer/render_frame.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 weak_factory_.GetWeakPtr())); | 35 weak_factory_.GetWeakPtr())); |
| 36 } | 36 } |
| 37 | 37 |
| 38 WiFiDisplaySession::~WiFiDisplaySession() { | 38 WiFiDisplaySession::~WiFiDisplaySession() { |
| 39 } | 39 } |
| 40 | 40 |
| 41 void WiFiDisplaySession::Start() { | 41 void WiFiDisplaySession::Start() { |
| 42 DCHECK(state_ == DisplaySourceSession::Idle); | 42 DCHECK(state_ == DisplaySourceSession::Idle); |
| 43 service_->Connect(params_.sink_id, params_.auth_method, params_.auth_data); | 43 service_->Connect(params_.sink_id, params_.auth_method, params_.auth_data); |
| 44 state_ = DisplaySourceSession::Establishing; | 44 state_ = DisplaySourceSession::Establishing; |
| 45 if (!started_callback_.is_null()) |
| 46 started_callback_.Run(params_.sink_id); |
| 45 } | 47 } |
| 46 | 48 |
| 47 void WiFiDisplaySession::Terminate() { | 49 void WiFiDisplaySession::Terminate() { |
| 48 DCHECK(state_ != DisplaySourceSession::Idle); | 50 DCHECK(state_ != DisplaySourceSession::Idle); |
| 49 switch (state_) { | 51 switch (state_) { |
| 50 case DisplaySourceSession::Idle: | 52 case DisplaySourceSession::Idle: |
| 51 case DisplaySourceSession::Terminating: | 53 case DisplaySourceSession::Terminating: |
| 52 // Nothing to do. | 54 // Nothing to do. |
| 53 return; | 55 return; |
| 54 case DisplaySourceSession::Establishing: | 56 case DisplaySourceSession::Establishing: |
| 55 case DisplaySourceSession::Established: | 57 case DisplaySourceSession::Established: |
| 56 service_->Disconnect(); | 58 service_->Disconnect(); |
| 57 state_ = DisplaySourceSession::Terminating; | 59 state_ = DisplaySourceSession::Terminating; |
| 58 break; | 60 break; |
| 59 default: | 61 default: |
| 60 NOTREACHED(); | 62 NOTREACHED(); |
| 61 } | 63 } |
| 62 } | 64 } |
| 63 | 65 |
| 64 void WiFiDisplaySession::OnConnected( | 66 void WiFiDisplaySession::OnEstablished(const mojo::String& ip_address) { |
| 65 int32_t sink_id, const mojo::String& ip_address) { | 67 DCHECK(state_ != DisplaySourceSession::Established); |
| 66 if (sink_id == params_.sink_id) { | 68 ip_address_ = ip_address; |
| 67 DCHECK(state_ != DisplaySourceSession::Established); | 69 state_ = DisplaySourceSession::Established; |
| 68 ip_address_ = ip_address; | |
| 69 state_ = DisplaySourceSession::Established; | |
| 70 } | |
| 71 | |
| 72 if (!started_callback_.is_null()) | |
| 73 started_callback_.Run(sink_id); | |
| 74 } | 70 } |
| 75 | 71 |
| 76 void WiFiDisplaySession::OnDisconnected(int32_t sink_id) { | 72 void WiFiDisplaySession::OnTerminated() { |
| 77 if (sink_id == params_.sink_id) { | 73 DCHECK(state_ != DisplaySourceSession::Idle); |
| 78 DCHECK(state_ == DisplaySourceSession::Established || | 74 state_ = DisplaySourceSession::Idle; |
| 79 state_ == DisplaySourceSession::Terminating); | |
| 80 state_ = DisplaySourceSession::Idle; | |
| 81 } | |
| 82 | |
| 83 if (!terminated_callback_.is_null()) | 75 if (!terminated_callback_.is_null()) |
| 84 terminated_callback_.Run(sink_id); | 76 terminated_callback_.Run(params_.sink_id); |
| 85 } | 77 } |
| 86 | 78 |
| 87 void WiFiDisplaySession::OnError( | 79 void WiFiDisplaySession::OnError(int32_t type, |
| 88 int32_t sink_id, int32_t type, const mojo::String& description) { | 80 const mojo::String& description) { |
| 89 DCHECK(type > api::display_source::ERROR_TYPE_NONE | 81 DCHECK(type > api::display_source::ERROR_TYPE_NONE |
| 90 && type <= api::display_source::ERROR_TYPE_LAST); | 82 && type <= api::display_source::ERROR_TYPE_LAST); |
| 91 if (!error_callback_.is_null()) | 83 if (!error_callback_.is_null()) |
| 92 error_callback_.Run(sink_id, static_cast<ErrorType>(type), description); | 84 error_callback_.Run(params_.sink_id, static_cast<ErrorType>(type), |
| 85 description); |
| 93 } | 86 } |
| 94 | 87 |
| 95 void WiFiDisplaySession::OnMessage(const mojo::String& data) { | 88 void WiFiDisplaySession::OnMessage(const mojo::String& data) { |
| 96 DCHECK(state_ == DisplaySourceSession::Established); | 89 DCHECK(state_ == DisplaySourceSession::Established); |
| 97 } | 90 } |
| 98 | 91 |
| 99 void WiFiDisplaySession::OnConnectionError() { | 92 void WiFiDisplaySession::OnConnectionError() { |
| 100 if (!error_callback_.is_null()) { | 93 if (!error_callback_.is_null()) { |
| 101 error_callback_.Run(params_.sink_id, | 94 error_callback_.Run(params_.sink_id, |
| 102 api::display_source::ERROR_TYPE_UNKNOWN_ERROR, | 95 api::display_source::ERROR_TYPE_UNKNOWN_ERROR, |
| 103 kErrorInternal); | 96 kErrorInternal); |
| 104 } | 97 } |
| 105 | 98 |
| 106 if (state_ == DisplaySourceSession::Established || | 99 if (state_ != DisplaySourceSession::Idle) { |
| 107 state_ == DisplaySourceSession::Terminating) { | |
| 108 // We must explicitly notify the session termination as it will never | 100 // We must explicitly notify the session termination as it will never |
| 109 // arrive from browser process (IPC is broken). | 101 // arrive from browser process (IPC is broken). |
| 110 if (!terminated_callback_.is_null()) | 102 if (!terminated_callback_.is_null()) |
| 111 terminated_callback_.Run(params_.sink_id); | 103 terminated_callback_.Run(params_.sink_id); |
| 112 } | 104 } |
| 113 } | 105 } |
| 114 | 106 |
| 115 } // namespace extensions | 107 } // namespace extensions |
| OLD | NEW |