| Index: chrome/browser/policy/cloud/external_policy_data_fetcher.h
|
| diff --git a/chrome/browser/policy/cloud/external_policy_data_fetcher.h b/chrome/browser/policy/cloud/external_policy_data_fetcher.h
|
| deleted file mode 100644
|
| index 587f3a8d9585bd90a7689d3322355d28613e9040..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/policy/cloud/external_policy_data_fetcher.h
|
| +++ /dev/null
|
| @@ -1,182 +0,0 @@
|
| -// Copyright 2013 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 CHROME_BROWSER_POLICY_CLOUD_EXTERNAL_POLICY_DATA_FETCHER_H_
|
| -#define CHROME_BROWSER_POLICY_CLOUD_EXTERNAL_POLICY_DATA_FETCHER_H_
|
| -
|
| -#include <map>
|
| -#include <set>
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/callback.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "net/url_request/url_fetcher_delegate.h"
|
| -#include "url/gurl.h"
|
| -
|
| -namespace base {
|
| -class SequencedTaskRunner;
|
| -}
|
| -
|
| -namespace net {
|
| -class URLFetcher;
|
| -class URLRequestContextGetter;
|
| -}
|
| -
|
| -namespace policy {
|
| -
|
| -class ExternalPolicyDataFetcherBackend;
|
| -
|
| -// This class handles network fetch jobs for the ExternalPolicyDataUpdater by
|
| -// forwarding them to an ExternalPolicyDataFetcherBackend running on a different
|
| -// thread. This is necessary because the ExternalPolicyDataUpdater runs on a
|
| -// background thread where network I/O is not allowed.
|
| -// The class can be instantiated on any thread but from then on, it must be
|
| -// accessed and destroyed on the background thread that the
|
| -// ExternalPolicyDataUpdater runs on only.
|
| -class ExternalPolicyDataFetcher {
|
| - public:
|
| - // The result of a fetch job.
|
| - enum Result {
|
| - // Successful fetch.
|
| - SUCCESS,
|
| - // The connection was interrupted.
|
| - CONNECTION_INTERRUPTED,
|
| - // Another network error occurred.
|
| - NETWORK_ERROR,
|
| - // Problem at the server.
|
| - SERVER_ERROR,
|
| - // Client error.
|
| - CLIENT_ERROR,
|
| - // Any other type of HTTP failure.
|
| - HTTP_ERROR,
|
| - // Received data exceeds maximum allowed size.
|
| - MAX_SIZE_EXCEEDED,
|
| - };
|
| -
|
| - // Encapsulates the metadata for a fetch job.
|
| - struct Job;
|
| -
|
| - // Callback invoked when a fetch job finishes. If the fetch was successful,
|
| - // the Result is SUCCESS and the scoped_ptr contains the retrieved data.
|
| - // Otherwise, Result indicates the type of error that occurred and the
|
| - // scoped_ptr is NULL.
|
| - typedef base::Callback<void(Result, scoped_ptr<std::string>)> FetchCallback;
|
| -
|
| - // |task_runner| represents the background thread that |this| runs on.
|
| - // |backend| is used to perform network I/O. It will be dereferenced and
|
| - // accessed via |io_task_runner| only.
|
| - ExternalPolicyDataFetcher(
|
| - scoped_refptr<base::SequencedTaskRunner> task_runner,
|
| - scoped_refptr<base::SequencedTaskRunner> io_task_runner,
|
| - const base::WeakPtr<ExternalPolicyDataFetcherBackend>& backend);
|
| - ~ExternalPolicyDataFetcher();
|
| -
|
| - // Fetch data from |url| and invoke |callback| with the result. See the
|
| - // documentation of FetchCallback and Result for more details. If a fetch
|
| - // should be retried after an error, it is the caller's responsibility to call
|
| - // StartJob() again. Returns an opaque job identifier. Ownership of the job
|
| - // identifier is retained by |this|.
|
| - Job* StartJob(const GURL& url,
|
| - int64 max_size,
|
| - const FetchCallback& callback);
|
| -
|
| - // Cancel the fetch job identified by |job|. The job is canceled silently,
|
| - // without invoking the |callback| that was passed to StartJob().
|
| - void CancelJob(Job* job);
|
| -
|
| - private:
|
| - // Callback invoked when a fetch job finishes in the |backend_|.
|
| - void OnJobFinished(const FetchCallback& callback,
|
| - Job* job,
|
| - Result result,
|
| - scoped_ptr<std::string> data);
|
| -
|
| - // Task runner representing the thread that |this| runs on.
|
| - scoped_refptr<base::SequencedTaskRunner> task_runner_;
|
| -
|
| - // Task runner representing the thread on which the |backend_| runs and
|
| - // performs network I/O.
|
| - scoped_refptr<base::SequencedTaskRunner> io_task_runner_;
|
| -
|
| - // The |backend_| is used to perform network I/O. It may be dereferenced and
|
| - // accessed via |io_task_runner_| only.
|
| - base::WeakPtr<ExternalPolicyDataFetcherBackend> backend_;
|
| -
|
| - // Set that owns all currently running Jobs.
|
| - typedef std::set<Job*> JobSet;
|
| - JobSet jobs_;
|
| -
|
| - base::WeakPtrFactory<ExternalPolicyDataFetcher> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ExternalPolicyDataFetcher);
|
| -};
|
| -
|
| -// This class handles network I/O for one or more ExternalPolicyDataFetchers. It
|
| -// can be instantiated on any thread that is allowed to reference
|
| -// URLRequestContextGetters (in Chrome, these are the UI and IO threads) and
|
| -// CreateFrontend() may be called from the same thread after instantiation. From
|
| -// then on, it must be accessed and destroyed on the thread that handles network
|
| -// I/O only (in Chrome, this is the IO thread).
|
| -class ExternalPolicyDataFetcherBackend : public net::URLFetcherDelegate {
|
| - public:
|
| - // Callback invoked when a fetch job finishes. If the fetch was successful,
|
| - // the Result is SUCCESS and the scoped_ptr contains the retrieved data.
|
| - // Otherwise, Result indicates the type of error that occurred and the
|
| - // scoped_ptr is NULL.
|
| - typedef base::Callback<void(ExternalPolicyDataFetcher::Job*,
|
| - ExternalPolicyDataFetcher::Result,
|
| - scoped_ptr<std::string>)> FetchCallback;
|
| -
|
| - // |io_task_runner_| represents the thread that handles network I/O and that
|
| - // |this| runs on. |request_context| is used to construct URLFetchers.
|
| - ExternalPolicyDataFetcherBackend(
|
| - scoped_refptr<base::SequencedTaskRunner> io_task_runner,
|
| - scoped_refptr<net::URLRequestContextGetter> request_context);
|
| - virtual ~ExternalPolicyDataFetcherBackend();
|
| -
|
| - // Create an ExternalPolicyDataFetcher that allows fetch jobs to be started
|
| - // from the thread represented by |task_runner|.
|
| - scoped_ptr<ExternalPolicyDataFetcher> CreateFrontend(
|
| - scoped_refptr<base::SequencedTaskRunner> task_runner);
|
| -
|
| - // Start a fetch job defined by |job|. The caller retains ownership of |job|
|
| - // and must ensure that it remains valid until the job ends, CancelJob() is
|
| - // called or |this| is destroyed.
|
| - void StartJob(ExternalPolicyDataFetcher::Job* job);
|
| -
|
| - // Cancel the fetch job defined by |job| and invoke |callback| to confirm.
|
| - void CancelJob(ExternalPolicyDataFetcher::Job* job,
|
| - const base::Closure& callback);
|
| -
|
| - // net::URLFetcherDelegate:
|
| - virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
|
| - virtual void OnURLFetchDownloadProgress(const net::URLFetcher* source,
|
| - int64 current,
|
| - int64 total) OVERRIDE;
|
| -
|
| - private:
|
| - scoped_refptr<base::SequencedTaskRunner> io_task_runner_;
|
| - scoped_refptr<net::URLRequestContextGetter> request_context_;
|
| -
|
| - // A monotonically increasing fetch ID. Used to identify fetches in tests.
|
| - int last_fetch_id_;
|
| -
|
| - // Map that owns the net::URLFetchers for all currently running jobs and maps
|
| - // from these to the corresponding Job.
|
| - typedef std::map<net::URLFetcher*, ExternalPolicyDataFetcher::Job*> JobMap;
|
| - JobMap job_map_;
|
| -
|
| - base::WeakPtrFactory<ExternalPolicyDataFetcherBackend> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ExternalPolicyDataFetcherBackend);
|
| -};
|
| -
|
| -
|
| -} // namespace policy
|
| -
|
| -#endif // CHROME_BROWSER_POLICY_CLOUD_EXTERNAL_POLICY_DATA_FETCHER_H_
|
|
|