1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/memory/scoped_ptr.h"
6#include "components/policy/policy_export.h"
7#include "net/url_request/static_http_user_agent_settings.h"
8#include "net/url_request/url_request_context_getter.h"
9
10#ifndef COMPONENTS_POLICY_CORE_COMMON_CLOUD_SYSTEM_POLICY_REQUEST_CONTEXT_H_
11#define COMPONENTS_POLICY_CORE_COMMON_CLOUD_SYSTEM_POLICY_REQUEST_CONTEXT_H_
12
13namespace net {
14class HttpNetworkLayer;
15}
16
17namespace policy {
18
19class POLICY_EXPORT SystemPolicyRequestContext
20    : public net::URLRequestContextGetter {
21 public:
22  SystemPolicyRequestContext(
23      scoped_refptr<net::URLRequestContextGetter> system_context_getter,
24      const std::string& user_agent);
25
26  // Overridden from net::URLRequestContextGetter:
27  virtual net::URLRequestContext* GetURLRequestContext() OVERRIDE;
28  virtual scoped_refptr<base::SingleThreadTaskRunner>
29      GetNetworkTaskRunner() const OVERRIDE;
30
31 protected:
32  virtual ~SystemPolicyRequestContext();
33
34 private:
35  scoped_refptr<net::URLRequestContextGetter> system_context_getter_;
36
37  // The lazy-initialized URLRequestContext associated with this getter.
38  scoped_ptr<net::URLRequestContext> context_;
39
40  // HttpNetworkLayer associated with |context_|.
41  scoped_ptr<net::HttpNetworkLayer> http_transaction_factory_;
42
43  net::StaticHttpUserAgentSettings http_user_agent_settings_;
44  DISALLOW_COPY_AND_ASSIGN(SystemPolicyRequestContext);
45};
46
47}  // namespace policy
48
49#endif  // COMPONENTS_POLICY_CORE_COMMON_CLOUD_SYSTEM_POLICY_REQUEST_CONTEXT_H_
50