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

Side by Side Diff: chrome/browser/chromeos/contacts/contact_test_util.cc

Issue 190063004: chromeos: Delete old, unused contacts code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge again Created 6 years, 9 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
(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/contact_test_util.h"
6
7 #include <algorithm>
8 #include <vector>
9
10 #include "base/bind.h"
11 #include "base/logging.h"
12 #include "base/strings/string_number_conversions.h"
13 #include "base/strings/string_util.h"
14 #include "base/time/time.h"
15 #include "chrome/browser/chromeos/contacts/contact_map.h"
16 #include "third_party/skia/include/core/SkBitmap.h"
17 #include "third_party/skia/include/core/SkCanvas.h"
18 #include "ui/gfx/codec/png_codec.h"
19 #include "ui/gfx/size.h"
20
21 namespace contacts {
22 namespace test {
23
24 namespace {
25
26 // Invokes |stringify_callback| on each item in |items| and prepends |prefix|,
27 // and then sorts the resulting strings and joins them using |join_char|.
28 template<class T>
29 std::string StringifyField(
30 const ::google::protobuf::RepeatedPtrField<T>& items,
31 base::Callback<std::string(const T&)> stringify_callback,
32 const std::string& prefix,
33 char join_char) {
34 std::vector<std::string> strings;
35 for (int i = 0; i < items.size(); ++i)
36 strings.push_back(prefix + stringify_callback.Run(items.Get(i)));
37 std::sort(strings.begin(), strings.end());
38 return JoinString(strings, join_char);
39 }
40
41 std::string EmailAddressToString(const Contact_EmailAddress& email) {
42 return email.address() + "," +
43 base::IntToString(email.type().relation()) + "," +
44 email.type().label() + "," +
45 base::IntToString(email.primary());
46 }
47
48 std::string PhoneNumberToString(const Contact_PhoneNumber& phone) {
49 return phone.number() + "," +
50 base::IntToString(phone.type().relation()) + "," +
51 phone.type().label() + "," +
52 base::IntToString(phone.primary());
53 }
54
55 std::string PostalAddressToString(const Contact_PostalAddress& postal) {
56 return postal.address() + "," +
57 base::IntToString(postal.type().relation()) + "," +
58 postal.type().label() + "," +
59 base::IntToString(postal.primary());
60 }
61
62 std::string InstantMessagingAddressToString(
63 const Contact_InstantMessagingAddress& im) {
64 return im.address() + "," +
65 base::IntToString(im.protocol()) + "," +
66 base::IntToString(im.type().relation()) + "," +
67 im.type().label() + "," +
68 base::IntToString(im.primary());
69 }
70
71 } // namespace
72
73 std::string ContactToString(const Contact& contact) {
74 std::string result =
75 contact.contact_id() + "," +
76 base::Int64ToString(contact.update_time()) + "," +
77 base::IntToString(contact.deleted()) + "," +
78 contact.full_name() + "," +
79 contact.given_name() + "," +
80 contact.additional_name() + "," +
81 contact.family_name() + "," +
82 contact.name_prefix() + "," +
83 contact.name_suffix();
84
85 SkBitmap bitmap;
86 if (contact.has_raw_untrusted_photo()) {
87 // Testing code just uses PNG for now. If that changes, use ImageDecoder
88 // here instead.
89 CHECK(gfx::PNGCodec::Decode(reinterpret_cast<const unsigned char*>(
90 contact.raw_untrusted_photo().data()),
91 contact.raw_untrusted_photo().size(),
92 &bitmap));
93 }
94 result += "," + base::IntToString(bitmap.width()) + "x" +
95 base::IntToString(bitmap.height());
96
97 result += " " + StringifyField(contact.email_addresses(),
98 base::Bind(EmailAddressToString),
99 "email=", ' ');
100 result += " " + StringifyField(contact.phone_numbers(),
101 base::Bind(PhoneNumberToString),
102 "phone=", ' ');
103 result += " " + StringifyField(contact.postal_addresses(),
104 base::Bind(PostalAddressToString),
105 "postal=", ' ');
106 result += " " + StringifyField(contact.instant_messaging_addresses(),
107 base::Bind(InstantMessagingAddressToString),
108 "im=", ' ');
109
110 return result;
111 }
112
113 std::string ContactsToString(const ContactPointers& contacts) {
114 std::vector<std::string> contact_strings;
115 for (size_t i = 0; i < contacts.size(); ++i)
116 contact_strings.push_back(ContactToString(*contacts[i]));
117 std::sort(contact_strings.begin(), contact_strings.end());
118 return JoinString(contact_strings, '\n');
119 }
120
121 std::string ContactsToString(const ScopedVector<Contact>& contacts) {
122 ContactPointers pointers;
123 for (size_t i = 0; i < contacts.size(); ++i)
124 pointers.push_back(contacts[i]);
125 return ContactsToString(pointers);
126 }
127
128 std::string VarContactsToString(int num_contacts, ...) {
129 ContactPointers contacts;
130 va_list list;
131 va_start(list, num_contacts);
132 for (int i = 0; i < num_contacts; ++i)
133 contacts.push_back(va_arg(list, const Contact*));
134 va_end(list);
135 return ContactsToString(contacts);
136 }
137
138 std::string ContactMapToString(const ContactMap& contact_map) {
139 ContactPointers contacts;
140 for (ContactMap::const_iterator it = contact_map.begin();
141 it != contact_map.end(); ++it) {
142 contacts.push_back(it->second);
143 }
144 return ContactsToString(contacts);
145 }
146
147 void CopyContacts(const ContactPointers& source,
148 ScopedVector<Contact>* dest) {
149 DCHECK(dest);
150 dest->clear();
151 for (size_t i = 0; i < source.size(); ++i)
152 dest->push_back(new Contact(*source[i]));
153 }
154
155 void CopyContacts(const ScopedVector<Contact>& source,
156 ScopedVector<Contact>* dest) {
157 ContactPointers pointers;
158 for (size_t i = 0; i < source.size(); ++i)
159 pointers.push_back(source[i]);
160 CopyContacts(pointers, dest);
161 }
162
163 void InitContact(const std::string& contact_id,
164 const std::string& name_suffix,
165 bool deleted,
166 Contact* contact) {
167 DCHECK(contact);
168 contact->Clear();
169 contact->set_contact_id(contact_id);
170 contact->set_update_time(base::Time::Now().ToInternalValue());
171 contact->set_deleted(deleted);
172 contact->set_full_name("full_name_" + name_suffix);
173 contact->set_given_name("given_name_" + name_suffix);
174 contact->set_additional_name("additional_name_" + name_suffix);
175 contact->set_family_name("family_name_" + name_suffix);
176 contact->set_name_prefix("name_prefix_" + name_suffix);
177 contact->set_name_suffix("name_suffix_" + name_suffix);
178 }
179
180 void AddEmailAddress(const std::string& address,
181 Contact_AddressType_Relation relation,
182 const std::string& label,
183 bool primary,
184 Contact* contact) {
185 DCHECK(contact);
186 Contact::EmailAddress* email = contact->add_email_addresses();
187 email->set_address(address);
188 email->mutable_type()->set_relation(relation);
189 email->mutable_type()->set_label(label);
190 email->set_primary(primary);
191 }
192
193 void AddPhoneNumber(const std::string& number,
194 Contact_AddressType_Relation relation,
195 const std::string& label,
196 bool primary,
197 Contact* contact) {
198 DCHECK(contact);
199 Contact::PhoneNumber* phone = contact->add_phone_numbers();
200 phone->set_number(number);
201 phone->mutable_type()->set_relation(relation);
202 phone->mutable_type()->set_label(label);
203 phone->set_primary(primary);
204 }
205
206 void AddPostalAddress(const std::string& address,
207 Contact_AddressType_Relation relation,
208 const std::string& label,
209 bool primary,
210 Contact* contact) {
211 DCHECK(contact);
212 Contact::PostalAddress* postal = contact->add_postal_addresses();
213 postal->set_address(address);
214 postal->mutable_type()->set_relation(relation);
215 postal->mutable_type()->set_label(label);
216 postal->set_primary(primary);
217 }
218
219 void AddInstantMessagingAddress(
220 const std::string& address,
221 Contact_InstantMessagingAddress_Protocol protocol,
222 Contact_AddressType_Relation relation,
223 const std::string& label,
224 bool primary,
225 Contact* contact) {
226 DCHECK(contact);
227 Contact::InstantMessagingAddress* im =
228 contact->add_instant_messaging_addresses();
229 im->set_address(address);
230 im->set_protocol(protocol);
231 im->mutable_type()->set_relation(relation);
232 im->mutable_type()->set_label(label);
233 im->set_primary(primary);
234 }
235
236 void SetPhoto(const gfx::Size& size, Contact* contact) {
237 DCHECK(contact);
238 if (size.IsEmpty()) {
239 contact->clear_raw_untrusted_photo();
240 return;
241 }
242
243 SkBitmap bitmap;
244 bitmap.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height());
245 bitmap.allocPixels();
246 SkCanvas canvas(bitmap);
247 canvas.clear(SK_ColorBLACK);
248
249 std::vector<unsigned char> png_photo;
250 CHECK(gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &png_photo));
251 contact->set_raw_untrusted_photo(&png_photo[0], png_photo.size());
252 }
253
254 } // namespace test
255 } // namespace contacts
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/contacts/contact_test_util.h ('k') | chrome/browser/chromeos/contacts/fake_contact_database.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698