navigation_controller_delegate.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_DELEGATE_H_ 6#define CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_DELEGATE_H_ 7 8#include <string> 9#include "content/public/browser/navigation_controller.h" 10#include "content/public/browser/navigation_details.h" 11 12namespace content { 13 14struct LoadCommittedDetails; 15struct LoadNotificationDetails; 16struct NativeWebKeyboardEvent; 17class InterstitialPage; 18class InterstitialPageImpl; 19class RenderFrameHost; 20class RenderViewHost; 21class SiteInstance; 22class WebContents; 23class WebContentsDelegate; 24 25// Interface for objects embedding a NavigationController to provide the 26// functionality NavigationController needs. 27// TODO(nasko): This interface should exist for short amount of time, while 28// we transition navigation code from WebContents to Navigator. 29class NavigationControllerDelegate { 30 public: 31 virtual ~NavigationControllerDelegate() {} 32 33 // Duplicates of WebContents methods. 34 virtual RenderViewHost* GetRenderViewHost() const = 0; 35 virtual InterstitialPage* GetInterstitialPage() const = 0; 36 virtual const std::string& GetContentsMimeType() const = 0; 37 virtual void NotifyNavigationStateChanged(unsigned changed_flags) = 0; 38 virtual void Stop() = 0; 39 virtual SiteInstance* GetPendingSiteInstance() const = 0; 40 virtual int32 GetMaxPageID() = 0; 41 virtual int32 GetMaxPageIDForSiteInstance(SiteInstance* site_instance) = 0; 42 virtual bool IsLoading() const = 0; 43 44 // Methods from WebContentsImpl that NavigationControllerImpl needs to 45 // call. 46 virtual void NotifyBeforeFormRepostWarningShow() = 0; 47 virtual void NotifyNavigationEntryCommitted( 48 const LoadCommittedDetails& load_details) = 0; 49 virtual bool NavigateToPendingEntry( 50 NavigationController::ReloadType reload_type) = 0; 51 virtual void SetHistoryLengthAndPrune( 52 const SiteInstance* site_instance, 53 int merge_history_length, 54 int32 minimum_page_id) = 0; 55 virtual void CopyMaxPageIDsFrom(WebContents* web_contents) = 0; 56 virtual void UpdateMaxPageID(int32 page_id) = 0; 57 virtual void UpdateMaxPageIDForSiteInstance(SiteInstance* site_instance, 58 int32 page_id) = 0; 59 virtual void ActivateAndShowRepostFormWarningDialog() = 0; 60 61 // This method is needed, since we are no longer guaranteed that the 62 // embedder for NavigationController will be a WebContents object. 63 virtual WebContents* GetWebContents() = 0; 64 65 // Methods needed by InterstitialPageImpl. 66 virtual bool IsHidden() = 0; 67 virtual void RenderFrameForInterstitialPageCreated( 68 RenderFrameHost* render_frame_host) = 0; 69 virtual void AttachInterstitialPage( 70 InterstitialPageImpl* interstitial_page) = 0; 71 virtual void DetachInterstitialPage() = 0; 72 virtual void SetIsLoading(RenderViewHost* render_view_host, 73 bool is_loading, 74 LoadNotificationDetails* details) = 0; 75}; 76 77} // namespace content 78 79#endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_CONTROLLER_DELEGATE_H_ 80