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 12namespace blink { 13class WebData; 14struct WebURLError; 15class WebURLLoaderClient; 16class WebURLRequest; 17class WebURLResponse; 18} 19 20class 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. 26class 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 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