blob: a8914e1c19fba17a8b96c3aa349f6731a0974781 [file] [log] [blame]
// Copyright 2015 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 SimNetwork_h
#define SimNetwork_h
#include "public/platform/WebURLLoaderTestDelegate.h"
#include "wtf/HashMap.h"
#include "wtf/text/StringHash.h"
#include "wtf/text/WTFString.h"
namespace blink {
class SimRequest;
class WebURLLoader;
class WebURLLoaderClient;
class WebURLResponse;
// Simulates a network with precise flow control so you can make requests
// return, write data, and finish in a specific order in a unit test. One of
// these must be created before using the SimRequest to issue requests.
class SimNetwork final : public WebURLLoaderTestDelegate {
public:
SimNetwork();
~SimNetwork();
private:
friend class SimRequest;
static SimNetwork& current();
void servePendingRequests();
void addRequest(SimRequest&);
void removeRequest(SimRequest&);
// WebURLLoaderTestDelegate
void didReceiveResponse(WebURLLoaderClient*, WebURLLoader*, const WebURLResponse&) override;
void didReceiveData(WebURLLoaderClient*, WebURLLoader*, const char* data, int dataLength, int encodedDataLength) override;
void didFail(WebURLLoaderClient*, WebURLLoader*, const WebURLError&) override;
void didFinishLoading(WebURLLoaderClient*, WebURLLoader*, double finishTime, int64_t totalEncodedDataLength) override;
SimRequest* m_currentRequest;
HashMap<String, SimRequest*> m_requests;
};
} // namespace blink
#endif