navigator_delegate.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_BROWSER_FRAME_HOST_NAVIGATOR_DELEGATE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_BROWSER_FRAME_HOST_NAVIGATOR_DELEGATE_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/strings/string16.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/invalidate_type.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/navigation_controller.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/page_transition_types.h" 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ui/base/window_open_disposition.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class GURL; 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)struct FrameHostMsg_DidCommitProvisionalLoad_Params; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct FrameHostMsg_DidFailProvisionalLoadWithError_Params; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class RenderFrameHostImpl; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct LoadCommittedDetails; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct OpenURLParams; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A delegate API used by Navigator to notify its embedder of navigation 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// related events. 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CONTENT_EXPORT NavigatorDelegate { 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The RenderFrameHost started a provisional load for the frame 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // represented by |render_frame_host|. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidStartProvisionalLoad( 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderFrameHostImpl* render_frame_host, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int parent_routing_id, 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool is_main_frame, 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GURL& validated_url, 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool is_error_page, 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool is_iframe_srcdoc) {} 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // A provisional load in |render_frame_host| failed. 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void DidFailProvisionalLoadWithError( 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RenderFrameHostImpl* render_frame_host, 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params) {} 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Document load in |render_frame_host| failed. 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void DidFailLoadWithError( 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RenderFrameHostImpl* render_frame_host, 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const GURL& url, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_main_frame, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int error_code, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::string16& error_description) {} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A redirect was processed in |render_frame_host| during a provisional load. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidRedirectProvisionalLoad( 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderFrameHostImpl* render_frame_host, 54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const GURL& validated_target_url) {} 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // A navigation was committed in |render_frame_host|. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidCommitProvisionalLoad( 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderFrameHostImpl* render_frame_host, 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::string16& frame_unique_name, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_main_frame, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PageTransition transition_type) {} 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Handles post-navigation tasks in navigation AFTER the entry has been 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // committed to the NavigationController. Note that the NavigationEntry is 66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // not provided since it may be invalid/changed after being committed. The 67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // NavigationController's last committed entry is for this navigation. 68c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void DidNavigateMainFramePostCommit( 69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const LoadCommittedDetails& details, 70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {} 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DidNavigateAnyFramePostCommit( 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RenderFrameHostImpl* render_frame_host, 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const LoadCommittedDetails& details, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {} 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetMainFrameMimeType(const std::string& mime_type) {} 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool CanOverscrollContent(); 78f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notification to the Navigator embedder that navigation state has 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // changed. This method corresponds to 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // WebContents::NotifyNavigationStateChanged. 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void NotifyChangedNavigationState(InvalidateTypes changed_flags) {} 83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Notifies the Navigator embedder that it is beginning to navigate a frame. 8590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void AboutToNavigateRenderFrame( 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderFrameHostImpl* render_frame_host) {} 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Notifies the Navigator embedder that a navigation to pending 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // NavigationEntry has started in the browser process. 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void DidStartNavigationToPendingEntry( 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderFrameHostImpl* render_frame_host, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NavigationController::ReloadType reload_type) {} 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Opens a URL with the given parameters. See PageNavigator::OpenURL, which 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // this forwards to. 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RequestOpenURL(RenderFrameHostImpl* render_frame_host, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const OpenURLParams& params) {} 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namspace content 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATOR_DELEGATE_H_ 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)