Upstream version 10.38.222.0
[platform/framework/web/crosswalk.git] / src / content / test / net / url_request_prepackaged_interceptor.h
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 CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_UPDATER_INTERCEPTOR_H_
6 #define CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_UPDATER_INTERCEPTOR_H_
7
8 #include <string>
9
10 #include "base/basictypes.h"
11
12 class GURL;
13
14 namespace base {
15 class FilePath;
16 }
17
18 namespace content {
19
20 // Intercepts HTTP requests and gives pre-defined responses to specified URLs.
21 // The pre-defined responses are loaded from files on disk.  The interception
22 // occurs while the URLRequestPrepackagedInterceptor is alive.
23 class URLRequestPrepackagedInterceptor {
24  public:
25   // Registers an interceptor for urls using |scheme| and |hostname|. Urls
26   // passed to "SetResponse" are required to use |scheme| and |hostname|.
27   URLRequestPrepackagedInterceptor(const std::string& scheme,
28                                    const std::string& hostname);
29   virtual ~URLRequestPrepackagedInterceptor();
30
31   // When requests for |url| arrive, respond with the contents of |path|. The
32   // hostname and scheme of |url| must match the corresponding parameters
33   // passed as constructor arguments.
34   void SetResponse(const GURL& url, const base::FilePath& path);
35
36   // Identical to SetResponse except that query parameters are ignored on
37   // incoming URLs when comparing against |url|.
38   void SetResponseIgnoreQuery(const GURL& url, const base::FilePath& path);
39
40   // Returns how many requests have been issued that have a stored reply.
41   int GetHitCount();
42
43  private:
44   class Delegate;
45
46   const std::string scheme_;
47   const std::string hostname_;
48
49   // After creation, |delegate_| lives on the IO thread, and a task to delete
50   // it is posted from ~URLRequestPrepackagedInterceptor().
51   Delegate* delegate_;
52
53   DISALLOW_COPY_AND_ASSIGN(URLRequestPrepackagedInterceptor);
54 };
55
56 // Specialization of URLRequestPrepackagedInterceptor where scheme is "http" and
57 // hostname is "localhost".
58 class URLLocalHostRequestPrepackagedInterceptor
59     : public URLRequestPrepackagedInterceptor {
60  public:
61   URLLocalHostRequestPrepackagedInterceptor();
62
63  private:
64   DISALLOW_COPY_AND_ASSIGN(URLLocalHostRequestPrepackagedInterceptor);
65 };
66
67 }  // namespace content
68
69 #endif  // CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_UPDATER_INTERCEPTOR_H_