15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CONTENT_BROWSER_LOADER_RESOURCE_LOADER_DELEGATE_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CONTENT_BROWSER_LOADER_RESOURCE_LOADER_DELEGATE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AuthChallengeInfo;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResourceDispatcherHostLoginDelegate;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResourceLoader;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT ResourceLoaderDelegate {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ResourceDispatcherHostLoginDelegate* CreateLoginDelegate(
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ResourceLoader* loader,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      net::AuthChallengeInfo* auth_info) = 0;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HandleExternalProtocol(ResourceLoader* loader,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const GURL& url) = 0;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidStartRequest(ResourceLoader* loader) = 0;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidReceiveRedirect(ResourceLoader* loader,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  const GURL& new_url) = 0;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidReceiveResponse(ResourceLoader* loader) = 0;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This method informs the delegate that the loader is done, and the loader
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // expects to be destroyed as a side-effect of this call.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidFinishLoading(ResourceLoader* loader) = 0;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ResourceLoaderDelegate() {}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CONTENT_BROWSER_LOADER_RESOURCE_LOADER_DELEGATE_H_
43