| Index: headless/public/util/url_fetcher.h
|
| diff --git a/headless/public/util/url_fetcher.h b/headless/public/util/url_fetcher.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..abb8dfed13d5c136b17b8e93e4bbe09f2030562d
|
| --- /dev/null
|
| +++ b/headless/public/util/url_fetcher.h
|
| @@ -0,0 +1,75 @@
|
| +// 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 HEADLESS_PUBLIC_UTIL_URL_FETCHER_H_
|
| +#define HEADLESS_PUBLIC_UTIL_URL_FETCHER_H_
|
| +
|
| +#include <stddef.h>
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "net/base/net_errors.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace net {
|
| +class HttpRequestHeaders;
|
| +class HttpResponseHeaders;
|
| +} // namespace net
|
| +
|
| +namespace headless {
|
| +
|
| +// An interface for fetching URLs. Note these are only intended to be used once.
|
| +// TODO(alexclarke): Implement a URLFetcher that can backend onto a URLRequest
|
| +// and hook this up in headless_shell under a flag.
|
| +class URLFetcher {
|
| + public:
|
| + URLFetcher() {}
|
| + virtual ~URLFetcher() {}
|
| +
|
| + // Interface for reporting the fetch result.
|
| + class ResultListener {
|
| + public:
|
| + ResultListener() {}
|
| +
|
| + // Informs the listener that the fetch failed.
|
| + virtual void OnStartError(net::Error error) = 0;
|
| +
|
| + // Informs the listener that the fetch succeeded and returns the HTTP
|
| + // headers and the body. NOTE |body| must be owned by the caller and remain
|
| + // valid until the fetcher is destroyed,
|
| + virtual void OnFetchComplete(
|
| + const GURL& final_url,
|
| + int http_response_code,
|
| + scoped_refptr<net::HttpResponseHeaders> response_headers,
|
| + const char* body,
|
| + size_t body_size) = 0;
|
| +
|
| + // Helper function which extracts the headers from |response_data| and calls
|
| + // OnFetchComplete.
|
| + void OnFetchCompleteExtractHeaders(const GURL& final_url,
|
| + int http_response_code,
|
| + const char* response_data,
|
| + size_t response_data_size);
|
| +
|
| + protected:
|
| + virtual ~ResultListener() {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(ResultListener);
|
| + };
|
| +
|
| + // Instructs the sub-class to fetch the resource.
|
| + virtual void StartFetch(const GURL& rewritten_url,
|
| + const net::HttpRequestHeaders& request_headers,
|
| + ResultListener* result_listener) = 0;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(URLFetcher);
|
| +};
|
| +
|
| +} // namespace headless
|
| +
|
| +#endif // HEADLESS_PUBLIC_UTIL_URL_FETCHER_H_
|
|
|