blob: 7793a6e48e0fd71160eba3042878d73412d6a9bc [file] [log] [blame]
// Copyright 2013 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/frame_host/interstitial_page_navigator_impl.h"
#include "content/browser/frame_host/interstitial_page_impl.h"
#include "content/browser/frame_host/navigation_controller_impl.h"
#include "content/browser/frame_host/navigator_delegate.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
namespace content {
InterstitialPageNavigatorImpl::InterstitialPageNavigatorImpl(
InterstitialPageImpl* interstitial,
NavigationControllerImpl* navigation_controller)
: interstitial_(interstitial),
controller_(navigation_controller) {}
InterstitialPageNavigatorImpl::~InterstitialPageNavigatorImpl() {}
NavigatorDelegate* InterstitialPageNavigatorImpl::GetDelegate() {
return interstitial_;
}
NavigationController* InterstitialPageNavigatorImpl::GetController() {
return controller_;
}
void InterstitialPageNavigatorImpl::DidStartProvisionalLoad(
RenderFrameHostImpl* render_frame_host,
const GURL& url,
const std::vector<GURL>& redirect_chain,
const base::TimeTicks& navigation_start) {
// The interstitial page should only navigate once.
DCHECK(!render_frame_host->navigation_handle());
render_frame_host->SetNavigationHandle(
NavigationHandleImpl::Create(url, redirect_chain,
render_frame_host->frame_tree_node(),
false, // is_renderer_initiated
false, // is_synchronous
navigation_start,
0, // pending_nav_entry_id
false) // started_in_context_menu
);
}
void InterstitialPageNavigatorImpl::DidNavigate(
RenderFrameHostImpl* render_frame_host,
const FrameHostMsg_DidCommitProvisionalLoad_Params& input_params,
std::unique_ptr<NavigationHandleImpl> navigation_handle) {
navigation_handle->DidCommitNavigation(
input_params, true, false, GURL(), NAVIGATION_TYPE_NEW_PAGE,
render_frame_host);
navigation_handle.reset();
// TODO(nasko): Move implementation here, but for the time being call out
// to the interstitial page code.
interstitial_->DidNavigate(render_frame_host->render_view_host(),
input_params);
}
} // namespace content