blob: 5743fe8210442427b1a4357b4a75f597743d0792 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/renderer/presentation/presentation_dispatcher.h"
#include "content/public/renderer/render_frame.h"
#include "third_party/blink/public/platform/modules/presentation/web_presentation_receiver.h"
#include "third_party/blink/public/web/web_local_frame.h"
namespace content {
PresentationDispatcher::PresentationDispatcher(RenderFrame* render_frame)
: RenderFrameObserver(render_frame), receiver_(nullptr) {}
PresentationDispatcher::~PresentationDispatcher() {
}
void PresentationDispatcher::SetReceiver(
blink::WebPresentationReceiver* receiver) {
receiver_ = receiver;
DCHECK(!render_frame() || render_frame()->IsMainFrame());
// Init |receiver_| after loading document.
if (receiver_ && render_frame() && render_frame()->GetWebFrame() &&
!render_frame()->GetWebFrame()->IsLoading()) {
receiver_->Init();
}
}
void PresentationDispatcher::DidFinishDocumentLoad() {
if (receiver_)
receiver_->Init();
}
void PresentationDispatcher::OnDestruct() {
delete this;
}
void PresentationDispatcher::WidgetWillClose() {
if (receiver_)
receiver_->OnReceiverTerminated();
}
} // namespace content