OLD | NEW |
| (Empty) |
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 WEBKIT_SUPPORT_WEBURL_LOADER_MOCK_FACTORY_H_ | |
6 #define WEBKIT_SUPPORT_WEBURL_LOADER_MOCK_FACTORY_H_ | |
7 | |
8 #include <map> | |
9 | |
10 #include "base/files/file_path.h" | |
11 #include "third_party/WebKit/public/platform/WebURL.h" | |
12 #include "third_party/WebKit/public/platform/WebURLError.h" | |
13 #include "third_party/WebKit/public/platform/WebURLRequest.h" | |
14 #include "third_party/WebKit/public/platform/WebURLResponse.h" | |
15 | |
16 namespace WebKit { | |
17 class WebData; | |
18 class WebURLLoader; | |
19 } | |
20 | |
21 class WebURLLoaderMock; | |
22 | |
23 // A factory that creates WebURLLoaderMock to simulate resource loading in | |
24 // tests. | |
25 // You register files for specific URLs, the content of the file is then served | |
26 // when these URLs are loaded. | |
27 // In order to serve the asynchronous requests, you need to invoke | |
28 // ServeAsynchronousRequest. | |
29 class WebURLLoaderMockFactory { | |
30 public: | |
31 WebURLLoaderMockFactory(); | |
32 virtual ~WebURLLoaderMockFactory(); | |
33 | |
34 // Called by TestWebKitPlatformSupport to create a WebURLLoader. | |
35 // Non-mocked request are forwarded to |default_loader| which should not be | |
36 // NULL. | |
37 virtual WebKit::WebURLLoader* CreateURLLoader( | |
38 WebKit::WebURLLoader* default_loader); | |
39 | |
40 // Registers a response and the contents to be served when the specified URL | |
41 // is loaded. | |
42 void RegisterURL(const WebKit::WebURL& url, | |
43 const WebKit::WebURLResponse& response, | |
44 const WebKit::WebString& filePath); | |
45 | |
46 // Registers an error to be served when the specified URL is requested. | |
47 void RegisterErrorURL(const WebKit::WebURL& url, | |
48 const WebKit::WebURLResponse& response, | |
49 const WebKit::WebURLError& error); | |
50 | |
51 // Unregisters |url| so it will no longer be mocked. | |
52 void UnregisterURL(const WebKit::WebURL& url); | |
53 | |
54 // Unregister all URLs so no URL will be mocked anymore. | |
55 void UnregisterAllURLs(); | |
56 | |
57 // Serves all the pending asynchronous requests. | |
58 void ServeAsynchronousRequests(); | |
59 | |
60 // Returns the last request handled by |ServeAsynchronousRequests()|. | |
61 WebKit::WebURLRequest GetLastHandledAsynchronousRequest(); | |
62 | |
63 // Returns true if |url| was registered for being mocked. | |
64 bool IsMockedURL(const WebKit::WebURL& url); | |
65 | |
66 // Called by the loader to load a resource. | |
67 void LoadSynchronously(const WebKit::WebURLRequest& request, | |
68 WebKit::WebURLResponse* response, | |
69 WebKit::WebURLError* error, | |
70 WebKit::WebData* data); | |
71 void LoadAsynchronouly(const WebKit::WebURLRequest& request, | |
72 WebURLLoaderMock* loader); | |
73 | |
74 // Removes the loader from the list of pending loaders. | |
75 void CancelLoad(WebURLLoaderMock* loader); | |
76 | |
77 private: | |
78 struct ResponseInfo { | |
79 WebKit::WebURLResponse response; | |
80 base::FilePath file_path; | |
81 }; | |
82 | |
83 | |
84 // Loads the specified request and populates the response, error and data | |
85 // accordingly. | |
86 void LoadRequest(const WebKit::WebURLRequest& request, | |
87 WebKit::WebURLResponse* response, | |
88 WebKit::WebURLError* error, | |
89 WebKit::WebData* data); | |
90 | |
91 // Checks if the loader is pending. Otherwise, it may have been deleted. | |
92 bool IsPending(WebURLLoaderMock* loader); | |
93 | |
94 // Reads |m_filePath| and puts its content in |data|. | |
95 // Returns true if it successfully read the file. | |
96 static bool ReadFile(const base::FilePath& file_path, WebKit::WebData* data); | |
97 | |
98 // The loaders that have not being served data yet. | |
99 typedef std::map<WebURLLoaderMock*, WebKit::WebURLRequest> LoaderToRequestMap; | |
100 LoaderToRequestMap pending_loaders_; | |
101 | |
102 typedef std::map<GURL, WebKit::WebURLError> URLToErrorMap; | |
103 URLToErrorMap url_to_error_info_; | |
104 | |
105 // Table of the registered URLs and the responses that they should receive. | |
106 typedef std::map<GURL, ResponseInfo> URLToResponseMap; | |
107 URLToResponseMap url_to_reponse_info_; | |
108 | |
109 WebKit::WebURLRequest last_handled_asynchronous_request_; | |
110 | |
111 DISALLOW_COPY_AND_ASSIGN(WebURLLoaderMockFactory); | |
112 }; | |
113 | |
114 #endif // WEBKIT_SUPPORT_WEBURL_LOADER_MOCK_FACTORY_H_ | |
115 | |
OLD | NEW |