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

Side by Side Diff: chrome/browser/extensions/app_sync_data_unittest.cc

Issue 996213005: Don't crash when trying to create an ExtensionSyncData from invalid SyncData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 5 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
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 #include "chrome/browser/extensions/app_sync_data.h" 5 #include "chrome/browser/extensions/app_sync_data.h"
6 6
7 #include "sync/api/string_ordinal.h" 7 #include "sync/api/string_ordinal.h"
8 #include "sync/protocol/app_specifics.pb.h" 8 #include "sync/protocol/app_specifics.pb.h"
9 #include "sync/protocol/sync.pb.h" 9 #include "sync/protocol/sync.pb.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 30 matching lines...) Expand all
41 app_specifics->set_app_launch_ordinal( 41 app_specifics->set_app_launch_ordinal(
42 syncer::StringOrdinal::CreateInitialOrdinal().ToInternalValue()); 42 syncer::StringOrdinal::CreateInitialOrdinal().ToInternalValue());
43 app_specifics->set_page_ordinal( 43 app_specifics->set_page_ordinal(
44 syncer::StringOrdinal::CreateInitialOrdinal().ToInternalValue()); 44 syncer::StringOrdinal::CreateInitialOrdinal().ToInternalValue());
45 45
46 SetRequiredExtensionValues(app_specifics->mutable_extension()); 46 SetRequiredExtensionValues(app_specifics->mutable_extension());
47 47
48 syncer::SyncData sync_data = 48 syncer::SyncData sync_data =
49 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity); 49 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity);
50 50
51 AppSyncData app_sync_data(sync_data); 51 scoped_ptr<AppSyncData> app_sync_data =
52 AppSyncData::CreateFromSyncData(sync_data);
53 ASSERT_TRUE(app_sync_data.get());
52 EXPECT_EQ(app_specifics->app_launch_ordinal(), 54 EXPECT_EQ(app_specifics->app_launch_ordinal(),
53 app_sync_data.app_launch_ordinal().ToInternalValue()); 55 app_sync_data->app_launch_ordinal().ToInternalValue());
54 EXPECT_EQ(app_specifics->page_ordinal(), 56 EXPECT_EQ(app_specifics->page_ordinal(),
55 app_sync_data.page_ordinal().ToInternalValue()); 57 app_sync_data->page_ordinal().ToInternalValue());
56 } 58 }
57 59
58 60
59 61
60 TEST_F(AppSyncDataTest, ExtensionSyncDataToSyncDataForApp) { 62 TEST_F(AppSyncDataTest, ExtensionSyncDataToSyncDataForApp) {
61 sync_pb::EntitySpecifics entity; 63 sync_pb::EntitySpecifics entity;
62 sync_pb::AppSpecifics* input_specifics = entity.mutable_app(); 64 sync_pb::AppSpecifics* input_specifics = entity.mutable_app();
63 input_specifics->set_app_launch_ordinal( 65 input_specifics->set_app_launch_ordinal(
64 syncer::StringOrdinal::CreateInitialOrdinal().ToInternalValue()); 66 syncer::StringOrdinal::CreateInitialOrdinal().ToInternalValue());
65 input_specifics->set_page_ordinal( 67 input_specifics->set_page_ordinal(
66 syncer::StringOrdinal::CreateInitialOrdinal().ToInternalValue()); 68 syncer::StringOrdinal::CreateInitialOrdinal().ToInternalValue());
67 69
68 SetRequiredExtensionValues(input_specifics->mutable_extension()); 70 SetRequiredExtensionValues(input_specifics->mutable_extension());
69 71
70 syncer::SyncData sync_data = 72 syncer::SyncData sync_data =
71 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity); 73 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity);
72 AppSyncData app_sync_data(sync_data); 74 scoped_ptr<AppSyncData> app_sync_data =
75 AppSyncData::CreateFromSyncData(sync_data);
76 ASSERT_TRUE(app_sync_data.get());
73 77
74 syncer::SyncData output_sync_data = app_sync_data.GetSyncData(); 78 syncer::SyncData output_sync_data = app_sync_data->GetSyncData();
75 EXPECT_TRUE(sync_data.GetSpecifics().has_app()); 79 EXPECT_TRUE(sync_data.GetSpecifics().has_app());
76 const sync_pb::AppSpecifics& output_specifics = 80 const sync_pb::AppSpecifics& output_specifics =
77 output_sync_data.GetSpecifics().app(); 81 output_sync_data.GetSpecifics().app();
78 EXPECT_EQ(input_specifics->SerializeAsString(), 82 EXPECT_EQ(input_specifics->SerializeAsString(),
79 output_specifics.SerializeAsString()); 83 output_specifics.SerializeAsString());
80 } 84 }
81 85
82 // Ensures that invalid StringOrdinals don't break ExtensionSyncData. 86 // Ensures that invalid StringOrdinals don't break ExtensionSyncData.
83 TEST_F(AppSyncDataTest, ExtensionSyncDataInvalidOrdinal) { 87 TEST_F(AppSyncDataTest, ExtensionSyncDataInvalidOrdinal) {
84 sync_pb::EntitySpecifics entity; 88 sync_pb::EntitySpecifics entity;
85 sync_pb::AppSpecifics* app_specifics = entity.mutable_app(); 89 sync_pb::AppSpecifics* app_specifics = entity.mutable_app();
86 // Set the ordinals as invalid. 90 // Set the ordinals as invalid.
87 app_specifics->set_app_launch_ordinal(""); 91 app_specifics->set_app_launch_ordinal("");
88 app_specifics->set_page_ordinal(""); 92 app_specifics->set_page_ordinal("");
89 93
90 SetRequiredExtensionValues(app_specifics->mutable_extension()); 94 SetRequiredExtensionValues(app_specifics->mutable_extension());
91 95
92 syncer::SyncData sync_data = 96 syncer::SyncData sync_data =
93 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity); 97 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity);
94 98
95 // There should be no issue loading the sync data. 99 // There should be no issue loading the sync data.
96 AppSyncData app_sync_data(sync_data); 100 scoped_ptr<AppSyncData> app_sync_data =
97 app_sync_data.GetSyncData(); 101 AppSyncData::CreateFromSyncData(sync_data);
102 ASSERT_TRUE(app_sync_data.get());
103 app_sync_data->GetSyncData();
98 } 104 }
99 105
100 } // namespace extensions 106 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698