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

Side by Side Diff: sync/protocol/proto_value_conversions_unittest.cc

Issue 1866243002: Convert //sync from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 // Keep this file in sync with the .proto files in this directory. 5 // Keep this file in sync with the .proto files in this directory.
6 6
7 #include "sync/protocol/proto_value_conversions.h" 7 #include "sync/protocol/proto_value_conversions.h"
8 8
9 #include <memory>
9 #include <string> 10 #include <string>
10 11
11 #include "base/memory/scoped_ptr.h"
12 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
13 #include "base/time/time.h" 13 #include "base/time/time.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "sync/internal_api/public/base/model_type.h" 15 #include "sync/internal_api/public/base/model_type.h"
16 #include "sync/protocol/app_notification_specifics.pb.h" 16 #include "sync/protocol/app_notification_specifics.pb.h"
17 #include "sync/protocol/app_setting_specifics.pb.h" 17 #include "sync/protocol/app_setting_specifics.pb.h"
18 #include "sync/protocol/app_specifics.pb.h" 18 #include "sync/protocol/app_specifics.pb.h"
19 #include "sync/protocol/autofill_specifics.pb.h" 19 #include "sync/protocol/autofill_specifics.pb.h"
20 #include "sync/protocol/bookmark_specifics.pb.h" 20 #include "sync/protocol/bookmark_specifics.pb.h"
21 #include "sync/protocol/device_info_specifics.pb.h" 21 #include "sync/protocol/device_info_specifics.pb.h"
(...skipping 19 matching lines...) Expand all
41 #include "sync/protocol/wifi_credential_specifics.pb.h" 41 #include "sync/protocol/wifi_credential_specifics.pb.h"
42 #include "testing/gtest/include/gtest/gtest.h" 42 #include "testing/gtest/include/gtest/gtest.h"
43 43
44 namespace syncer { 44 namespace syncer {
45 namespace { 45 namespace {
46 46
47 class ProtoValueConversionsTest : public testing::Test { 47 class ProtoValueConversionsTest : public testing::Test {
48 protected: 48 protected:
49 template <class T> 49 template <class T>
50 void TestSpecificsToValue( 50 void TestSpecificsToValue(
51 scoped_ptr<base::DictionaryValue>(*specifics_to_value)(const T&)) { 51 std::unique_ptr<base::DictionaryValue> (*specifics_to_value)(const T&)) {
52 const T& specifics(T::default_instance()); 52 const T& specifics(T::default_instance());
53 scoped_ptr<base::DictionaryValue> value = specifics_to_value(specifics); 53 std::unique_ptr<base::DictionaryValue> value =
54 specifics_to_value(specifics);
54 // We can't do much but make sure that this doesn't crash. 55 // We can't do much but make sure that this doesn't crash.
55 } 56 }
56 }; 57 };
57 58
58 TEST_F(ProtoValueConversionsTest, ProtoChangeCheck) { 59 TEST_F(ProtoValueConversionsTest, ProtoChangeCheck) {
59 // If this number changes, that means we added or removed a data 60 // If this number changes, that means we added or removed a data
60 // type. Don't forget to add a unit test for {New 61 // type. Don't forget to add a unit test for {New
61 // type}SpecificsToValue below. 62 // type}SpecificsToValue below.
62 EXPECT_EQ(36, MODEL_TYPE_COUNT); 63 EXPECT_EQ(36, MODEL_TYPE_COUNT);
63 64
(...skipping 24 matching lines...) Expand all
88 TestSpecificsToValue(TabNavigationToValue); 89 TestSpecificsToValue(TabNavigationToValue);
89 } 90 }
90 91
91 TEST_F(ProtoValueConversionsTest, NavigationRedirectToValue) { 92 TEST_F(ProtoValueConversionsTest, NavigationRedirectToValue) {
92 TestSpecificsToValue(NavigationRedirectToValue); 93 TestSpecificsToValue(NavigationRedirectToValue);
93 } 94 }
94 95
95 TEST_F(ProtoValueConversionsTest, PasswordSpecificsData) { 96 TEST_F(ProtoValueConversionsTest, PasswordSpecificsData) {
96 sync_pb::PasswordSpecificsData specifics; 97 sync_pb::PasswordSpecificsData specifics;
97 specifics.set_password_value("secret"); 98 specifics.set_password_value("secret");
98 scoped_ptr<base::DictionaryValue> value( 99 std::unique_ptr<base::DictionaryValue> value(
99 PasswordSpecificsDataToValue(specifics)); 100 PasswordSpecificsDataToValue(specifics));
100 EXPECT_FALSE(value->empty()); 101 EXPECT_FALSE(value->empty());
101 std::string password_value; 102 std::string password_value;
102 EXPECT_TRUE(value->GetString("password_value", &password_value)); 103 EXPECT_TRUE(value->GetString("password_value", &password_value));
103 EXPECT_EQ("<redacted>", password_value); 104 EXPECT_EQ("<redacted>", password_value);
104 } 105 }
105 106
106 TEST_F(ProtoValueConversionsTest, AppListSpecificsToValue) { 107 TEST_F(ProtoValueConversionsTest, AppListSpecificsToValue) {
107 TestSpecificsToValue(AppListSpecificsToValue); 108 TestSpecificsToValue(AppListSpecificsToValue);
108 } 109 }
109 110
110 TEST_F(ProtoValueConversionsTest, AppNotificationToValue) { 111 TEST_F(ProtoValueConversionsTest, AppNotificationToValue) {
111 TestSpecificsToValue(AppNotificationToValue); 112 TestSpecificsToValue(AppNotificationToValue);
112 } 113 }
113 114
114 TEST_F(ProtoValueConversionsTest, AppSettingSpecificsToValue) { 115 TEST_F(ProtoValueConversionsTest, AppSettingSpecificsToValue) {
115 sync_pb::AppNotificationSettings specifics; 116 sync_pb::AppNotificationSettings specifics;
116 specifics.set_disabled(true); 117 specifics.set_disabled(true);
117 specifics.set_oauth_client_id("some_id_value"); 118 specifics.set_oauth_client_id("some_id_value");
118 scoped_ptr<base::DictionaryValue> value(AppSettingsToValue(specifics)); 119 std::unique_ptr<base::DictionaryValue> value(AppSettingsToValue(specifics));
119 EXPECT_FALSE(value->empty()); 120 EXPECT_FALSE(value->empty());
120 bool disabled_value = false; 121 bool disabled_value = false;
121 std::string oauth_client_id_value; 122 std::string oauth_client_id_value;
122 EXPECT_TRUE(value->GetBoolean("disabled", &disabled_value)); 123 EXPECT_TRUE(value->GetBoolean("disabled", &disabled_value));
123 EXPECT_EQ(true, disabled_value); 124 EXPECT_EQ(true, disabled_value);
124 EXPECT_TRUE(value->GetString("oauth_client_id", &oauth_client_id_value)); 125 EXPECT_TRUE(value->GetString("oauth_client_id", &oauth_client_id_value));
125 EXPECT_EQ("some_id_value", oauth_client_id_value); 126 EXPECT_EQ("some_id_value", oauth_client_id_value);
126 } 127 }
127 128
128 TEST_F(ProtoValueConversionsTest, AppSpecificsToValue) { 129 TEST_F(ProtoValueConversionsTest, AppSpecificsToValue) {
(...skipping 26 matching lines...) Expand all
155 sync_pb::BookmarkSpecifics specifics; 156 sync_pb::BookmarkSpecifics specifics;
156 specifics.set_creation_time_us(creation_time.ToInternalValue()); 157 specifics.set_creation_time_us(creation_time.ToInternalValue());
157 specifics.set_icon_url(icon_url); 158 specifics.set_icon_url(icon_url);
158 sync_pb::MetaInfo* meta_1 = specifics.add_meta_info(); 159 sync_pb::MetaInfo* meta_1 = specifics.add_meta_info();
159 meta_1->set_key("key1"); 160 meta_1->set_key("key1");
160 meta_1->set_value("value1"); 161 meta_1->set_value("value1");
161 sync_pb::MetaInfo* meta_2 = specifics.add_meta_info(); 162 sync_pb::MetaInfo* meta_2 = specifics.add_meta_info();
162 meta_2->set_key("key2"); 163 meta_2->set_key("key2");
163 meta_2->set_value("value2"); 164 meta_2->set_value("value2");
164 165
165 scoped_ptr<base::DictionaryValue> value(BookmarkSpecificsToValue(specifics)); 166 std::unique_ptr<base::DictionaryValue> value(
167 BookmarkSpecificsToValue(specifics));
166 EXPECT_FALSE(value->empty()); 168 EXPECT_FALSE(value->empty());
167 std::string encoded_time; 169 std::string encoded_time;
168 EXPECT_TRUE(value->GetString("creation_time_us", &encoded_time)); 170 EXPECT_TRUE(value->GetString("creation_time_us", &encoded_time));
169 EXPECT_EQ(base::Int64ToString(creation_time.ToInternalValue()), encoded_time); 171 EXPECT_EQ(base::Int64ToString(creation_time.ToInternalValue()), encoded_time);
170 std::string encoded_icon_url; 172 std::string encoded_icon_url;
171 EXPECT_TRUE(value->GetString("icon_url", &encoded_icon_url)); 173 EXPECT_TRUE(value->GetString("icon_url", &encoded_icon_url));
172 EXPECT_EQ(icon_url, encoded_icon_url); 174 EXPECT_EQ(icon_url, encoded_icon_url);
173 base::ListValue* meta_info_list; 175 base::ListValue* meta_info_list;
174 ASSERT_TRUE(value->GetList("meta_info", &meta_info_list)); 176 ASSERT_TRUE(value->GetList("meta_info", &meta_info_list));
175 EXPECT_EQ(2u, meta_info_list->GetSize()); 177 EXPECT_EQ(2u, meta_info_list->GetSize());
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 SET_FIELD(synced_notification); 327 SET_FIELD(synced_notification);
326 SET_FIELD(synced_notification_app_info); 328 SET_FIELD(synced_notification_app_info);
327 SET_FIELD(theme); 329 SET_FIELD(theme);
328 SET_FIELD(typed_url); 330 SET_FIELD(typed_url);
329 SET_FIELD(wifi_credential); 331 SET_FIELD(wifi_credential);
330 SET_FIELD(autofill_wallet); 332 SET_FIELD(autofill_wallet);
331 SET_FIELD(wallet_metadata); 333 SET_FIELD(wallet_metadata);
332 334
333 #undef SET_FIELD 335 #undef SET_FIELD
334 336
335 scoped_ptr<base::DictionaryValue> value(EntitySpecificsToValue(specifics)); 337 std::unique_ptr<base::DictionaryValue> value(
338 EntitySpecificsToValue(specifics));
336 EXPECT_EQ(MODEL_TYPE_COUNT - FIRST_REAL_MODEL_TYPE - 339 EXPECT_EQ(MODEL_TYPE_COUNT - FIRST_REAL_MODEL_TYPE -
337 (LAST_PROXY_TYPE - FIRST_PROXY_TYPE + 1), 340 (LAST_PROXY_TYPE - FIRST_PROXY_TYPE + 1),
338 static_cast<int>(value->size())); 341 static_cast<int>(value->size()));
339 } 342 }
340 343
341 namespace { 344 namespace {
342 // Returns whether the given value has specifics under the entries in the given 345 // Returns whether the given value has specifics under the entries in the given
343 // path. 346 // path.
344 bool ValueHasSpecifics(const base::DictionaryValue& value, 347 bool ValueHasSpecifics(const base::DictionaryValue& value,
345 const std::string& path) { 348 const std::string& path) {
(...skipping 13 matching lines...) Expand all
359 } // namespace 362 } // namespace
360 363
361 // Create a ClientToServerMessage with an EntitySpecifics. Converting it to 364 // Create a ClientToServerMessage with an EntitySpecifics. Converting it to
362 // a value should respect the |include_specifics| flag. 365 // a value should respect the |include_specifics| flag.
363 TEST_F(ProtoValueConversionsTest, ClientToServerMessageToValue) { 366 TEST_F(ProtoValueConversionsTest, ClientToServerMessageToValue) {
364 sync_pb::ClientToServerMessage message; 367 sync_pb::ClientToServerMessage message;
365 sync_pb::CommitMessage* commit_message = message.mutable_commit(); 368 sync_pb::CommitMessage* commit_message = message.mutable_commit();
366 sync_pb::SyncEntity* entity = commit_message->add_entries(); 369 sync_pb::SyncEntity* entity = commit_message->add_entries();
367 entity->mutable_specifics(); 370 entity->mutable_specifics();
368 371
369 scoped_ptr<base::DictionaryValue> value_with_specifics( 372 std::unique_ptr<base::DictionaryValue> value_with_specifics(
370 ClientToServerMessageToValue(message, true /* include_specifics */)); 373 ClientToServerMessageToValue(message, true /* include_specifics */));
371 EXPECT_FALSE(value_with_specifics->empty()); 374 EXPECT_FALSE(value_with_specifics->empty());
372 EXPECT_TRUE(ValueHasSpecifics(*(value_with_specifics.get()), 375 EXPECT_TRUE(ValueHasSpecifics(*(value_with_specifics.get()),
373 "commit.entries")); 376 "commit.entries"));
374 377
375 scoped_ptr<base::DictionaryValue> value_without_specifics( 378 std::unique_ptr<base::DictionaryValue> value_without_specifics(
376 ClientToServerMessageToValue(message, false /* include_specifics */)); 379 ClientToServerMessageToValue(message, false /* include_specifics */));
377 EXPECT_FALSE(value_without_specifics->empty()); 380 EXPECT_FALSE(value_without_specifics->empty());
378 EXPECT_FALSE(ValueHasSpecifics(*(value_without_specifics.get()), 381 EXPECT_FALSE(ValueHasSpecifics(*(value_without_specifics.get()),
379 "commit.entries")); 382 "commit.entries"));
380 } 383 }
381 384
382 // Create a ClientToServerResponse with an EntitySpecifics. Converting it to 385 // Create a ClientToServerResponse with an EntitySpecifics. Converting it to
383 // a value should respect the |include_specifics| flag. 386 // a value should respect the |include_specifics| flag.
384 TEST_F(ProtoValueConversionsTest, ClientToServerResponseToValue) { 387 TEST_F(ProtoValueConversionsTest, ClientToServerResponseToValue) {
385 sync_pb::ClientToServerResponse message; 388 sync_pb::ClientToServerResponse message;
386 sync_pb::GetUpdatesResponse* response = message.mutable_get_updates(); 389 sync_pb::GetUpdatesResponse* response = message.mutable_get_updates();
387 sync_pb::SyncEntity* entity = response->add_entries(); 390 sync_pb::SyncEntity* entity = response->add_entries();
388 entity->mutable_specifics(); 391 entity->mutable_specifics();
389 392
390 scoped_ptr<base::DictionaryValue> value_with_specifics( 393 std::unique_ptr<base::DictionaryValue> value_with_specifics(
391 ClientToServerResponseToValue(message, true /* include_specifics */)); 394 ClientToServerResponseToValue(message, true /* include_specifics */));
392 EXPECT_FALSE(value_with_specifics->empty()); 395 EXPECT_FALSE(value_with_specifics->empty());
393 EXPECT_TRUE(ValueHasSpecifics(*(value_with_specifics.get()), 396 EXPECT_TRUE(ValueHasSpecifics(*(value_with_specifics.get()),
394 "get_updates.entries")); 397 "get_updates.entries"));
395 398
396 scoped_ptr<base::DictionaryValue> value_without_specifics( 399 std::unique_ptr<base::DictionaryValue> value_without_specifics(
397 ClientToServerResponseToValue(message, false /* include_specifics */)); 400 ClientToServerResponseToValue(message, false /* include_specifics */));
398 EXPECT_FALSE(value_without_specifics->empty()); 401 EXPECT_FALSE(value_without_specifics->empty());
399 EXPECT_FALSE(ValueHasSpecifics(*(value_without_specifics.get()), 402 EXPECT_FALSE(ValueHasSpecifics(*(value_without_specifics.get()),
400 "get_updates.entries")); 403 "get_updates.entries"));
401 } 404 }
402 405
403 TEST_F(ProtoValueConversionsTest, AttachmentIdProtoToValue) { 406 TEST_F(ProtoValueConversionsTest, AttachmentIdProtoToValue) {
404 TestSpecificsToValue(AttachmentIdProtoToValue); 407 TestSpecificsToValue(AttachmentIdProtoToValue);
405 } 408 }
406 409
407 } // namespace 410 } // namespace
408 } // namespace syncer 411 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698