| OLD | NEW |
| 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 <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 const ServiceWorkerVersion::StatusCallback& callback); | 121 const ServiceWorkerVersion::StatusCallback& callback); |
| 122 virtual void ScheduleDelayedTask(const base::Closure& callback, | 122 virtual void ScheduleDelayedTask(const base::Closure& callback, |
| 123 base::TimeDelta delay); | 123 base::TimeDelta delay); |
| 124 virtual void HasMainFrameProviderHost(const GURL& origin, | 124 virtual void HasMainFrameProviderHost(const GURL& origin, |
| 125 const BoolCallback& callback); | 125 const BoolCallback& callback); |
| 126 | 126 |
| 127 private: | 127 private: |
| 128 friend class TestBackgroundSyncManager; | 128 friend class TestBackgroundSyncManager; |
| 129 friend class BackgroundSyncManagerTest; | 129 friend class BackgroundSyncManagerTest; |
| 130 | 130 |
| 131 class RegistrationKey { | |
| 132 public: | |
| 133 explicit RegistrationKey(const BackgroundSyncRegistration& registration); | |
| 134 explicit RegistrationKey(const BackgroundSyncRegistrationOptions& options); | |
| 135 RegistrationKey(const std::string& tag); | |
| 136 RegistrationKey(const RegistrationKey& other) = default; | |
| 137 RegistrationKey& operator=(const RegistrationKey& other) = default; | |
| 138 | |
| 139 bool operator<(const RegistrationKey& rhs) const { | |
| 140 return value_ < rhs.value_; | |
| 141 } | |
| 142 | |
| 143 private: | |
| 144 std::string value_; | |
| 145 }; | |
| 146 | |
| 147 struct BackgroundSyncRegistrations { | 131 struct BackgroundSyncRegistrations { |
| 148 using RegistrationMap = | 132 using RegistrationMap = std::map<std::string, BackgroundSyncRegistration>; |
| 149 std::map<RegistrationKey, BackgroundSyncRegistration>; | |
| 150 | 133 |
| 151 BackgroundSyncRegistrations(); | 134 BackgroundSyncRegistrations(); |
| 152 BackgroundSyncRegistrations(const BackgroundSyncRegistrations& other); | 135 BackgroundSyncRegistrations(const BackgroundSyncRegistrations& other); |
| 153 ~BackgroundSyncRegistrations(); | 136 ~BackgroundSyncRegistrations(); |
| 154 | 137 |
| 155 RegistrationMap registration_map; | 138 RegistrationMap registration_map; |
| 156 BackgroundSyncRegistration::RegistrationId next_id; | 139 BackgroundSyncRegistration::RegistrationId next_id; |
| 157 GURL origin; | 140 GURL origin; |
| 158 }; | 141 }; |
| 159 | 142 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 171 void DisableAndClearDidGetRegistrations( | 154 void DisableAndClearDidGetRegistrations( |
| 172 const base::Closure& callback, | 155 const base::Closure& callback, |
| 173 const std::vector<std::pair<int64_t, std::string>>& user_data, | 156 const std::vector<std::pair<int64_t, std::string>>& user_data, |
| 174 ServiceWorkerStatusCode status); | 157 ServiceWorkerStatusCode status); |
| 175 void DisableAndClearManagerClearedOne(const base::Closure& barrier_closure, | 158 void DisableAndClearManagerClearedOne(const base::Closure& barrier_closure, |
| 176 ServiceWorkerStatusCode status); | 159 ServiceWorkerStatusCode status); |
| 177 | 160 |
| 178 // Returns the existing registration or nullptr if it cannot be found. | 161 // Returns the existing registration or nullptr if it cannot be found. |
| 179 BackgroundSyncRegistration* LookupActiveRegistration( | 162 BackgroundSyncRegistration* LookupActiveRegistration( |
| 180 int64_t sw_registration_id, | 163 int64_t sw_registration_id, |
| 181 const RegistrationKey& registration_key); | 164 const std::string& tag); |
| 182 | 165 |
| 183 // Write all registrations for a given |sw_registration_id| to persistent | 166 // Write all registrations for a given |sw_registration_id| to persistent |
| 184 // storage. | 167 // storage. |
| 185 void StoreRegistrations(int64_t sw_registration_id, | 168 void StoreRegistrations(int64_t sw_registration_id, |
| 186 const ServiceWorkerStorage::StatusCallback& callback); | 169 const ServiceWorkerStorage::StatusCallback& callback); |
| 187 | 170 |
| 188 // Removes the active registration if it is in the map. | 171 // Removes the active registration if it is in the map. |
| 189 void RemoveActiveRegistration(int64_t sw_registration_id, | 172 void RemoveActiveRegistration(int64_t sw_registration_id, |
| 190 const RegistrationKey& registration_key); | 173 const std::string& tag); |
| 191 | 174 |
| 192 void AddActiveRegistration( | 175 void AddActiveRegistration( |
| 193 int64_t sw_registration_id, | 176 int64_t sw_registration_id, |
| 194 const GURL& origin, | 177 const GURL& origin, |
| 195 const BackgroundSyncRegistration& sync_registration); | 178 const BackgroundSyncRegistration& sync_registration); |
| 196 | 179 |
| 197 void InitImpl(const base::Closure& callback); | 180 void InitImpl(const base::Closure& callback); |
| 198 void InitDidGetControllerParameters( | 181 void InitDidGetControllerParameters( |
| 199 const base::Closure& callback, | 182 const base::Closure& callback, |
| 200 scoped_ptr<BackgroundSyncParameters> parameters); | 183 scoped_ptr<BackgroundSyncParameters> parameters); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 // Assumes that all registrations in the pending state are not currently ready | 219 // Assumes that all registrations in the pending state are not currently ready |
| 237 // to fire. Therefore this should not be called directly and should only be | 220 // to fire. Therefore this should not be called directly and should only be |
| 238 // called by FireReadyEvents. | 221 // called by FireReadyEvents. |
| 239 void RunInBackgroundIfNecessary(); | 222 void RunInBackgroundIfNecessary(); |
| 240 | 223 |
| 241 // FireReadyEvents scans the list of available events and fires those that are | 224 // FireReadyEvents scans the list of available events and fires those that are |
| 242 // ready to fire. For those that can't yet be fired, wakeup alarms are set. | 225 // ready to fire. For those that can't yet be fired, wakeup alarms are set. |
| 243 void FireReadyEvents(); | 226 void FireReadyEvents(); |
| 244 void FireReadyEventsImpl(const base::Closure& callback); | 227 void FireReadyEventsImpl(const base::Closure& callback); |
| 245 void FireReadyEventsDidFindRegistration( | 228 void FireReadyEventsDidFindRegistration( |
| 246 const RegistrationKey& registration_key, | 229 const std::string& tag, |
| 247 BackgroundSyncRegistration::RegistrationId registration_id, | 230 BackgroundSyncRegistration::RegistrationId registration_id, |
| 248 const base::Closure& event_fired_callback, | 231 const base::Closure& event_fired_callback, |
| 249 const base::Closure& event_completed_callback, | 232 const base::Closure& event_completed_callback, |
| 250 ServiceWorkerStatusCode service_worker_status, | 233 ServiceWorkerStatusCode service_worker_status, |
| 251 const scoped_refptr<ServiceWorkerRegistration>& | 234 const scoped_refptr<ServiceWorkerRegistration>& |
| 252 service_worker_registration); | 235 service_worker_registration); |
| 253 void FireReadyEventsAllEventsFiring(const base::Closure& callback); | 236 void FireReadyEventsAllEventsFiring(const base::Closure& callback); |
| 254 | 237 |
| 255 // Called when a sync event has completed. | 238 // Called when a sync event has completed. |
| 256 void EventComplete(const scoped_refptr<ServiceWorkerRegistration>& | 239 void EventComplete(const scoped_refptr<ServiceWorkerRegistration>& |
| 257 service_worker_registration, | 240 service_worker_registration, |
| 258 int64_t service_worker_id, | 241 int64_t service_worker_id, |
| 259 const RegistrationKey& registration_key, | 242 const std::string& tag, |
| 260 const base::Closure& callback, | 243 const base::Closure& callback, |
| 261 ServiceWorkerStatusCode status_code); | 244 ServiceWorkerStatusCode status_code); |
| 262 void EventCompleteImpl(int64_t service_worker_id, | 245 void EventCompleteImpl(int64_t service_worker_id, |
| 263 const RegistrationKey& registration_key, | 246 const std::string& tag, |
| 264 ServiceWorkerStatusCode status_code, | 247 ServiceWorkerStatusCode status_code, |
| 265 const base::Closure& callback); | 248 const base::Closure& callback); |
| 266 void EventCompleteDidStore(int64_t service_worker_id, | 249 void EventCompleteDidStore(int64_t service_worker_id, |
| 267 const base::Closure& callback, | 250 const base::Closure& callback, |
| 268 ServiceWorkerStatusCode status_code); | 251 ServiceWorkerStatusCode status_code); |
| 269 | 252 |
| 270 // Called when all sync events have completed. | 253 // Called when all sync events have completed. |
| 271 static void OnAllSyncEventsCompleted(const base::TimeTicks& start_time, | 254 static void OnAllSyncEventsCompleted(const base::TimeTicks& start_time, |
| 272 int number_of_batched_sync_events); | 255 int number_of_batched_sync_events); |
| 273 | 256 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 scoped_ptr<base::Clock> clock_; | 307 scoped_ptr<base::Clock> clock_; |
| 325 | 308 |
| 326 base::WeakPtrFactory<BackgroundSyncManager> weak_ptr_factory_; | 309 base::WeakPtrFactory<BackgroundSyncManager> weak_ptr_factory_; |
| 327 | 310 |
| 328 DISALLOW_COPY_AND_ASSIGN(BackgroundSyncManager); | 311 DISALLOW_COPY_AND_ASSIGN(BackgroundSyncManager); |
| 329 }; | 312 }; |
| 330 | 313 |
| 331 } // namespace content | 314 } // namespace content |
| 332 | 315 |
| 333 #endif // CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_MANAGER_H_ | 316 #endif // CONTENT_BROWSER_BACKGROUND_SYNC_BACKGROUND_SYNC_MANAGER_H_ |
| OLD | NEW |