Home | History | Annotate | Download | only in test
      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 
     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   bool* this_deleted_;
     61 
     62   DISALLOW_COPY_AND_ASSIGN(WebURLLoaderMock);
     63 };
     64 
     65 #endif  // CONTENT_TEST_WEBURL_LOADER_MOCK_H_
     66