diff options
Diffstat (limited to 'chromium/chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.cc')
-rw-r--r-- | chromium/chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.cc | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/chromium/chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.cc b/chromium/chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.cc new file mode 100644 index 00000000000..093f569a4e4 --- /dev/null +++ b/chromium/chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.cc @@ -0,0 +1,66 @@ +// Copyright 2019 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 "chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.h" + +#include "chrome/renderer/supervised_user/supervised_user_error_page_controller.h" +#include "content/public/renderer/render_frame.h" +#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" + +SupervisedUserErrorPageControllerDelegateImpl:: + SupervisedUserErrorPageControllerDelegateImpl( + content::RenderFrame* render_frame) + : content::RenderFrameObserver(render_frame), + content::RenderFrameObserverTracker< + SupervisedUserErrorPageControllerDelegateImpl>(render_frame) {} + +SupervisedUserErrorPageControllerDelegateImpl:: + ~SupervisedUserErrorPageControllerDelegateImpl() = default; + +void SupervisedUserErrorPageControllerDelegateImpl::PrepareForErrorPage() { + pending_error_ = true; +} + +void SupervisedUserErrorPageControllerDelegateImpl::GoBack() { + if (supervised_user_interface_) + supervised_user_interface_->GoBack(); +} + +void SupervisedUserErrorPageControllerDelegateImpl::RequestPermission( + base::OnceCallback<void(bool)> callback) { + if (supervised_user_interface_) + supervised_user_interface_->RequestPermission(std::move(callback)); +} + +void SupervisedUserErrorPageControllerDelegateImpl::Feedback() { + if (supervised_user_interface_) + supervised_user_interface_->Feedback(); +} + +void SupervisedUserErrorPageControllerDelegateImpl::OnDestruct() { + delete this; +} + +void SupervisedUserErrorPageControllerDelegateImpl::DidFinishLoad() { + if (committed_error_) { + if (!supervised_user_interface_) { + render_frame()->GetRemoteAssociatedInterfaces()->GetInterface( + &supervised_user_interface_); + } + + SupervisedUserErrorPageController::Install( + render_frame(), + weak_supervised_user_error_controller_delegate_factory_.GetWeakPtr()); + } +} + +void SupervisedUserErrorPageControllerDelegateImpl::ReadyToCommitNavigation( + blink::WebDocumentLoader* document_loader) { + // We are about to commit a new navigation in this render frame. + // Invalidate the weak pointer in previous error page controller, i.e. + // |SupervisedUserErrorPageController::delegate_|; + weak_supervised_user_error_controller_delegate_factory_.InvalidateWeakPtrs(); + committed_error_ = pending_error_; + pending_error_ = false; +} |