// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_TEST_WEBURL_LOADER_MOCK_H_ #define CONTENT_TEST_WEBURL_LOADER_MOCK_H_ #include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "third_party/WebKit/public/platform/WebURLLoader.h" namespace blink { class WebData; struct WebURLError; class WebURLLoaderClient; class WebURLLoaderTestDelegate; class WebURLRequest; class WebURLResponse; } class WebURLLoaderMockFactory; // A simple class for mocking WebURLLoader. // If the WebURLLoaderMockFactory it is associated with has been configured to // mock the request it gets, it serves the mocked resource. Otherwise it just // forwards it to the default loader. class WebURLLoaderMock : public blink::WebURLLoader { public: // This object becomes the owner of |default_loader|. WebURLLoaderMock(WebURLLoaderMockFactory* factory, blink::WebURLLoader* default_loader); ~WebURLLoaderMock() override; // Simulates the asynchronous request being served. void ServeAsynchronousRequest(blink::WebURLLoaderTestDelegate* delegate, const blink::WebURLResponse& response, const blink::WebData& data, const blink::WebURLError& error); // Simulates the redirect being served. blink::WebURLRequest ServeRedirect( const blink::WebURLRequest& request, const blink::WebURLResponse& redirectResponse); // WebURLLoader methods: void loadSynchronously(const blink::WebURLRequest& request, blink::WebURLResponse& response, blink::WebURLError& error, blink::WebData& data) override; void loadAsynchronously(const blink::WebURLRequest& request, blink::WebURLLoaderClient* client) override; void cancel() override; void setDefersLoading(bool defer) override; bool isDeferred() { return is_deferred_; } void setLoadingTaskRunner(blink::WebTaskRunner*) override; private: WebURLLoaderMockFactory* factory_; blink::WebURLLoaderClient* client_; scoped_ptr default_loader_; bool using_default_loader_; bool is_deferred_; base::WeakPtrFactory weak_factory_; DISALLOW_COPY_AND_ASSIGN(WebURLLoaderMock); }; #endif // CONTENT_TEST_WEBURL_LOADER_MOCK_H_