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

Side by Side Diff: chrome/browser/policy/asynchronous_policy_loader.h

Issue 5562002: Refactor FileBasedPolicyProvider, introduce AsynchronousPolicyProvider. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove extra provider in tests Created 10 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) 2010 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 #ifndef CHROME_BROWSER_POLICY_ASYNCHRONOUS_POLICY_LOADER_H_
6 #define CHROME_BROWSER_POLICY_ASYNCHRONOUS_POLICY_LOADER_H_
7 #pragma once
8
9 #include "base/ref_counted.h"
10 #include "base/values.h"
11 #include "chrome/browser/policy/asynchronous_policy_provider.h"
12
13 namespace policy {
14
15 class ConfigurationPolicyProvider;
16
17 class AsynchronousPolicyLoader
18 : public base::RefCountedThreadSafe<AsynchronousPolicyLoader> {
19 public:
20 AsynchronousPolicyLoader(
21 base::WeakPtr<ConfigurationPolicyProvider> provider,
Mattias Nissler (ping if slow) 2010/12/02 18:16:00 I thought the idea was to change the notification
danno 2010/12/03 17:05:38 There's plenty left to do, this work is only the f
22 AsynchronousPolicyProvider::Delegate* delegate,
23 int reload_interval_minutes);
24
25 // Triggers initial policy load and schedules fallback reload.
26 void Init();
27
28 // Gets the current dictionary value object. Ownership of the returned value
29 // is transferred to the caller.
30 DictionaryValue* GetPolicy();
31
32 // Reloads policy, sending notification of changes if necessary. Must be
33 // called on the file thread.
34 void Reload();
35
36 // Stops any pending reload tasks.
37 void Stop();
38
39 private:
40 friend class AsynchronousPolicyLoaderTest;
41 // FileBasedPolicyLoader objects should only be deleted by
Mattias Nissler (ping if slow) 2010/12/02 18:16:00 newline before comment?
danno 2010/12/03 17:05:38 Done.
42 // RefCountedThreadSafe.
43 friend class base::RefCountedThreadSafe<AsynchronousPolicyLoader>;
44 virtual ~AsynchronousPolicyLoader() {}
45
46 // Schedules a reload task to run when |delay| expires. Must be called on the
47 // file thread.
48 void ScheduleReloadTask(const base::TimeDelta& delay);
49
50 // Schedules a reload task to run after the number of minutes specified
51 // in |reload_interval_minutes_|. Must be called on the file thread.
52 void ScheduleFallbackReloadTask();
53
54 // Invoked from the reload task on the file thread.
55 void ReloadFromTask();
56
57 // Notifies the policy provider to send out a policy changed notification.
58 // Must be called on |origin_loop_|.
59 void NotifyPolicyChanged();
60
61 // The provider this loader is associated with. Access only on the thread that
62 // called the constructor. See |origin_loop_| below.
63 base::WeakPtr<ConfigurationPolicyProvider> provider_;
64
65 scoped_ptr<AsynchronousPolicyProvider::Delegate> delegate_;
66
67 // Protects |policy_|.
Mattias Nissler (ping if slow) 2010/12/02 18:16:00 Is that still necessary? I thought we decided to a
danno 2010/12/03 17:05:38 Done.
68 Lock lock_;
69
70 // The current policy definition.
71 scoped_ptr<DictionaryValue> policy_;
72
73 // The message loop on which this object was constructed and |provider_|
74 // received on. Recorded so we can call back into the non thread safe provider
75 // to fire the notification.
76 MessageLoop* origin_loop_;
77
78 // The reload task. Access only on the file thread. Holds a reference to the
79 // currently posted task, so we can cancel and repost it if necessary.
80 CancelableTask* reload_task_;
81
82 // The interval in minutes that a policy reload will be triggered as a
83 // fallback even if the delegate doesn't indicate that one is needed.
84 const int reload_interval_minutes_;
85
86 DISALLOW_COPY_AND_ASSIGN(AsynchronousPolicyLoader);
87 };
88
89 } // namespace policy
90
91 #endif // CHROME_BROWSER_POLICY_ASYNCHRONOUS_POLICY_LOADER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698