| Index: content/browser/devtools/page_navigation_throttle.cc
|
| diff --git a/content/browser/devtools/page_navigation_throttle.cc b/content/browser/devtools/page_navigation_throttle.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cbc6018b9641009e4359458335d3ba5caabf5fda
|
| --- /dev/null
|
| +++ b/content/browser/devtools/page_navigation_throttle.cc
|
| @@ -0,0 +1,73 @@
|
| +// Copyright 2016 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/browser/devtools/page_navigation_throttle.h"
|
| +
|
| +#include "base/strings/stringprintf.h"
|
| +#include "content/browser/devtools/protocol/page_handler.h"
|
| +#include "content/public/browser/navigation_handle.h"
|
| +#include "content/public/browser/render_process_host.h"
|
| +#include "content/public/browser/web_contents.h"
|
| +
|
| +namespace content {
|
| +namespace devtools {
|
| +
|
| +PageNavigationThrottle::PageNavigationThrottle(
|
| + base::WeakPtr<page::PageHandler> page_handler,
|
| + int navigation_id,
|
| + content::NavigationHandle* navigation_handle)
|
| + : content::NavigationThrottle(navigation_handle),
|
| + navigation_id_(navigation_id),
|
| + page_handler_(page_handler),
|
| + navigation_deferred_(false) {}
|
| +
|
| +PageNavigationThrottle::~PageNavigationThrottle() {
|
| + if (page_handler_)
|
| + page_handler_->OnPageNavigationThrottleDisposed(navigation_id_);
|
| +}
|
| +
|
| +NavigationThrottle::ThrottleCheckResult
|
| +PageNavigationThrottle::WillStartRequest() {
|
| + if (!page_handler_)
|
| + return ThrottleCheckResult::PROCEED;
|
| + navigation_deferred_ = true;
|
| + page_handler_->NavigationRequested(this);
|
| + return ThrottleCheckResult::DEFER;
|
| +}
|
| +
|
| +NavigationThrottle::ThrottleCheckResult
|
| +PageNavigationThrottle::WillRedirectRequest() {
|
| + if (!page_handler_)
|
| + return ThrottleCheckResult::PROCEED;
|
| + navigation_deferred_ = true;
|
| + page_handler_->NavigationRequested(this);
|
| + return ThrottleCheckResult::DEFER;
|
| +}
|
| +
|
| +void PageNavigationThrottle::AlwaysProceed() {
|
| + // Makes WillStartRequest and WillRedirectRequest always return
|
| + // ThrottleCheckResult::PROCEED.
|
| + page_handler_.reset();
|
| +
|
| + if (navigation_deferred_)
|
| + Resume();
|
| +}
|
| +
|
| +void PageNavigationThrottle::Resume() {
|
| + if (!navigation_deferred_)
|
| + return;
|
| + navigation_handle()->Resume();
|
| + navigation_deferred_ = false;
|
| +}
|
| +
|
| +void PageNavigationThrottle::CancelDeferredNavigation(
|
| + NavigationThrottle::ThrottleCheckResult result) {
|
| + if (!navigation_deferred_)
|
| + return;
|
| + navigation_handle()->CancelDeferredNavigation(result);
|
| + navigation_deferred_ = false;
|
| +}
|
| +
|
| +} // namespace devtools
|
| +} // namespace content
|
|
|