Index: chrome/browser/chromeos/contacts/contact_manager.cc |
diff --git a/chrome/browser/chromeos/contacts/contact_manager.cc b/chrome/browser/chromeos/contacts/contact_manager.cc |
deleted file mode 100644 |
index 76694e0eb753fc8b7ddd64f40b543592bf3ba069..0000000000000000000000000000000000000000 |
--- a/chrome/browser/chromeos/contacts/contact_manager.cc |
+++ /dev/null |
@@ -1,216 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/chromeos/contacts/contact_manager.h" |
- |
-#include "base/logging.h" |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/chrome_notification_types.h" |
-#include "chrome/browser/chromeos/contacts/contact.pb.h" |
-#include "chrome/browser/chromeos/contacts/contact_manager_observer.h" |
-#include "chrome/browser/chromeos/contacts/contact_store.h" |
-#include "chrome/browser/chromeos/contacts/google_contact_store.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/profiles/profile_manager.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "content/public/browser/notification_service.h" |
- |
-using content::BrowserThread; |
- |
-namespace contacts { |
- |
-namespace { |
- |
-// Singleton instance. |
-ContactManager* g_instance = NULL; |
- |
-} // namespace |
- |
-// static |
-ContactManager* ContactManager::GetInstance() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(g_instance); |
- return g_instance; |
-} |
- |
-ContactManager::ContactManager() |
- : profile_observers_deleter_(&profile_observers_), |
- contact_store_factory_(new GoogleContactStoreFactory), |
- contact_stores_deleter_(&contact_stores_), |
- weak_ptr_factory_(this) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(!g_instance); |
- g_instance = this; |
-} |
- |
-ContactManager::~ContactManager() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK_EQ(g_instance, this); |
- weak_ptr_factory_.InvalidateWeakPtrs(); |
- g_instance = NULL; |
- for (ContactStoreMap::const_iterator it = contact_stores_.begin(); |
- it != contact_stores_.end(); ++it) { |
- it->second->RemoveObserver(this); |
- } |
-} |
- |
-void ContactManager::SetContactStoreForTesting( |
- scoped_ptr<ContactStoreFactory> factory) { |
- DCHECK(contact_stores_.empty()); |
- contact_store_factory_.swap(factory); |
-} |
- |
-void ContactManager::Init() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- registrar_.Add( |
- this, |
- chrome::NOTIFICATION_PROFILE_CREATED, |
- content::NotificationService::AllSources()); |
- registrar_.Add( |
- this, |
- chrome::NOTIFICATION_PROFILE_DESTROYED, |
- content::NotificationService::AllSources()); |
- |
- // Notify about any already-existing profiles. |
- std::vector<Profile*> profiles( |
- g_browser_process->profile_manager()->GetLoadedProfiles()); |
- for (size_t i = 0; i < profiles.size(); ++i) |
- HandleProfileCreated(profiles[i]); |
-} |
- |
-base::WeakPtr<ContactManagerInterface> ContactManager::GetWeakPtr() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- return weak_ptr_factory_.GetWeakPtr(); |
-} |
- |
-void ContactManager::AddObserver(ContactManagerObserver* observer, |
- Profile* profile) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(observer); |
- DCHECK(profile); |
- Observers* observers = GetObserversForProfile(profile, true); |
- observers->AddObserver(observer); |
-} |
- |
-void ContactManager::RemoveObserver(ContactManagerObserver* observer, |
- Profile* profile) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(observer); |
- DCHECK(profile); |
- Observers* observers = GetObserversForProfile(profile, false); |
- if (observers) |
- observers->RemoveObserver(observer); |
-} |
- |
-scoped_ptr<ContactPointers> ContactManager::GetAllContacts(Profile* profile) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(profile); |
- scoped_ptr<ContactPointers> contacts(new ContactPointers); |
- ContactStoreMap::const_iterator it = contact_stores_.find(profile); |
- if (it != contact_stores_.end()) |
- it->second->AppendContacts(contacts.get()); |
- return contacts.Pass(); |
-} |
- |
-const Contact* ContactManager::GetContactById(Profile* profile, |
- const std::string& contact_id) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(profile); |
- ContactStoreMap::const_iterator it = contact_stores_.find(profile); |
- return it != contact_stores_.end() ? |
- it->second->GetContactById(contact_id) : |
- NULL; |
-} |
- |
-void ContactManager::OnContactsUpdated(ContactStore* store) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- for (ContactStoreMap::const_iterator it = contact_stores_.begin(); |
- it != contact_stores_.end(); ++it) { |
- if (it->second == store) { |
- Profile* profile = it->first; |
- Observers* observers = GetObserversForProfile(profile, false); |
- if (observers) { |
- FOR_EACH_OBSERVER(ContactManagerObserver, |
- *observers, |
- OnContactsUpdated(profile)); |
- } |
- return; |
- } |
- } |
- NOTREACHED() << "Got update from unknown contact store " << store; |
-} |
- |
-void ContactManager::Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- switch (type) { |
- case chrome::NOTIFICATION_PROFILE_CREATED: |
- HandleProfileCreated(content::Source<Profile>(source).ptr()); |
- break; |
- case chrome::NOTIFICATION_PROFILE_DESTROYED: { |
- Profile* profile = content::Details<Profile>(details).ptr(); |
- if (profile) |
- HandleProfileDestroyed(profile); |
- break; |
- } |
- default: |
- NOTREACHED() << "Unexpected notification " << type; |
- } |
-} |
- |
-ContactManager::Observers* ContactManager::GetObserversForProfile( |
- Profile* profile, |
- bool create) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- ProfileObserversMap::const_iterator it = profile_observers_.find(profile); |
- if (it != profile_observers_.end()) |
- return it->second; |
- if (!create) |
- return NULL; |
- |
- Observers* observers = new Observers; |
- profile_observers_[profile] = observers; |
- return observers; |
-} |
- |
-void ContactManager::HandleProfileCreated(Profile* profile) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(profile); |
- |
- ContactStoreMap::iterator it = contact_stores_.find(profile); |
- if (it != contact_stores_.end()) |
- return; |
- |
- if (!contact_store_factory_->CanCreateContactStoreForProfile(profile)) |
- return; |
- |
- VLOG(1) << "Adding profile " << profile->GetProfileName(); |
- ContactStore* store = contact_store_factory_->CreateContactStore(profile); |
- DCHECK(store); |
- store->AddObserver(this); |
- store->Init(); |
- DCHECK_EQ(contact_stores_.count(profile), static_cast<size_t>(0)); |
- contact_stores_[profile] = store; |
-} |
- |
-void ContactManager::HandleProfileDestroyed(Profile* profile) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(profile); |
- |
- ContactStoreMap::iterator store_it = contact_stores_.find(profile); |
- if (store_it != contact_stores_.end()) { |
- store_it->second->RemoveObserver(this); |
- delete store_it->second; |
- contact_stores_.erase(store_it); |
- } |
- |
- ProfileObserversMap::iterator observer_it = profile_observers_.find(profile); |
- if (observer_it != profile_observers_.end()) { |
- delete observer_it->second; |
- profile_observers_.erase(observer_it); |
- } |
-} |
- |
-} // namespace contacts |