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

Side by Side Diff: chrome/browser/policy/cloud/policy_header_service_factory.cc

Issue 99433004: Add a header when fetching pages under the DMServer URL. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added unit tests and fixed up from weekend component refactoring. 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 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 "chrome/browser/policy/cloud/policy_header_service_factory.h"
6
7 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/policy/browser_policy_connector.h"
9 #include "chrome/browser/policy/cloud/policy_header_service.h"
10 #include "chrome/browser/policy/cloud/user_cloud_policy_manager.h"
11 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h"
12 #include "components/browser_context_keyed_service/browser_context_dependency_ma nager.h"
13 #include "components/policy/core/common/cloud/cloud_policy_store.h"
14 #include "components/policy/core/common/cloud/device_management_service.h"
15
16 #if defined(OS_CHROMEOS)
17 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
18 #endif
19
20 namespace policy {
21
22 class PolicyHeaderServiceWrapper : public BrowserContextKeyedService {
23 public:
24 explicit PolicyHeaderServiceWrapper(scoped_ptr<PolicyHeaderService> service)
25 : policy_header_service_(service.Pass()) {}
26
27 PolicyHeaderService* policy_header_service() const {
28 return policy_header_service_.get();
29 }
30
31 virtual void Shutdown() OVERRIDE {
32 // Shutdown our core object so it can unregister any observers before the
33 // services we depend on are shutdown.
34 policy_header_service_.reset();
35 }
36
37 private:
38 scoped_ptr<PolicyHeaderService> policy_header_service_;
39 };
40
41
42 PolicyHeaderServiceFactory::PolicyHeaderServiceFactory()
43 : BrowserContextKeyedServiceFactory(
44 "PolicyHeaderServiceFactory",
45 BrowserContextDependencyManager::GetInstance()) {
46 DependsOn(UserCloudPolicyManagerFactory::GetInstance());
47 }
48
49 PolicyHeaderServiceFactory::~PolicyHeaderServiceFactory() {
50 }
51
52 // static
53 PolicyHeaderService* PolicyHeaderServiceFactory::GetForBrowserContext(
54 content::BrowserContext* context) {
55 PolicyHeaderServiceWrapper* wrapper =
56 static_cast<PolicyHeaderServiceWrapper*>(
57 GetInstance()->GetServiceForBrowserContext(context, true));
58 return wrapper->policy_header_service();
59 }
60
61 BrowserContextKeyedService*
62 PolicyHeaderServiceFactory::BuildServiceInstanceFor(
63 content::BrowserContext* context) const {
64 BrowserPolicyConnector* connector =
65 g_browser_process->browser_policy_connector();
66 DeviceManagementService* device_management_service =
67 connector->device_management_service();
68 UserCloudPolicyManager* manager =
69 UserCloudPolicyManagerFactory::GetForBrowserContext(context);
70 CloudPolicyStore* user_store = manager->core()->store();
71 CloudPolicyStore* device_store = NULL;
72 #if defined(OS_CHROMEOS)
73 device_store = connector->GetDeviceCloudPolicyManager()->core()->store();
74 #endif
75
76 scoped_ptr<PolicyHeaderService> service = make_scoped_ptr(
77 new PolicyHeaderService(
78 device_management_service->GetServerUrl(), user_store, device_store));
79 return new PolicyHeaderServiceWrapper(service.Pass());
80 }
81
82
83 // static
84 PolicyHeaderServiceFactory* PolicyHeaderServiceFactory::GetInstance() {
85 return Singleton<PolicyHeaderServiceFactory>::get();
86 }
87
88
89 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698