Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(516)

Side by Side Diff: content/public/browser/navigation_handle.h

Issue 2696493003: Introduce SubframeNavigationFilteringThrottle (Closed)
Patch Set: fix use after stack return, make code nicer Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_PUBLIC_BROWSER_NAVIGATION_HANDLE_H_ 5 #ifndef CONTENT_PUBLIC_BROWSER_NAVIGATION_HANDLE_H_
6 #define CONTENT_PUBLIC_BROWSER_NAVIGATION_HANDLE_H_ 6 #define CONTENT_PUBLIC_BROWSER_NAVIGATION_HANDLE_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 10
(...skipping 21 matching lines...) Expand all
32 class WebContents; 32 class WebContents;
33 33
34 // A NavigationHandle tracks information related to a single navigation. 34 // A NavigationHandle tracks information related to a single navigation.
35 // NavigationHandles are provided to several WebContentsObserver methods to 35 // NavigationHandles are provided to several WebContentsObserver methods to
36 // allow observers to track specific navigations. Observers should clear any 36 // allow observers to track specific navigations. Observers should clear any
37 // references to a NavigationHandle at the time of 37 // references to a NavigationHandle at the time of
38 // WebContentsObserver::DidFinishNavigation, just before the handle is 38 // WebContentsObserver::DidFinishNavigation, just before the handle is
39 // destroyed. 39 // destroyed.
40 class CONTENT_EXPORT NavigationHandle { 40 class CONTENT_EXPORT NavigationHandle {
41 public: 41 public:
42 typedef base::Callback<void(NavigationThrottle::ThrottleCheckResult)>
43 ThrottleChecksFinishedCallback;
44
42 virtual ~NavigationHandle() {} 45 virtual ~NavigationHandle() {}
43 46
44 // Parameters available at navigation start time ----------------------------- 47 // Parameters available at navigation start time -----------------------------
45 // 48 //
46 // These parameters are always available during the navigation. Note that 49 // These parameters are always available during the navigation. Note that
47 // some may change during navigation (e.g. due to server redirects). 50 // some may change during navigation (e.g. due to server redirects).
48 51
49 // The URL the frame is navigating to. This may change during the navigation 52 // The URL the frame is navigating to. This may change during the navigation
50 // when encountering a server redirect. 53 // when encountering a server redirect.
51 // This URL may not be the same as the virtual URL returned from 54 // This URL may not be the same as the virtual URL returned from
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 // Registers a NavigationThrottle for tests. The throttle can 246 // Registers a NavigationThrottle for tests. The throttle can
244 // modify the request, pause the request or cancel the request. This will 247 // modify the request, pause the request or cancel the request. This will
245 // take ownership of the NavigationThrottle. 248 // take ownership of the NavigationThrottle.
246 // Note: in non-test cases, NavigationThrottles should not be added directly 249 // Note: in non-test cases, NavigationThrottles should not be added directly
247 // but returned by the implementation of 250 // but returned by the implementation of
248 // ContentBrowserClient::CreateThrottlesForNavigation. This ensures proper 251 // ContentBrowserClient::CreateThrottlesForNavigation. This ensures proper
249 // ordering of the throttles. 252 // ordering of the throttles.
250 virtual void RegisterThrottleForTesting( 253 virtual void RegisterThrottleForTesting(
251 std::unique_ptr<NavigationThrottle> navigation_throttle) = 0; 254 std::unique_ptr<NavigationThrottle> navigation_throttle) = 0;
252 255
256 // The Call*ForTesting methods return the synchronous throttle check result
257 // and DEFER if the checks are completing asynchronously. To observe async
258 // checks, use the optionally null |complete_callback|, which will be called
259 // whenever the checks are completely finished.
260
253 // Simulates the network request starting. 261 // Simulates the network request starting.
254 virtual NavigationThrottle::ThrottleCheckResult 262 virtual NavigationThrottle::ThrottleCheckResult
255 CallWillStartRequestForTesting(bool is_post, 263 CallWillStartRequestForTesting(
256 const Referrer& sanitized_referrer, 264 bool is_post,
257 bool has_user_gesture, 265 const Referrer& sanitized_referrer,
258 ui::PageTransition transition, 266 bool has_user_gesture,
259 bool is_external_protocol) = 0; 267 ui::PageTransition transition,
268 bool is_external_protocol,
269 const ThrottleChecksFinishedCallback& complete_callback) = 0;
260 270
261 // Simulates the network request being redirected. 271 // Simulates the network request being redirected.
262 virtual NavigationThrottle::ThrottleCheckResult 272 virtual NavigationThrottle::ThrottleCheckResult
263 CallWillRedirectRequestForTesting(const GURL& new_url, 273 CallWillRedirectRequestForTesting(
264 bool new_method_is_post, 274 const GURL& new_url,
265 const GURL& new_referrer_url, 275 bool new_method_is_post,
266 bool new_is_external_protocol) = 0; 276 const GURL& new_referrer_url,
277 bool new_is_external_protocol,
278 const ThrottleChecksFinishedCallback& complete_callback) = 0;
267 279
268 // Simulates the reception of the network response. 280 // Simulates the reception of the network response.
269 virtual NavigationThrottle::ThrottleCheckResult 281 virtual NavigationThrottle::ThrottleCheckResult
270 CallWillProcessResponseForTesting( 282 CallWillProcessResponseForTesting(
271 RenderFrameHost* render_frame_host, 283 RenderFrameHost* render_frame_host,
272 const std::string& raw_response_headers) = 0; 284 const std::string& raw_response_headers,
285 const ThrottleChecksFinishedCallback& complete_callback) = 0;
273 286
274 // Simulates the navigation being committed. 287 // Simulates the navigation being committed.
275 virtual void CallDidCommitNavigationForTesting(const GURL& url) = 0; 288 virtual void CallDidCommitNavigationForTesting(const GURL& url) = 0;
276 289
277 // The NavigationData that the embedder returned from 290 // The NavigationData that the embedder returned from
278 // ResourceDispatcherHostDelegate::GetNavigationData during commit. This will 291 // ResourceDispatcherHostDelegate::GetNavigationData during commit. This will
279 // be a clone of the NavigationData. 292 // be a clone of the NavigationData.
280 virtual NavigationData* GetNavigationData() = 0; 293 virtual NavigationData* GetNavigationData() = 0;
281 }; 294 };
282 295
283 } // namespace content 296 } // namespace content
284 297
285 #endif // CONTENT_PUBLIC_BROWSER_NAVIGATION_HANDLE_H_ 298 #endif // CONTENT_PUBLIC_BROWSER_NAVIGATION_HANDLE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698