OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 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 #include "webkit/support/weburl_loader_mock.h" | |
6 | |
7 #include "base/logging.h" | |
8 #include "third_party/WebKit/public/platform/WebData.h" | |
9 #include "third_party/WebKit/public/platform/WebURLError.h" | |
10 #include "third_party/WebKit/public/platform/WebURLLoaderClient.h" | |
11 #include "webkit/support/weburl_loader_mock_factory.h" | |
12 | |
13 WebURLLoaderMock::WebURLLoaderMock(WebURLLoaderMockFactory* factory, | |
14 WebKit::WebURLLoader* default_loader) | |
15 : factory_(factory), | |
16 client_(NULL), | |
17 default_loader_(default_loader), | |
18 using_default_loader_(false), | |
19 is_deferred_(false) { | |
20 } | |
21 | |
22 WebURLLoaderMock::~WebURLLoaderMock() { | |
23 } | |
24 | |
25 void WebURLLoaderMock::ServeAsynchronousRequest( | |
26 const WebKit::WebURLResponse& response, | |
27 const WebKit::WebData& data, | |
28 const WebKit::WebURLError& error) { | |
29 DCHECK(!using_default_loader_); | |
30 if (!client_) | |
31 return; | |
32 | |
33 client_->didReceiveResponse(this, response); | |
34 | |
35 if (error.reason) { | |
36 client_->didFail(this, error); | |
37 return; | |
38 } | |
39 client_->didReceiveData(this, data.data(), data.size(), data.size()); | |
40 client_->didFinishLoading(this, 0); | |
41 } | |
42 | |
43 WebKit::WebURLRequest WebURLLoaderMock::ServeRedirect( | |
44 const WebKit::WebURLResponse& redirectResponse) { | |
45 WebKit::WebURLRequest newRequest; | |
46 newRequest.initialize(); | |
47 GURL redirectURL(redirectResponse.httpHeaderField("Location")); | |
48 newRequest.setURL(redirectURL); | |
49 client_->willSendRequest(this, newRequest, redirectResponse); | |
50 return newRequest; | |
51 } | |
52 | |
53 void WebURLLoaderMock::loadSynchronously(const WebKit::WebURLRequest& request, | |
54 WebKit::WebURLResponse& response, | |
55 WebKit::WebURLError& error, | |
56 WebKit::WebData& data) { | |
57 if (factory_->IsMockedURL(request.url())) { | |
58 factory_->LoadSynchronously(request, &response, &error, &data); | |
59 return; | |
60 } | |
61 DCHECK(static_cast<const GURL&>(request.url()).SchemeIs("data")) | |
62 << "loadSynchronously shouldn't be falling back: " | |
63 << request.url().spec().data(); | |
64 using_default_loader_ = true; | |
65 default_loader_->loadSynchronously(request, response, error, data); | |
66 } | |
67 | |
68 void WebURLLoaderMock::loadAsynchronously(const WebKit::WebURLRequest& request, | |
69 WebKit::WebURLLoaderClient* client) { | |
70 if (factory_->IsMockedURL(request.url())) { | |
71 client_ = client; | |
72 factory_->LoadAsynchronouly(request, this); | |
73 return; | |
74 } | |
75 DCHECK(static_cast<const GURL&>(request.url()).SchemeIs("data")) | |
76 << "loadAsynchronously shouldn't be falling back: " | |
77 << request.url().spec().data(); | |
78 using_default_loader_ = true; | |
79 default_loader_->loadAsynchronously(request, client); | |
80 } | |
81 | |
82 void WebURLLoaderMock::cancel() { | |
83 if (using_default_loader_) { | |
84 default_loader_->cancel(); | |
85 return; | |
86 } | |
87 client_ = NULL; | |
88 factory_->CancelLoad(this); | |
89 } | |
90 | |
91 void WebURLLoaderMock::setDefersLoading(bool deferred) { | |
92 is_deferred_ = deferred; | |
93 if (using_default_loader_) { | |
94 default_loader_->setDefersLoading(deferred); | |
95 return; | |
96 } | |
97 NOTIMPLEMENTED(); | |
98 } | |
OLD | NEW |