1 // Copyright 2013 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_TEST_WEBURL_LOADER_MOCK_H_ 6 #define CONTENT_TEST_WEBURL_LOADER_MOCK_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "third_party/WebKit/public/platform/WebURLLoader.h" 11 12 namespace blink { 13 class WebData; 14 struct WebURLError; 15 class WebURLLoaderClient; 16 class WebURLRequest; 17 class WebURLResponse; 18 } 19 20 class WebURLLoaderMockFactory; 21 22 // A simple class for mocking WebURLLoader. 23 // If the WebURLLoaderMockFactory it is associated with has been configured to 24 // mock the request it gets, it serves the mocked resource. Otherwise it just 25 // forwards it to the default loader. 26 class WebURLLoaderMock : public blink::WebURLLoader { 27 public: 28 // This object becomes the owner of |default_loader|. 29 WebURLLoaderMock(WebURLLoaderMockFactory* factory, 30 blink::WebURLLoader* default_loader); 31 virtual ~WebURLLoaderMock(); 32 33 // Simulates the asynchronous request being served. 34 void ServeAsynchronousRequest(const blink::WebURLResponse& response, 35 const blink::WebData& data, 36 const blink::WebURLError& error); 37 38 // Simulates the redirect being served. 39 blink::WebURLRequest ServeRedirect( 40 const blink::WebURLResponse& redirectResponse); 41 42 // WebURLLoader methods: 43 virtual void loadSynchronously(const blink::WebURLRequest& request, 44 blink::WebURLResponse& response, 45 blink::WebURLError& error, 46 blink::WebData& data); 47 virtual void loadAsynchronously(const blink::WebURLRequest& request, 48 blink::WebURLLoaderClient* client); 49 virtual void cancel(); 50 virtual void setDefersLoading(bool defer); 51 isDeferred()52 bool isDeferred() { return is_deferred_; } 53 54 private: 55 WebURLLoaderMockFactory* factory_; 56 blink::WebURLLoaderClient* client_; 57 scoped_ptr<blink::WebURLLoader> default_loader_; 58 bool using_default_loader_; 59 bool is_deferred_; 60 61 DISALLOW_COPY_AND_ASSIGN(WebURLLoaderMock); 62 }; 63 64 #endif // CONTENT_TEST_WEBURL_LOADER_MOCK_H_ 65