| Index: Source/web/tests/sim/SimNetwork.cpp
|
| diff --git a/Source/web/tests/sim/SimNetwork.cpp b/Source/web/tests/sim/SimNetwork.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dbf3324ec1926f1068fe55af0eaf03e435567af5
|
| --- /dev/null
|
| +++ b/Source/web/tests/sim/SimNetwork.cpp
|
| @@ -0,0 +1,92 @@
|
| +// 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.
|
| +
|
| +#include "config.h"
|
| +#include "web/tests/sim/SimNetwork.h"
|
| +
|
| +#include "public/platform/Platform.h"
|
| +#include "public/platform/WebURLError.h"
|
| +#include "public/platform/WebURLLoader.h"
|
| +#include "public/platform/WebURLLoaderClient.h"
|
| +#include "public/platform/WebURLResponse.h"
|
| +#include "public/platform/WebUnitTestSupport.h"
|
| +#include "web/tests/sim/SimRequest.h"
|
| +
|
| +namespace blink {
|
| +
|
| +static SimNetwork* s_network = nullptr;
|
| +
|
| +SimNetwork::SimNetwork()
|
| + : m_currentRequest(nullptr)
|
| +{
|
| + Platform::current()->unitTestSupport()->setLoaderDelegate(this);
|
| + ASSERT(!s_network);
|
| + s_network = this;
|
| +}
|
| +
|
| +SimNetwork::~SimNetwork()
|
| +{
|
| + Platform::current()->unitTestSupport()->setLoaderDelegate(nullptr);
|
| + Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
|
| + s_network = nullptr;
|
| +}
|
| +
|
| +SimNetwork& SimNetwork::current()
|
| +{
|
| + ASSERT(s_network);
|
| + return *s_network;
|
| +}
|
| +
|
| +void SimNetwork::servePendingRequests()
|
| +{
|
| + Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
|
| +}
|
| +
|
| +void SimNetwork::didReceiveResponse(WebURLLoaderClient* client, WebURLLoader* loader, const WebURLResponse& response)
|
| +{
|
| + auto it = m_requests.find(response.url().string());
|
| + if (it == m_requests.end()) {
|
| + client->didReceiveResponse(loader, response);
|
| + return;
|
| + }
|
| + ASSERT(it->value);
|
| + m_currentRequest = it->value;
|
| + m_currentRequest->didReceiveResponse(client, loader, response);
|
| +}
|
| +
|
| +void SimNetwork::didReceiveData(WebURLLoaderClient* client, WebURLLoader* loader, const char* data, int dataLength, int encodedDataLength)
|
| +{
|
| + if (!m_currentRequest)
|
| + client->didReceiveData(loader, data, dataLength, encodedDataLength);
|
| +}
|
| +
|
| +void SimNetwork::didFail(WebURLLoaderClient* client, WebURLLoader* loader, const WebURLError& error)
|
| +{
|
| + if (!m_currentRequest) {
|
| + client->didFail(loader, error);
|
| + return;
|
| + }
|
| + m_currentRequest->didFail(error);
|
| +}
|
| +
|
| +void SimNetwork::didFinishLoading(WebURLLoaderClient* client, WebURLLoader* loader, double finishTime, int64_t totalEncodedDataLength)
|
| +{
|
| + if (!m_currentRequest) {
|
| + client->didFinishLoading(loader, finishTime, totalEncodedDataLength);
|
| + return;
|
| + }
|
| + m_currentRequest = nullptr;
|
| +}
|
| +
|
| +void SimNetwork::addRequest(SimRequest& request)
|
| +{
|
| + m_requests.add(request.url(), &request);
|
| +}
|
| +
|
| +void SimNetwork::removeRequest(SimRequest& request)
|
| +{
|
| + m_requests.remove(request.url());
|
| +}
|
| +
|
| +} // namespace blink
|
|
|