| Index: content/browser/loader/mock_resource_loader.h
|
| diff --git a/content/browser/loader/mock_resource_loader.h b/content/browser/loader/mock_resource_loader.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f23a06b955506becbd3cb53fcbb56444988d596b
|
| --- /dev/null
|
| +++ b/content/browser/loader/mock_resource_loader.h
|
| @@ -0,0 +1,85 @@
|
| +// Copyright 2016 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_BROWSER_LOADER_MOCK_RESOURCE_LOADER_H_
|
| +#define CONTENT_BROWSER_LOADER_MOCK_RESOURCE_LOADER_H_
|
| +
|
| +#include <memory>
|
| +#include <string>
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "content/browser/loader/resource_controller.h"
|
| +#include "net/base/net_errors.h"
|
| +
|
| +class GURL;
|
| +
|
| +namespace net {
|
| +struct RedirectInfo;
|
| +class URLRequestStatus;
|
| +}
|
| +
|
| +namespace content {
|
| +class ResourceHandler;
|
| +struct ResourceResponse;
|
| +
|
| +// Class that takes the place of the ResourceLoader for tests. It simplifies
|
| +// testing ResourceHandlers by managing callbacks and performing basic sanity
|
| +// checks. The test fixture is responsible for advancing states.
|
| +class MockResourceLoader : public ResourceController {
|
| + public:
|
| + explicit MockResourceLoader(ResourceHandler* resource_handler);
|
| + ~MockResourceLoader() override;
|
| +
|
| + // Idle means the ResourceHandler is waiting for the next call from the
|
| + // TestFixture/ResourceLoader, CALLBACK_PENDING means that the ResourceHandler
|
| + // will resume the request at some future point to resume the request, and
|
| + // CANCELED means the ResourceHandler cancelled the request.
|
| + enum class Status {
|
| + // The MockLoader is waiting for more data from hte test fixture.
|
| + IDLE,
|
| + // The MockLoader is currently in the middle of a call to a handler. Will
|
| + // switch to CALLBACK_PENDING if the handler defers handling the request.
|
| + CALLING_HANDLER,
|
| + // The MockLoader is waiting for a callback from the ResourceHandler.
|
| + CALLBACK_PENDING,
|
| + // The request was cancelled.
|
| + CANCELED,
|
| + };
|
| +
|
| + // These all run the corresponding methods on ResourceHandler, along with
|
| + // basic sanity checks for the behavior of the handler. Each check returns the
|
| + // current status of the ResourceLoader.
|
| + Status OnWillStart(const GURL& url);
|
| + Status OnRequestRedirected(const net::RedirectInfo& redirect_info,
|
| + scoped_refptr<ResourceResponse> response);
|
| + Status OnResponseStarted(scoped_refptr<ResourceResponse> response);
|
| + Status OnWillRead(int min_size);
|
| + Status OnReadCompleted(int bytes_read);
|
| + Status OnResponseCompleted(const net::URLRequestStatus& status);
|
| +
|
| + Status status() const { return status_; }
|
| +
|
| + // Network error passed to the first CancelWithError() / Cancel() call, which
|
| + // is the one the real code uses in the case of multiple cancels.
|
| + int error_code() const { return error_code_; }
|
| +
|
| + private:
|
| + // ResourceController implementation.
|
| + void Cancel() override;
|
| + void CancelAndIgnore() override;
|
| + void CancelWithError(int error_code) override;
|
| + void Resume() override;
|
| +
|
| + ResourceHandler* const resource_handler_;
|
| +
|
| + Status status_ = Status::IDLE;
|
| + int error_code_ = net::OK;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MockResourceLoader);
|
| +};
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_BROWSER_LOADER_TEST_RESOURCE_HANDLER_WRAPPER_H_
|
|
|