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

Side by Side Diff: content/browser/background_sync/background_sync_manager.h

Issue 1282013004: BackgroundSyncManager tracks client registrations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 3 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_MANAGER_H_ 5 #ifndef CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_MANAGER_H_
6 #define CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_MANAGER_H_ 6 #define CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_MANAGER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/callback_forward.h" 13 #include "base/callback_forward.h"
14 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
15 #include "base/memory/scoped_vector.h"
15 #include "base/memory/weak_ptr.h" 16 #include "base/memory/weak_ptr.h"
16 #include "content/browser/background_sync/background_sync.pb.h" 17 #include "content/browser/background_sync/background_sync.pb.h"
17 #include "content/browser/background_sync/background_sync_registration.h" 18 #include "content/browser/background_sync/background_sync_registration.h"
19 #include "content/browser/background_sync/background_sync_registration_handle.h"
18 #include "content/browser/background_sync/background_sync_status.h" 20 #include "content/browser/background_sync/background_sync_status.h"
19 #include "content/browser/cache_storage/cache_storage_scheduler.h" 21 #include "content/browser/cache_storage/cache_storage_scheduler.h"
20 #include "content/browser/service_worker/service_worker_context_observer.h" 22 #include "content/browser/service_worker/service_worker_context_observer.h"
21 #include "content/browser/service_worker/service_worker_storage.h" 23 #include "content/browser/service_worker/service_worker_storage.h"
22 #include "content/common/content_export.h" 24 #include "content/common/content_export.h"
23 #include "content/common/service_worker/service_worker_status_code.h" 25 #include "content/common/service_worker/service_worker_status_code.h"
24 #include "url/gurl.h" 26 #include "url/gurl.h"
25 27
26 namespace content { 28 namespace content {
27 29
(...skipping 15 matching lines...) Expand all
43 // TODO(jkarlin): Create a background sync scheduler to actually run the 45 // TODO(jkarlin): Create a background sync scheduler to actually run the
44 // registered events. 46 // registered events.
45 // TODO(jkarlin): Keep the browser alive if "Let Google Chrome Run in the 47 // TODO(jkarlin): Keep the browser alive if "Let Google Chrome Run in the
46 // Background" is true and a sync is registered. 48 // Background" is true and a sync is registered.
47 class CONTENT_EXPORT BackgroundSyncManager 49 class CONTENT_EXPORT BackgroundSyncManager
48 : NON_EXPORTED_BASE(public ServiceWorkerContextObserver) { 50 : NON_EXPORTED_BASE(public ServiceWorkerContextObserver) {
49 public: 51 public:
50 using StatusCallback = base::Callback<void(BackgroundSyncStatus)>; 52 using StatusCallback = base::Callback<void(BackgroundSyncStatus)>;
51 using StatusAndRegistrationCallback = 53 using StatusAndRegistrationCallback =
52 base::Callback<void(BackgroundSyncStatus, 54 base::Callback<void(BackgroundSyncStatus,
53 const BackgroundSyncRegistration&)>; 55 scoped_ptr<BackgroundSyncRegistrationHandle>)>;
54 using StatusAndRegistrationsCallback = 56 using StatusAndRegistrationsCallback = base::Callback<void(
55 base::Callback<void(BackgroundSyncStatus, 57 BackgroundSyncStatus,
56 const std::vector<BackgroundSyncRegistration>&)>; 58 scoped_ptr<ScopedVector<BackgroundSyncRegistrationHandle>>)>;
57 59
58 static scoped_ptr<BackgroundSyncManager> Create( 60 static scoped_ptr<BackgroundSyncManager> Create(
59 const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context); 61 const scoped_refptr<ServiceWorkerContextWrapper>& service_worker_context);
60 ~BackgroundSyncManager() override; 62 ~BackgroundSyncManager() override;
61 63
62 // Stores the given background sync registration and adds it to the scheduling 64 // Stores the given background sync registration and adds it to the scheduling
63 // queue. It will overwrite an existing registration with the same tag and 65 // queue. It will overwrite an existing registration with the same tag and
64 // periodicity unless they're identical (save for the id). Calls |callback| 66 // periodicity unless they're identical (save for the id). Calls |callback|
65 // with BACKGROUND_SYNC_STATUS_OK and the accepted registration on success. 67 // with BACKGROUND_SYNC_STATUS_OK and the accepted registration on success.
66 // The accepted registration will have a unique id. It may also have altered 68 // The accepted registration will have a unique id. It may also have altered
67 // parameters if the user or UA chose different parameters than those 69 // parameters if the user or UA chose different parameters than those
68 // supplied. 70 // supplied.
69 void Register(int64 sw_registration_id, 71 void Register(int64 sw_registration_id,
70 const BackgroundSyncRegistrationOptions& options, 72 const BackgroundSyncRegistrationOptions& options,
71 const StatusAndRegistrationCallback& callback); 73 const StatusAndRegistrationCallback& callback);
72 74
73 // Removes the background sync with tag |sync_registration_tag|, periodicity
74 // |periodicity|, and id |sync_registration_id|. Calls |callback| with
75 // BACKGROUND_SYNC_STATUS_NOT_FOUND if no match is found. Calls |callback|
76 // with BACKGROUND_SYNC_STATUS_OK on success.
77 void Unregister(
78 int64 sw_registration_id,
79 const std::string& sync_registration_tag,
80 SyncPeriodicity periodicity,
81 BackgroundSyncRegistration::RegistrationId sync_registration_id,
82 const StatusCallback& callback);
83
84 // Finds the background sync registration associated with 75 // Finds the background sync registration associated with
85 // |sw_registration_id| with periodicity |periodicity|. Calls 76 // |sw_registration_id| with periodicity |periodicity|. Calls
86 // |callback| with BACKGROUND_SYNC_STATUS_NOT_FOUND if it doesn't exist. Calls 77 // |callback| with BACKGROUND_SYNC_STATUS_NOT_FOUND if it doesn't exist. Calls
87 // |callback| with BACKGROUND_SYNC_STATUS_OK on success. 78 // |callback| with BACKGROUND_SYNC_STATUS_OK on success.
88 void GetRegistration(int64 sw_registration_id, 79 void GetRegistration(int64 sw_registration_id,
89 const std::string& sync_registration_tag, 80 const std::string& sync_registration_tag,
90 SyncPeriodicity periodicity, 81 SyncPeriodicity periodicity,
91 const StatusAndRegistrationCallback& callback); 82 const StatusAndRegistrationCallback& callback);
92 83
93 void GetRegistrations(int64 sw_registration_id, 84 void GetRegistrations(int64 sw_registration_id,
94 SyncPeriodicity periodicity, 85 SyncPeriodicity periodicity,
95 const StatusAndRegistrationsCallback& callback); 86 const StatusAndRegistrationsCallback& callback);
96 87
88 // Given a HandleId |handle_id|, return a new handle for the same
89 // registration.
90 scoped_ptr<BackgroundSyncRegistrationHandle> DuplicateRegistrationHandle(
91 int64 sw_registration_id,
92 BackgroundSyncRegistrationHandle::HandleId handle_id);
93
97 // ServiceWorkerContextObserver overrides. 94 // ServiceWorkerContextObserver overrides.
98 void OnRegistrationDeleted(int64 registration_id, 95 void OnRegistrationDeleted(int64 registration_id,
99 const GURL& pattern) override; 96 const GURL& pattern) override;
100 void OnStorageWiped() override; 97 void OnStorageWiped() override;
101 98
102 protected: 99 protected:
100 // A registration might be referenced by the client longer than
101 // the BackgroundSyncManager needs to keep track of it (e.g., the event has
102 // finished firing). The BackgroundSyncManager reference counts its
103 // registrations internally and every BackgroundSyncRegistrationHandle has a
104 // unique handle id which maps to a locally maintained (in
105 // client_registration_ids_) scoped_refptr.
106 class RefCountedRegistration;
107
103 explicit BackgroundSyncManager( 108 explicit BackgroundSyncManager(
104 const scoped_refptr<ServiceWorkerContextWrapper>& context); 109 const scoped_refptr<ServiceWorkerContextWrapper>& context);
105 110
106 // Init must be called before any public member function. Only call it once. 111 // Init must be called before any public member function. Only call it once.
107 void Init(); 112 void Init();
108 113
109 // The following methods are virtual for testing. 114 // The following methods are virtual for testing.
110 virtual void StoreDataInBackend( 115 virtual void StoreDataInBackend(
111 int64 sw_registration_id, 116 int64 sw_registration_id,
112 const GURL& origin, 117 const GURL& origin,
113 const std::string& backend_key, 118 const std::string& backend_key,
114 const std::string& data, 119 const std::string& data,
115 const ServiceWorkerStorage::StatusCallback& callback); 120 const ServiceWorkerStorage::StatusCallback& callback);
116 virtual void GetDataFromBackend( 121 virtual void GetDataFromBackend(
117 const std::string& backend_key, 122 const std::string& backend_key,
118 const ServiceWorkerStorage::GetUserDataForAllRegistrationsCallback& 123 const ServiceWorkerStorage::GetUserDataForAllRegistrationsCallback&
119 callback); 124 callback);
120 virtual void FireOneShotSync( 125 virtual void FireOneShotSync(
121 const BackgroundSyncRegistration& registration, 126 BackgroundSyncRegistrationHandle::HandleId handle_id,
122 const scoped_refptr<ServiceWorkerVersion>& active_version, 127 const scoped_refptr<ServiceWorkerVersion>& active_version,
123 const ServiceWorkerVersion::StatusCallback& callback); 128 const ServiceWorkerVersion::StatusCallback& callback);
124 129
125 private: 130 private:
131 friend class BackgroundSyncRegistrationHandle;
132
126 class RegistrationKey { 133 class RegistrationKey {
127 public: 134 public:
128 explicit RegistrationKey(const BackgroundSyncRegistration& registration); 135 explicit RegistrationKey(const BackgroundSyncRegistration& registration);
129 explicit RegistrationKey(const BackgroundSyncRegistrationOptions& options); 136 explicit RegistrationKey(const BackgroundSyncRegistrationOptions& options);
130 RegistrationKey(const std::string& tag, SyncPeriodicity periodicity); 137 RegistrationKey(const std::string& tag, SyncPeriodicity periodicity);
131 RegistrationKey(const RegistrationKey& other) = default; 138 RegistrationKey(const RegistrationKey& other) = default;
132 RegistrationKey& operator=(const RegistrationKey& other) = default; 139 RegistrationKey& operator=(const RegistrationKey& other) = default;
133 140
134 bool operator<(const RegistrationKey& rhs) const { 141 bool operator<(const RegistrationKey& rhs) const {
135 return value_ < rhs.value_; 142 return value_ < rhs.value_;
136 } 143 }
137 144
138 private: 145 private:
139 std::string value_; 146 std::string value_;
140 }; 147 };
141 148
142 struct BackgroundSyncRegistrations { 149 struct BackgroundSyncRegistrations {
143 using RegistrationMap = 150 using RegistrationMap =
144 std::map<RegistrationKey, BackgroundSyncRegistration>; 151 std::map<RegistrationKey, scoped_refptr<RefCountedRegistration>>;
145 152
146 BackgroundSyncRegistrations(); 153 BackgroundSyncRegistrations();
147 ~BackgroundSyncRegistrations(); 154 ~BackgroundSyncRegistrations();
148 155
149 RegistrationMap registration_map; 156 RegistrationMap registration_map;
150 BackgroundSyncRegistration::RegistrationId next_id; 157 BackgroundSyncRegistration::RegistrationId next_id;
151 GURL origin; 158 GURL origin;
152 }; 159 };
153 160
154 using PermissionStatusCallback = base::Callback<void(bool)>; 161 using PermissionStatusCallback = base::Callback<void(bool)>;
155 using SWIdToRegistrationsMap = std::map<int64, BackgroundSyncRegistrations>; 162 using SWIdToRegistrationsMap = std::map<int64, BackgroundSyncRegistrations>;
156 163
164 scoped_ptr<BackgroundSyncRegistrationHandle> CreateRegistrationHandle(
165 RefCountedRegistration* registration);
166
167 // Returns the BackgroundSyncRegistration corresponding to |handle_id|.
168 // Returns nullptr if the registration is not found.
169 BackgroundSyncRegistration* GetRegistrationForHandle(
170 BackgroundSyncRegistrationHandle::HandleId handle_id) const;
171
172 // The BackgroundSyncManager holds references to registrations that have
173 // active Handles. The handles must call this on destruction.
174 void ReleaseRegistrationHandle(
175 BackgroundSyncRegistrationHandle::HandleId handle_id);
176
157 // Disable the manager. Already queued operations will abort once they start 177 // Disable the manager. Already queued operations will abort once they start
158 // to run (in their impl methods). Future operations will not queue. Any 178 // to run (in their impl methods). Future operations will not queue. Any
159 // registrations are cleared from memory and the backend (if it's still 179 // registrations are cleared from memory and the backend (if it's still
160 // functioning). The manager will reenable itself once it receives the 180 // functioning). The manager will reenable itself once it receives the
161 // OnStorageWiped message or on browser restart. 181 // OnStorageWiped message or on browser restart.
162 void DisableAndClearManager(const base::Closure& callback); 182 void DisableAndClearManager(const base::Closure& callback);
163 void DisableAndClearDidGetRegistrations( 183 void DisableAndClearDidGetRegistrations(
164 const base::Closure& callback, 184 const base::Closure& callback,
165 const std::vector<std::pair<int64, std::string>>& user_data, 185 const std::vector<std::pair<int64, std::string>>& user_data,
166 ServiceWorkerStatusCode status); 186 ServiceWorkerStatusCode status);
167 void DisableAndClearManagerClearedOne(const base::Closure& barrier_closure, 187 void DisableAndClearManagerClearedOne(const base::Closure& barrier_closure,
168 ServiceWorkerStatusCode status); 188 ServiceWorkerStatusCode status);
169 189
170 // Returns the existing registration in |existing_registration| if it is not 190 // Returns the existing registration in |existing_registration| if it is not
171 // null. 191 // null.
172 BackgroundSyncRegistration* LookupRegistration( 192 RefCountedRegistration* LookupActiveRegistration(
173 int64 sw_registration_id, 193 int64 sw_registration_id,
174 const RegistrationKey& registration_key); 194 const RegistrationKey& registration_key);
175 195
176 // Store all registrations for a given |sw_registration_id|. 196 // Store all registrations for a given |sw_registration_id|.
177 void StoreRegistrations(int64 sw_registration_id, 197 void StoreRegistrations(int64 sw_registration_id,
178 const ServiceWorkerStorage::StatusCallback& callback); 198 const ServiceWorkerStorage::StatusCallback& callback);
179 199
180 // Removes the registration if it is in the map. 200 // Removes the registration if it is in the map.
181 void RemoveRegistrationFromMap(int64 sw_registration_id, 201 void RemoveActiveRegistration(int64 sw_registration_id,
182 const RegistrationKey& registration_key); 202 const RegistrationKey& registration_key);
183 203
184 void AddRegistrationToMap( 204 void AddActiveRegistration(
michaeln 2015/08/28 02:53:11 thnx for making the subtle name changes
jkarlin 2015/09/02 23:51:40 Acknowledged.
185 int64 sw_registration_id, 205 int64 sw_registration_id,
186 const GURL& origin, 206 const GURL& origin,
187 const BackgroundSyncRegistration& sync_registration); 207 const scoped_refptr<RefCountedRegistration>& sync_registration);
188 208
189 void InitImpl(const base::Closure& callback); 209 void InitImpl(const base::Closure& callback);
190 void InitDidGetDataFromBackend( 210 void InitDidGetDataFromBackend(
191 const base::Closure& callback, 211 const base::Closure& callback,
192 const std::vector<std::pair<int64, std::string>>& user_data, 212 const std::vector<std::pair<int64, std::string>>& user_data,
193 ServiceWorkerStatusCode status); 213 ServiceWorkerStatusCode status);
194 214
195 // Register callbacks 215 // Register callbacks
196 void RegisterImpl(int64 sw_registration_id, 216 void RegisterImpl(int64 sw_registration_id,
197 const BackgroundSyncRegistrationOptions& options, 217 const BackgroundSyncRegistrationOptions& options,
198 const StatusAndRegistrationCallback& callback); 218 const StatusAndRegistrationCallback& callback);
199 void RegisterDidStore(int64 sw_registration_id, 219 void RegisterDidStore(
200 const BackgroundSyncRegistration& sync_registration, 220 int64 sw_registration_id,
201 const StatusAndRegistrationCallback& callback, 221 const scoped_refptr<RefCountedRegistration>& new_registration_ref,
202 ServiceWorkerStatusCode status); 222 const StatusAndRegistrationCallback& callback,
223 ServiceWorkerStatusCode status);
203 224
204 // Unregister callbacks 225 // Removes the background sync with periodicity |periodicity| and id
226 // |sync_registration_id|. Calls |callback| with
227 // BACKGROUND_SYNC_STATUS_NOT_FOUND if no match is found. Calls |callback|
228 // with BACKGROUND_SYNC_STATUS_OK on success.
229 void Unregister(int64 sw_registration_id,
230 SyncPeriodicity periodicity,
231 BackgroundSyncRegistrationHandle::HandleId handle_id,
232 const StatusCallback& callback);
205 void UnregisterImpl( 233 void UnregisterImpl(
206 int64 sw_registration_id, 234 int64 sw_registration_id,
207 const RegistrationKey& registration_key, 235 const RegistrationKey& key,
208 BackgroundSyncRegistration::RegistrationId sync_registration_id, 236 BackgroundSyncRegistration::RegistrationId sync_registration_id,
209 SyncPeriodicity periodicity, 237 SyncPeriodicity periodicity,
210 const StatusCallback& callback); 238 const StatusCallback& callback);
211 void UnregisterDidStore(int64 sw_registration_id, 239 void UnregisterDidStore(int64 sw_registration_id,
212 SyncPeriodicity periodicity, 240 SyncPeriodicity periodicity,
213 const StatusCallback& callback, 241 const StatusCallback& callback,
214 ServiceWorkerStatusCode status); 242 ServiceWorkerStatusCode status);
215 243
216 // GetRegistration callbacks 244 // GetRegistration callbacks
217 void GetRegistrationImpl(int64 sw_registration_id, 245 void GetRegistrationImpl(int64 sw_registration_id,
(...skipping 25 matching lines...) Expand all
243 const base::Closure& event_completed_callback, 271 const base::Closure& event_completed_callback,
244 ServiceWorkerStatusCode service_worker_status, 272 ServiceWorkerStatusCode service_worker_status,
245 const scoped_refptr<ServiceWorkerRegistration>& 273 const scoped_refptr<ServiceWorkerRegistration>&
246 service_worker_registration); 274 service_worker_registration);
247 275
248 // Called when a sync event has completed. 276 // Called when a sync event has completed.
249 void EventComplete( 277 void EventComplete(
250 const scoped_refptr<ServiceWorkerRegistration>& 278 const scoped_refptr<ServiceWorkerRegistration>&
251 service_worker_registration, 279 service_worker_registration,
252 int64 service_worker_id, 280 int64 service_worker_id,
253 const RegistrationKey& key, 281 scoped_ptr<BackgroundSyncRegistrationHandle> registration_handle,
254 BackgroundSyncRegistration::RegistrationId sync_registration_id,
255 const base::Closure& callback, 282 const base::Closure& callback,
256 ServiceWorkerStatusCode status_code); 283 ServiceWorkerStatusCode status_code);
257 void EventCompleteImpl( 284 void EventCompleteImpl(
258 int64 service_worker_id, 285 int64 service_worker_id,
259 const RegistrationKey& key, 286 scoped_ptr<BackgroundSyncRegistrationHandle> registration_handle,
260 BackgroundSyncRegistration::RegistrationId sync_registration_id,
261 ServiceWorkerStatusCode status_code, 287 ServiceWorkerStatusCode status_code,
262 const base::Closure& callback); 288 const base::Closure& callback);
263 void EventCompleteDidStore(int64 service_worker_id, 289 void EventCompleteDidStore(int64 service_worker_id,
264 const base::Closure& callback, 290 const base::Closure& callback,
265 ServiceWorkerStatusCode status_code); 291 ServiceWorkerStatusCode status_code);
266 292
267 // Called when all sync events have completed. 293 // Called when all sync events have completed.
268 static void OnAllSyncEventsCompleted(const base::TimeTicks& start_time, 294 static void OnAllSyncEventsCompleted(const base::TimeTicks& start_time,
269 int number_of_batched_sync_events); 295 int number_of_batched_sync_events);
270 296
271 // OnRegistrationDeleted callbacks 297 // OnRegistrationDeleted callbacks
272 void OnRegistrationDeletedImpl(int64 registration_id, 298 void OnRegistrationDeletedImpl(int64 registration_id,
273 const base::Closure& callback); 299 const base::Closure& callback);
274 300
275 // OnStorageWiped callbacks 301 // OnStorageWiped callbacks
276 void OnStorageWipedImpl(const base::Closure& callback); 302 void OnStorageWipedImpl(const base::Closure& callback);
277 303
278 void OnNetworkChanged(); 304 void OnNetworkChanged();
279 void OnPowerChanged(); 305 void OnPowerChanged();
280 306
281 // Operation Scheduling callback and convenience functions. 307 // Operation Scheduling callback and convenience functions.
282 template <typename CallbackT, typename... Params> 308 template <typename CallbackT, typename... Params>
283 void CompleteOperationCallback(const CallbackT& callback, 309 void CompleteOperationCallback(const CallbackT& callback,
284 Params... parameters); 310 Params... parameters);
311 void CompleteStatusAndRegistrationCallback(
312 StatusAndRegistrationCallback callback,
313 BackgroundSyncStatus status,
314 scoped_ptr<BackgroundSyncRegistrationHandle> result);
315 void CompleteStatusAndRegistrationsCallback(
316 StatusAndRegistrationsCallback callback,
317 BackgroundSyncStatus status,
318 scoped_ptr<ScopedVector<BackgroundSyncRegistrationHandle>> results);
285 base::Closure MakeEmptyCompletion(); 319 base::Closure MakeEmptyCompletion();
286 base::Closure MakeClosureCompletion(const base::Closure& callback); 320 base::Closure MakeClosureCompletion(const base::Closure& callback);
287 StatusAndRegistrationCallback MakeStatusAndRegistrationCompletion( 321 StatusAndRegistrationCallback MakeStatusAndRegistrationCompletion(
288 const StatusAndRegistrationCallback& callback); 322 const StatusAndRegistrationCallback& callback);
289 StatusAndRegistrationsCallback MakeStatusAndRegistrationsCompletion( 323 StatusAndRegistrationsCallback MakeStatusAndRegistrationsCompletion(
290 const StatusAndRegistrationsCallback& callback); 324 const StatusAndRegistrationsCallback& callback);
291 BackgroundSyncManager::StatusCallback MakeStatusCompletion( 325 BackgroundSyncManager::StatusCallback MakeStatusCompletion(
292 const StatusCallback& callback); 326 const StatusCallback& callback);
293 327
294 SWIdToRegistrationsMap sw_to_registrations_map_; 328 SWIdToRegistrationsMap active_registrations_;
295 CacheStorageScheduler op_scheduler_; 329 CacheStorageScheduler op_scheduler_;
296 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_; 330 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_;
297 bool disabled_; 331 bool disabled_;
298 332
299 scoped_ptr<BackgroundSyncNetworkObserver> network_observer_; 333 scoped_ptr<BackgroundSyncNetworkObserver> network_observer_;
300 scoped_ptr<BackgroundSyncPowerObserver> power_observer_; 334 scoped_ptr<BackgroundSyncPowerObserver> power_observer_;
301 335
336 // The registrations that clients have handles to.
337 IDMap<scoped_refptr<RefCountedRegistration>, IDMapOwnPointer>
338 registration_handle_ids_;
339
302 base::WeakPtrFactory<BackgroundSyncManager> weak_ptr_factory_; 340 base::WeakPtrFactory<BackgroundSyncManager> weak_ptr_factory_;
303 341
304 DISALLOW_COPY_AND_ASSIGN(BackgroundSyncManager); 342 DISALLOW_COPY_AND_ASSIGN(BackgroundSyncManager);
305 }; 343 };
306 344
307 } // namespace content 345 } // namespace content
308 346
309 #endif // CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_MANAGER_H_ 347 #endif // CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698