Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1964)

Unified Diff: chrome/browser/policy/cloud/external_policy_data_fetcher.h

Issue 109743002: Move policy code into components/policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: moar fixes Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_
« no previous file with comments | « chrome/browser/policy/cloud/enterprise_metrics.cc ('k') | chrome/browser/policy/cloud/external_policy_data_fetcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698