1// Copyright (c) 2012 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_LOADER_RESOURCE_LOADER_DELEGATE_H_
6#define CONTENT_BROWSER_LOADER_RESOURCE_LOADER_DELEGATE_H_
7
8#include "content/common/content_export.h"
9
10namespace net {
11class AuthChallengeInfo;
12}
13
14namespace content {
15class ResourceDispatcherHostLoginDelegate;
16class ResourceLoader;
17
18class CONTENT_EXPORT ResourceLoaderDelegate {
19 public:
20  virtual ResourceDispatcherHostLoginDelegate* CreateLoginDelegate(
21      ResourceLoader* loader,
22      net::AuthChallengeInfo* auth_info) = 0;
23
24  virtual bool HandleExternalProtocol(ResourceLoader* loader,
25                                      const GURL& url) = 0;
26
27  virtual void DidStartRequest(ResourceLoader* loader) = 0;
28  virtual void DidReceiveRedirect(ResourceLoader* loader,
29                                  const GURL& new_url) = 0;
30  virtual void DidReceiveResponse(ResourceLoader* loader) = 0;
31
32  // This method informs the delegate that the loader is done, and the loader
33  // expects to be destroyed as a side-effect of this call.
34  virtual void DidFinishLoading(ResourceLoader* loader) = 0;
35
36 protected:
37  virtual ~ResourceLoaderDelegate() {}
38};
39
40}  // namespace content
41
42#endif  // CONTENT_BROWSER_LOADER_RESOURCE_LOADER_DELEGATE_H_
43