OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/chromeos/contacts/fake_contact_store.h" | |
6 | |
7 #include <utility> | |
8 | |
9 #include "chrome/browser/chromeos/contacts/contact.pb.h" | |
10 #include "chrome/browser/chromeos/contacts/contact_store_observer.h" | |
11 #include "chrome/browser/profiles/profile.h" | |
12 #include "content/public/browser/browser_thread.h" | |
13 | |
14 using content::BrowserThread; | |
15 | |
16 namespace contacts { | |
17 | |
18 FakeContactStore::FakeContactStore(FakeContactStoreFactory* factory) | |
19 : factory_(factory), | |
20 contacts_deleter_(&contacts_) { | |
21 } | |
22 | |
23 FakeContactStore::~FakeContactStore() { | |
24 factory_->RemoveStore(this); | |
25 } | |
26 | |
27 void FakeContactStore::SetContacts(const ContactPointers& contacts) { | |
28 STLDeleteValues(&contacts_); | |
29 contacts_.clear(); | |
30 for (ContactPointers::const_iterator it = contacts.begin(); | |
31 it != contacts.end(); ++it) { | |
32 contacts_[(*it)->contact_id()] = new Contact(**it); | |
33 } | |
34 } | |
35 | |
36 void FakeContactStore::NotifyObserversAboutContactsUpdate() { | |
37 FOR_EACH_OBSERVER(ContactStoreObserver, | |
38 observers_, | |
39 OnContactsUpdated(this)); | |
40 } | |
41 | |
42 void FakeContactStore::Init() { | |
43 } | |
44 | |
45 void FakeContactStore::AppendContacts(ContactPointers* contacts_out) { | |
46 CHECK(contacts_out); | |
47 for (ContactMap::const_iterator it = contacts_.begin(); | |
48 it != contacts_.end(); ++it) { | |
49 if (!it->second->deleted()) | |
50 contacts_out->push_back(it->second); | |
51 } | |
52 } | |
53 | |
54 const Contact* FakeContactStore::GetContactById(const std::string& contact_id) { | |
55 ContactMap::const_iterator it = contacts_.find(contact_id); | |
56 return (it != contacts_.end() && !it->second->deleted()) ? it->second : NULL; | |
57 } | |
58 | |
59 void FakeContactStore::AddObserver(ContactStoreObserver* observer) { | |
60 CHECK(observer); | |
61 observers_.AddObserver(observer); | |
62 } | |
63 | |
64 void FakeContactStore::RemoveObserver(ContactStoreObserver* observer) { | |
65 CHECK(observer); | |
66 observers_.RemoveObserver(observer); | |
67 } | |
68 | |
69 FakeContactStoreFactory::FakeContactStoreFactory() | |
70 : permit_store_creation_(true) { | |
71 } | |
72 | |
73 FakeContactStoreFactory::~FakeContactStoreFactory() { | |
74 CHECK(stores_.empty()); | |
75 } | |
76 | |
77 FakeContactStore* FakeContactStoreFactory::GetContactStoreForProfile( | |
78 Profile* profile) { | |
79 CHECK(profile); | |
80 ProfileStoreMap::const_iterator it = stores_.find(profile); | |
81 return it != stores_.end() ? it->second : NULL; | |
82 } | |
83 | |
84 void FakeContactStoreFactory::RemoveStore(FakeContactStore* store) { | |
85 CHECK(store); | |
86 for (ProfileStoreMap::iterator it = stores_.begin(); | |
87 it != stores_.end(); ++it) { | |
88 if (it->second == store) { | |
89 stores_.erase(it); | |
90 return; | |
91 } | |
92 } | |
93 NOTREACHED() << "No record of destroyed FakeContactStore " << store; | |
94 } | |
95 | |
96 bool FakeContactStoreFactory::CanCreateContactStoreForProfile( | |
97 Profile* profile) { | |
98 CHECK(profile); | |
99 return permit_store_creation_; | |
100 } | |
101 | |
102 ContactStore* FakeContactStoreFactory::CreateContactStore(Profile* profile) { | |
103 CHECK(profile); | |
104 CHECK(CanCreateContactStoreForProfile(profile)); | |
105 FakeContactStore* store = new FakeContactStore(this); | |
106 CHECK(stores_.insert(std::make_pair(profile, store)).second) | |
107 << "Got request to create second FakeContactStore for profile " | |
108 << profile << " (" << profile->GetProfileName() << ")"; | |
109 return store; | |
110 } | |
111 | |
112 } // namespace contacts | |
OLD | NEW |