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

Side by Side Diff: chrome/browser/policy/cloud/cloud_policy_invalidator.h

Issue 460573005: Pass highest handled invalidation version between invalidators (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code and tests done. Ready for review. Created 6 years, 4 months 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
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_POLICY_CLOUD_CLOUD_POLICY_INVALIDATOR_H_ 5 #ifndef CHROME_BROWSER_POLICY_CLOUD_CLOUD_POLICY_INVALIDATOR_H_
6 #define CHROME_BROWSER_POLICY_CLOUD_CLOUD_POLICY_INVALIDATOR_H_ 6 #define CHROME_BROWSER_POLICY_CLOUD_CLOUD_POLICY_INVALIDATOR_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 // The max tolerated discrepancy, in seconds, between policy timestamps and 57 // The max tolerated discrepancy, in seconds, between policy timestamps and
58 // invalidation timestamps when determining if an invalidation is expired. 58 // invalidation timestamps when determining if an invalidation is expired.
59 static const int kMaxInvalidationTimeDelta; 59 static const int kMaxInvalidationTimeDelta;
60 60
61 // |type| indicates the policy type that this invalidator is responsible for. 61 // |type| indicates the policy type that this invalidator is responsible for.
62 // |core| is the cloud policy core which connects the various policy objects. 62 // |core| is the cloud policy core which connects the various policy objects.
63 // It must remain valid until Shutdown is called. 63 // It must remain valid until Shutdown is called.
64 // |task_runner| is used for scheduling delayed tasks. It must post tasks to 64 // |task_runner| is used for scheduling delayed tasks. It must post tasks to
65 // the main policy thread. 65 // the main policy thread.
66 // |clock| is used to get the current time. 66 // |clock| is used to get the current time.
67 // |highest_handled_invalidation_version| is the highest invalidation version
68 // that was handled already before this invalidator was created.
67 CloudPolicyInvalidator( 69 CloudPolicyInvalidator(
68 enterprise_management::DeviceRegisterRequest::Type type, 70 enterprise_management::DeviceRegisterRequest::Type type,
69 CloudPolicyCore* core, 71 CloudPolicyCore* core,
70 const scoped_refptr<base::SequencedTaskRunner>& task_runner, 72 const scoped_refptr<base::SequencedTaskRunner>& task_runner,
71 scoped_ptr<base::Clock> clock); 73 scoped_ptr<base::Clock> clock,
74 int64 highest_handled_invalidation_version);
72 virtual ~CloudPolicyInvalidator(); 75 virtual ~CloudPolicyInvalidator();
73 76
74 // Initializes the invalidator. No invalidations will be generated before this 77 // Initializes the invalidator. No invalidations will be generated before this
75 // method is called. This method must only be called once. 78 // method is called. This method must only be called once.
76 // |invalidation_service| is the invalidation service to use and must remain 79 // |invalidation_service| is the invalidation service to use and must remain
77 // valid until Shutdown is called. 80 // valid until Shutdown is called.
78 void Initialize(invalidation::InvalidationService* invalidation_service); 81 void Initialize(invalidation::InvalidationService* invalidation_service);
79 82
80 // Shuts down and disables invalidations. It must be called before the object 83 // Shuts down and disables invalidations. It must be called before the object
81 // is destroyed. 84 // is destroyed.
82 void Shutdown(); 85 void Shutdown();
83 86
84 // Whether the invalidator currently has the ability to receive invalidations. 87 // Whether the invalidator currently has the ability to receive invalidations.
85 bool invalidations_enabled() { 88 bool invalidations_enabled() {
86 return invalidations_enabled_; 89 return invalidations_enabled_;
87 } 90 }
88 91
92 // The highest invalidation version that was handled already.
93 int64 highest_handled_invalidation_version() const {
94 return highest_handled_invalidation_version_;
95 }
96
89 // syncer::InvalidationHandler: 97 // syncer::InvalidationHandler:
90 virtual void OnInvalidatorStateChange( 98 virtual void OnInvalidatorStateChange(
91 syncer::InvalidatorState state) OVERRIDE; 99 syncer::InvalidatorState state) OVERRIDE;
92 virtual void OnIncomingInvalidation( 100 virtual void OnIncomingInvalidation(
93 const syncer::ObjectIdInvalidationMap& invalidation_map) OVERRIDE; 101 const syncer::ObjectIdInvalidationMap& invalidation_map) OVERRIDE;
94 virtual std::string GetOwnerName() const OVERRIDE; 102 virtual std::string GetOwnerName() const OVERRIDE;
95 103
96 // CloudPolicyCore::Observer: 104 // CloudPolicyCore::Observer:
97 virtual void OnCoreConnected(CloudPolicyCore* core) OVERRIDE; 105 virtual void OnCoreConnected(CloudPolicyCore* core) OVERRIDE;
98 virtual void OnRefreshSchedulerStarted(CloudPolicyCore* core) OVERRIDE; 106 virtual void OnRefreshSchedulerStarted(CloudPolicyCore* core) OVERRIDE;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 // The version of the latest invalidation received. This is compared to 208 // The version of the latest invalidation received. This is compared to
201 // the invalidation version of policy stored to determine when the 209 // the invalidation version of policy stored to determine when the
202 // invalidated policy is up-to-date. 210 // invalidated policy is up-to-date.
203 int64 invalidation_version_; 211 int64 invalidation_version_;
204 212
205 // The number of invalidations with unknown version received. Since such 213 // The number of invalidations with unknown version received. Since such
206 // invalidations do not provide a version number, this count is used to set 214 // invalidations do not provide a version number, this count is used to set
207 // invalidation_version_ when such invalidations occur. 215 // invalidation_version_ when such invalidations occur.
208 int unknown_version_invalidation_count_; 216 int unknown_version_invalidation_count_;
209 217
218 // The highest invalidation version that was handled already.
219 int64 highest_handled_invalidation_version_;
220
210 // The most up to date invalidation. 221 // The most up to date invalidation.
211 scoped_ptr<syncer::Invalidation> invalidation_; 222 scoped_ptr<syncer::Invalidation> invalidation_;
212 223
213 // WeakPtrFactory used to create callbacks to this object. 224 // WeakPtrFactory used to create callbacks to this object.
214 base::WeakPtrFactory<CloudPolicyInvalidator> weak_factory_; 225 base::WeakPtrFactory<CloudPolicyInvalidator> weak_factory_;
215 226
216 // The maximum random delay, in ms, between receiving an invalidation and 227 // The maximum random delay, in ms, between receiving an invalidation and
217 // fetching the new policy. 228 // fetching the new policy.
218 int max_fetch_delay_; 229 int max_fetch_delay_;
219 230
220 // The hash value of the current policy. This is used to determine if a new 231 // The hash value of the current policy. This is used to determine if a new
221 // policy is different from the current one. 232 // policy is different from the current one.
222 uint32 policy_hash_value_; 233 uint32 policy_hash_value_;
223 234
224 // A thread checker to make sure that callbacks are invoked on the correct 235 // A thread checker to make sure that callbacks are invoked on the correct
225 // thread. 236 // thread.
226 base::ThreadChecker thread_checker_; 237 base::ThreadChecker thread_checker_;
227 238
228 DISALLOW_COPY_AND_ASSIGN(CloudPolicyInvalidator); 239 DISALLOW_COPY_AND_ASSIGN(CloudPolicyInvalidator);
229 }; 240 };
230 241
231 } // namespace policy 242 } // namespace policy
232 243
233 #endif // CHROME_BROWSER_POLICY_CLOUD_CLOUD_POLICY_INVALIDATOR_H_ 244 #endif // CHROME_BROWSER_POLICY_CLOUD_CLOUD_POLICY_INVALIDATOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698