| Index: content/browser/presentation/presentation_service_impl.cc
|
| diff --git a/content/browser/presentation/presentation_service_impl.cc b/content/browser/presentation/presentation_service_impl.cc
|
| index 80e2aeacd74914cb97eee814b26873ef104ee8e4..828958eb27dc24e0f1a3db363507b91871998c52 100644
|
| --- a/content/browser/presentation/presentation_service_impl.cc
|
| +++ b/content/browser/presentation/presentation_service_impl.cc
|
| @@ -202,7 +202,8 @@ void PresentationServiceImpl::ListenForScreenAvailability(
|
| listener.get())) {
|
| screen_availability_listeners_.set(availability_url, listener.Pass());
|
| } else {
|
| - DVLOG(1) << "AddScreenAvailabilityListener failed. Ignoring request.";
|
| + DVLOG(1) << "AddScreenAvailabilityListener failed. Returning false.";
|
| + client_->OnScreenAvailabilityUpdated(url, false);
|
| }
|
| }
|
|
|
| @@ -456,6 +457,44 @@ void PresentationServiceImpl::ListenForSessionMessages(
|
| weak_factory_.GetWeakPtr(), session_info));
|
| }
|
|
|
| +void PresentationServiceImpl::GetPresenterSession(
|
| + const GetPresenterSessionMojoCallback& callback) {
|
| + DVLOG(2) << "GetPresenterSession";
|
| + if (!delegate_) {
|
| + callback.Run(presentation::PresentationSessionInfoPtr());
|
| + return;
|
| + }
|
| +
|
| + presenter_session_callback_.reset(
|
| + new GetPresenterSessionMojoCallback(callback));
|
| + delegate_->GetPresenterSession(
|
| + render_process_id_, render_frame_id_,
|
| + base::Bind(&PresentationServiceImpl::OnGetPresenterSessionSuccess,
|
| + weak_factory_.GetWeakPtr()),
|
| + base::Bind(&PresentationServiceImpl::OnGetPresenterSessionError,
|
| + weak_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| +void PresentationServiceImpl::OnGetPresenterSessionSuccess(
|
| + const content::PresentationSessionInfo& session_info) {
|
| + DVLOG(2) << "OnGetPresenterSessionSuccess: " << session_info.presentation_id;
|
| + if (presenter_session_callback_) {
|
| + presenter_session_callback_->Run(
|
| + presentation::PresentationSessionInfo::From(session_info));
|
| + presenter_session_callback_.reset();
|
| + }
|
| +}
|
| +
|
| +void PresentationServiceImpl::OnGetPresenterSessionError(
|
| + const std::string& error) {
|
| + DVLOG(2) << __FUNCTION__ << ", error: " << error;
|
| + if (presenter_session_callback_) {
|
| + presenter_session_callback_->Run(
|
| + presentation::PresentationSessionInfoPtr());
|
| + presenter_session_callback_.reset();
|
| + }
|
| +}
|
| +
|
| void PresentationServiceImpl::OnSessionMessages(
|
| const PresentationSessionInfo& session,
|
| const ScopedVector<PresentationSessionMessage>& messages,
|
| @@ -523,7 +562,7 @@ void PresentationServiceImpl::Reset() {
|
|
|
| default_session_start_context_.reset();
|
|
|
| - if (on_session_messages_callback_.get()) {
|
| + if (on_session_messages_callback_) {
|
| on_session_messages_callback_->Run(
|
| mojo::Array<presentation::SessionMessagePtr>());
|
| on_session_messages_callback_.reset();
|
| @@ -535,6 +574,8 @@ void PresentationServiceImpl::Reset() {
|
| send_message_callback_->Run(false);
|
| send_message_callback_.reset();
|
| }
|
| +
|
| + presenter_session_callback_.reset();
|
| }
|
|
|
| void PresentationServiceImpl::OnDelegateDestroyed() {
|
|
|