| 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 dd5203dce31567a3007fc996485817fb88235e61..5d20a311e0927bab74e7b86d85622fb8f613ee2b 100644
|
| --- a/content/browser/presentation/presentation_service_impl.cc
|
| +++ b/content/browser/presentation/presentation_service_impl.cc
|
| @@ -224,13 +224,6 @@ void PresentationServiceImpl::StopListeningForScreenAvailability(
|
| screen_availability_listeners_.erase(listener_it);
|
| }
|
|
|
| -void PresentationServiceImpl::ListenForDefaultSessionStart(
|
| - const DefaultSessionMojoCallback& callback) {
|
| - if (!default_session_start_context_.get())
|
| - default_session_start_context_.reset(new DefaultSessionStartContext);
|
| - default_session_start_context_->AddCallback(callback);
|
| -}
|
| -
|
| void PresentationServiceImpl::StartSession(
|
| const mojo::String& presentation_url,
|
| const NewSessionMojoCallback& callback) {
|
| @@ -368,11 +361,12 @@ void PresentationServiceImpl::SetDefaultPresentationURL(
|
| const std::string& new_default_url = url.get();
|
| if (default_presentation_url_ == new_default_url)
|
| return;
|
| - delegate_->SetDefaultPresentationUrl(
|
| - render_process_id_,
|
| - render_frame_id_,
|
| - new_default_url);
|
| +
|
| default_presentation_url_ = new_default_url;
|
| + delegate_->SetDefaultPresentationUrl(
|
| + render_process_id_, render_frame_id_, new_default_url,
|
| + base::Bind(&PresentationServiceImpl::OnDefaultPresentationStarted,
|
| + weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| void PresentationServiceImpl::SendSessionMessage(
|
| @@ -521,8 +515,6 @@ void PresentationServiceImpl::Reset() {
|
|
|
| pending_join_session_cbs_.clear();
|
|
|
| - default_session_start_context_.reset();
|
| -
|
| if (on_session_messages_callback_.get()) {
|
| on_session_messages_callback_->Run(
|
| mojo::Array<presentation::SessionMessagePtr>());
|
| @@ -544,9 +536,10 @@ void PresentationServiceImpl::OnDelegateDestroyed() {
|
| }
|
|
|
| void PresentationServiceImpl::OnDefaultPresentationStarted(
|
| - const PresentationSessionInfo& session) {
|
| - if (default_session_start_context_.get())
|
| - default_session_start_context_->set_session(session);
|
| + const PresentationSessionInfo& session_info) {
|
| + DCHECK(client_.get());
|
| + client_->OnDefaultSessionStarted(
|
| + presentation::PresentationSessionInfo::From(session_info));
|
| }
|
|
|
| PresentationServiceImpl::ScreenAvailabilityListenerImpl
|
| @@ -597,45 +590,4 @@ void PresentationServiceImpl::NewSessionMojoCallbackWrapper::Run(
|
| callback_.reset();
|
| }
|
|
|
| -PresentationServiceImpl::DefaultSessionStartContext
|
| -::DefaultSessionStartContext() {
|
| -}
|
| -
|
| -PresentationServiceImpl::DefaultSessionStartContext
|
| -::~DefaultSessionStartContext() {
|
| - Reset();
|
| -}
|
| -
|
| -void PresentationServiceImpl::DefaultSessionStartContext::AddCallback(
|
| - const DefaultSessionMojoCallback& callback) {
|
| - if (session_.get()) {
|
| - DCHECK(callbacks_.empty());
|
| - callback.Run(presentation::PresentationSessionInfo::From(*session_));
|
| - session_.reset();
|
| - } else {
|
| - callbacks_.push_back(new DefaultSessionMojoCallback(callback));
|
| - }
|
| -}
|
| -
|
| -void PresentationServiceImpl::DefaultSessionStartContext::set_session(
|
| - const PresentationSessionInfo& session) {
|
| - if (callbacks_.empty()) {
|
| - session_.reset(new PresentationSessionInfo(session));
|
| - } else {
|
| - DCHECK(!session_.get());
|
| - ScopedVector<DefaultSessionMojoCallback> callbacks;
|
| - callbacks.swap(callbacks_);
|
| - for (const auto& callback : callbacks)
|
| - callback->Run(presentation::PresentationSessionInfo::From(session));
|
| - }
|
| -}
|
| -
|
| -void PresentationServiceImpl::DefaultSessionStartContext::Reset() {
|
| - ScopedVector<DefaultSessionMojoCallback> callbacks;
|
| - callbacks.swap(callbacks_);
|
| - for (const auto& callback : callbacks)
|
| - callback->Run(presentation::PresentationSessionInfoPtr());
|
| - session_.reset();
|
| -}
|
| -
|
| } // namespace content
|
|
|