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)