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

Side by Side Diff: chrome/browser/sync/engine/syncapi.cc

Issue 6182004: [SYNC] Refactor SyncSourceInfo and add support in chrome invalidation client ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Comments. Also removed unnecessary LOG(WARNING). Created 9 years, 11 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 (c) 2010 The Chromium Authors. All rights reserved. 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 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 #include "chrome/browser/sync/engine/syncapi.h" 5 #include "chrome/browser/sync/engine/syncapi.h"
6 6
7 #include <bitset> 7 #include <bitset>
8 #include <iomanip> 8 #include <iomanip>
9 #include <list> 9 #include <list>
10 #include <string> 10 #include <string>
(...skipping 2224 matching lines...) Expand 10 before | Expand all | Expand 10 after
2235 DCHECK(!email.empty()); 2235 DCHECK(!email.empty());
2236 DCHECK(!token.empty()); 2236 DCHECK(!token.empty());
2237 InitializeTalkMediator(); 2237 InitializeTalkMediator();
2238 talk_mediator_->SetAuthToken(email, token, SYNC_SERVICE_NAME); 2238 talk_mediator_->SetAuthToken(email, token, SYNC_SERVICE_NAME);
2239 talk_mediator_->Login(); 2239 talk_mediator_->Login();
2240 } 2240 }
2241 2241
2242 void SyncManager::SyncInternal::OnIncomingNotification( 2242 void SyncManager::SyncInternal::OnIncomingNotification(
2243 const IncomingNotificationData& notification_data) { 2243 const IncomingNotificationData& notification_data) {
2244 syncable::ModelTypeBitSet model_types; 2244 syncable::ModelTypeBitSet model_types;
2245 std::vector<std::string> payloads;
2245 2246
2246 // Check if the service url is a sync URL. An empty service URL is 2247 // Check if the service url is a sync URL. An empty service URL is
2247 // treated as a legacy sync notification. If we're listening to 2248 // treated as a legacy sync notification. If we're listening to
2248 // server-issued notifications, no need to check the service_url. 2249 // server-issued notifications, no need to check the service_url.
2249 if (notifier_options_.notification_method == 2250 if (notifier_options_.notification_method ==
2250 notifier::NOTIFICATION_SERVER) { 2251 notifier::NOTIFICATION_SERVER) {
2251 VLOG(1) << "Sync received server notification: " << 2252 VLOG(1) << "Sync received server notification from " <<
2253 notification_data.service_url << ": " <<
2252 notification_data.service_specific_data; 2254 notification_data.service_specific_data;
2253 2255
2254 if (!syncable::ModelTypeBitSetFromString( 2256 if (!syncable::ModelTypeBitSetFromString(
2255 notification_data.service_specific_data, 2257 notification_data.service_url,
2256 &model_types)) { 2258 &model_types)) {
2257 LOG(DFATAL) << "Could not extract model types from server data."; 2259 LOG(DFATAL) << "Could not extract model types from server data.";
2258 model_types.set(); 2260 model_types.set();
2259 } 2261 }
2262 if (!notification_data.service_specific_data.empty()) {
2263 payloads.resize(model_types.size());
2264 for (size_t i = syncable::FIRST_REAL_MODEL_TYPE;
2265 i < model_types.size();
2266 ++i) {
2267 if (model_types[i])
2268 payloads[i] = notification_data.service_specific_data;
2269 }
2270 }
2260 } else if (notification_data.service_url.empty() || 2271 } else if (notification_data.service_url.empty() ||
2261 (notification_data.service_url == 2272 (notification_data.service_url ==
2262 browser_sync::kSyncLegacyServiceUrl) || 2273 browser_sync::kSyncLegacyServiceUrl) ||
2263 (notification_data.service_url == 2274 (notification_data.service_url ==
2264 browser_sync::kSyncServiceUrl)) { 2275 browser_sync::kSyncServiceUrl)) {
2265 VLOG(1) << "Sync received P2P notification."; 2276 VLOG(1) << "Sync received P2P notification.";
2266 2277
2267 // Catch for sync integration tests (uses p2p). Just set all datatypes. 2278 // Catch for sync integration tests (uses p2p). Just set all datatypes.
2268 model_types.set(); 2279 model_types.set();
2269 } else { 2280 } else {
2270 LOG(WARNING) << "Notification fron unexpected source: " 2281 LOG(WARNING) << "Notification fron unexpected source: "
2271 << notification_data.service_url; 2282 << notification_data.service_url;
2272 } 2283 }
2273 2284
2274 if (model_types.any()) { 2285 if (model_types.any()) {
2286 // Introduce a delay to help coalesce initial notifications.
2287 int milliseconds_from_now = 250;
akalin 2011/01/12 09:55:19 Change to something like "const int kSyncerThreadD
Nicolas Zea 2011/01/13 19:17:30 Done.
2275 if (syncer_thread()) { 2288 if (syncer_thread()) {
2276 // Introduce a delay to help coalesce initial notifications. 2289 // If this notification had a payload, pass it along, else just pass the
2277 syncer_thread()->NudgeSyncerWithDataTypes( 2290 // datatypes that triggered the notification.
2278 250, 2291 if (notification_data.service_specific_data.empty()) {
2279 SyncerThread::kNotification, 2292 syncer_thread()->NudgeSyncerWithDataTypes(
2280 model_types); 2293 milliseconds_from_now,
2294 SyncerThread::kNotification,
2295 model_types);
2296 } else {
2297 syncer_thread()->NudgeSyncerWithPayloads(
2298 milliseconds_from_now,
2299 SyncerThread::kNotification,
2300 payloads);
2301 }
2281 } 2302 }
2282 allstatus_.IncrementNotificationsReceived(); 2303 allstatus_.IncrementNotificationsReceived();
2283 } else { 2304 } else {
2284 LOG(WARNING) << "Sync received notification without any type information."; 2305 LOG(WARNING) << "Sync received notification without any type information.";
2285 } 2306 }
2286 } 2307 }
2287 2308
2288 void SyncManager::SyncInternal::OnOutgoingNotification() { 2309 void SyncManager::SyncInternal::OnOutgoingNotification() {
2289 DCHECK_NE(notifier_options_.notification_method, 2310 DCHECK_NE(notifier_options_.notification_method,
2290 notifier::NOTIFICATION_SERVER); 2311 notifier::NOTIFICATION_SERVER);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
2350 DCHECK(data_->initialized()) << "GetUserShare requires initialization!"; 2371 DCHECK(data_->initialized()) << "GetUserShare requires initialization!";
2351 return data_->GetUserShare(); 2372 return data_->GetUserShare();
2352 } 2373 }
2353 2374
2354 bool SyncManager::HasUnsyncedItems() const { 2375 bool SyncManager::HasUnsyncedItems() const {
2355 sync_api::ReadTransaction trans(GetUserShare()); 2376 sync_api::ReadTransaction trans(GetUserShare());
2356 return (trans.GetWrappedTrans()->directory()->unsynced_entity_count() != 0); 2377 return (trans.GetWrappedTrans()->directory()->unsynced_entity_count() != 0);
2357 } 2378 }
2358 2379
2359 } // namespace sync_api 2380 } // namespace sync_api
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698