blob: cb3204cde6326eb0f931c4865e4f1ab3be124aa0 [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.
#ifndef CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_DELEGATE_H_
#define CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_DELEGATE_H_
#include <string>
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/navigation_details.h"
namespace content {
struct LoadCommittedDetails;
struct LoadNotificationDetails;
struct NativeWebKeyboardEvent;
class InterstitialPage;
class InterstitialPageImpl;
class RenderViewHost;
class SiteInstance;
class WebContents;
class WebContentsDelegate;
// Interface for objects embedding a NavigationController to provide the
// functionality NavigationController needs.
// TODO(nasko): This interface should exist for short amount of time, while
// we transition navigation code from WebContents to Navigator.
class NavigationControllerDelegate {
public:
virtual ~NavigationControllerDelegate() {}
// Duplicates of WebContents methods.
virtual RenderViewHost* GetRenderViewHost() const = 0;
virtual InterstitialPage* GetInterstitialPage() const = 0;
virtual const std::string& GetContentsMimeType() const = 0;
virtual void NotifyNavigationStateChanged(unsigned changed_flags) = 0;
virtual void Stop() = 0;
virtual SiteInstance* GetSiteInstance() const = 0;
virtual SiteInstance* GetPendingSiteInstance() const = 0;
virtual int32 GetMaxPageID() = 0;
virtual int32 GetMaxPageIDForSiteInstance(SiteInstance* site_instance) = 0;
virtual bool IsLoading() const = 0;
// Methods from WebContentsImpl that NavigationControllerImpl needs to
// call.
virtual void NotifyBeforeFormRepostWarningShow() = 0;
virtual void NotifyNavigationEntryCommitted(
const LoadCommittedDetails& load_details) = 0;
virtual bool NavigateToPendingEntry(
NavigationController::ReloadType reload_type) = 0;
virtual void SetHistoryLengthAndPrune(
const SiteInstance* site_instance,
int merge_history_length,
int32 minimum_page_id) = 0;
virtual void CopyMaxPageIDsFrom(WebContents* web_contents) = 0;
virtual void UpdateMaxPageID(int32 page_id) = 0;
virtual void UpdateMaxPageIDForSiteInstance(SiteInstance* site_instance,
int32 page_id) = 0;
virtual void ActivateAndShowRepostFormWarningDialog() = 0;
// This method is needed, since we are no longer guaranteed that the
// embedder for NavigationController will be a WebContents object.
virtual WebContents* GetWebContents() = 0;
// Methods needed by InterstitialPageImpl.
virtual bool IsHidden() = 0;
virtual void RenderViewForInterstitialPageCreated(
RenderViewHost* render_view_host) = 0;
virtual void AttachInterstitialPage(
InterstitialPageImpl* interstitial_page) = 0;
virtual void DetachInterstitialPage() = 0;
virtual void SetIsLoading(RenderViewHost* render_view_host,
bool is_loading,
LoadNotificationDetails* details) = 0;
};
} // namespace content
#endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_DELEGATE_H_