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

Side by Side Diff: chrome/browser/sync/glue/session_change_processor.cc

Issue 8342048: Make NotificationService an interface in the content namespace, and switch callers to use it. Mov... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/glue/session_change_processor.h" 5 #include "chrome/browser/sync/glue/session_change_processor.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/scoped_vector.h" 12 #include "base/memory/scoped_vector.h"
13 #include "chrome/browser/extensions/extension_tab_helper.h" 13 #include "chrome/browser/extensions/extension_tab_helper.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/sync/api/sync_error.h" 15 #include "chrome/browser/sync/api/sync_error.h"
16 #include "chrome/browser/sync/glue/session_model_associator.h" 16 #include "chrome/browser/sync/glue/session_model_associator.h"
17 #include "chrome/browser/sync/internal_api/change_record.h" 17 #include "chrome/browser/sync/internal_api/change_record.h"
18 #include "chrome/browser/sync/internal_api/read_node.h" 18 #include "chrome/browser/sync/internal_api/read_node.h"
19 #include "chrome/browser/sync/profile_sync_service.h" 19 #include "chrome/browser/sync/profile_sync_service.h"
20 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 20 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
21 #include "chrome/common/chrome_notification_types.h" 21 #include "chrome/common/chrome_notification_types.h"
22 #include "content/browser/tab_contents/navigation_controller.h" 22 #include "content/browser/tab_contents/navigation_controller.h"
23 #include "content/browser/tab_contents/tab_contents.h" 23 #include "content/browser/tab_contents/tab_contents.h"
24 #include "content/common/notification_service.h" 24 #include "content/public/browser/notification_service.h"
25 #include "content/public/browser/notification_details.h" 25 #include "content/public/browser/notification_details.h"
26 #include "content/public/browser/notification_source.h" 26 #include "content/public/browser/notification_source.h"
27 27
28 namespace browser_sync { 28 namespace browser_sync {
29 29
30 namespace { 30 namespace {
31 31
32 // Extract the source SyncedTabDelegate from a NotificationSource originating 32 // Extract the source SyncedTabDelegate from a NotificationSource originating
33 // from a NavigationController, if it exists. Returns |NULL| otherwise. 33 // from a NavigationController, if it exists. Returns |NULL| otherwise.
34 SyncedTabDelegate* ExtractSyncedTabDelegate( 34 SyncedTabDelegate* ExtractSyncedTabDelegate(
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 LOG(WARNING) << "Dropping modification to local session."; 263 LOG(WARNING) << "Dropping modification to local session.";
264 StartObserving(); 264 StartObserving();
265 return; 265 return;
266 } 266 }
267 const base::Time& mtime = sync_node.GetModificationTime(); 267 const base::Time& mtime = sync_node.GetModificationTime();
268 // The model associator handles foreign session updates and adds the same. 268 // The model associator handles foreign session updates and adds the same.
269 session_model_associator_->AssociateForeignSpecifics(specifics, mtime); 269 session_model_associator_->AssociateForeignSpecifics(specifics, mtime);
270 } 270 }
271 271
272 // Notify foreign session handlers that there are new sessions. 272 // Notify foreign session handlers that there are new sessions.
273 NotificationService::current()->Notify( 273 content::NotificationService::current()->Notify(
274 chrome::NOTIFICATION_FOREIGN_SESSION_UPDATED, 274 chrome::NOTIFICATION_FOREIGN_SESSION_UPDATED,
275 content::Source<Profile>(profile_), 275 content::Source<Profile>(profile_),
276 NotificationService::NoDetails()); 276 content::NotificationService::NoDetails());
277 277
278 StartObserving(); 278 StartObserving();
279 } 279 }
280 280
281 void SessionChangeProcessor::StartImpl(Profile* profile) { 281 void SessionChangeProcessor::StartImpl(Profile* profile) {
282 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 282 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
283 DCHECK(profile); 283 DCHECK(profile);
284 DCHECK(profile_ == NULL); 284 DCHECK(profile_ == NULL);
285 profile_ = profile; 285 profile_ = profile;
286 StartObserving(); 286 StartObserving();
287 } 287 }
288 288
289 void SessionChangeProcessor::StopImpl() { 289 void SessionChangeProcessor::StopImpl() {
290 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 290 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
291 StopObserving(); 291 StopObserving();
292 profile_ = NULL; 292 profile_ = NULL;
293 } 293 }
294 294
295 void SessionChangeProcessor::StartObserving() { 295 void SessionChangeProcessor::StartObserving() {
296 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 296 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
297 DCHECK(profile_); 297 DCHECK(profile_);
298 notification_registrar_.Add(this, content::NOTIFICATION_TAB_PARENTED, 298 notification_registrar_.Add(this, content::NOTIFICATION_TAB_PARENTED,
299 NotificationService::AllSources()); 299 content::NotificationService::AllSources());
300 notification_registrar_.Add(this, content::NOTIFICATION_TAB_CLOSED, 300 notification_registrar_.Add(this, content::NOTIFICATION_TAB_CLOSED,
301 NotificationService::AllSources()); 301 content::NotificationService::AllSources());
302 notification_registrar_.Add(this, content::NOTIFICATION_NAV_LIST_PRUNED, 302 notification_registrar_.Add(this, content::NOTIFICATION_NAV_LIST_PRUNED,
303 NotificationService::AllSources()); 303 content::NotificationService::AllSources());
304 notification_registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_CHANGED, 304 notification_registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_CHANGED,
305 NotificationService::AllSources()); 305 content::NotificationService::AllSources());
306 notification_registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, 306 notification_registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
307 NotificationService::AllSources()); 307 content::NotificationService::AllSources());
308 notification_registrar_.Add(this, chrome::NOTIFICATION_BROWSER_OPENED, 308 notification_registrar_.Add(this, chrome::NOTIFICATION_BROWSER_OPENED,
309 NotificationService::AllBrowserContextsAndSources()); 309 content::NotificationService::AllBrowserContextsAndSources());
310 notification_registrar_.Add(this, 310 notification_registrar_.Add(this,
311 chrome::NOTIFICATION_TAB_CONTENTS_APPLICATION_EXTENSION_CHANGED, 311 chrome::NOTIFICATION_TAB_CONTENTS_APPLICATION_EXTENSION_CHANGED,
312 NotificationService::AllSources()); 312 content::NotificationService::AllSources());
313 notification_registrar_.Add(this, 313 notification_registrar_.Add(this,
314 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, 314 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME,
315 NotificationService::AllBrowserContextsAndSources()); 315 content::NotificationService::AllBrowserContextsAndSources());
316 } 316 }
317 317
318 void SessionChangeProcessor::StopObserving() { 318 void SessionChangeProcessor::StopObserving() {
319 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 319 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
320 DCHECK(profile_); 320 DCHECK(profile_);
321 notification_registrar_.RemoveAll(); 321 notification_registrar_.RemoveAll();
322 } 322 }
323 323
324 } // namespace browser_sync 324 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698