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

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

Issue 907533004: [Extensions] Sync the 'allowed scripting on all urls' preference (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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/extension_sync_data.h" 5 #include "chrome/browser/extensions/extension_sync_data.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/version.h" 9 #include "base/version.h"
10 #include "sync/protocol/extension_specifics.pb.h" 10 #include "sync/protocol/extension_specifics.pb.h"
11 #include "sync/protocol/sync.pb.h" 11 #include "sync/protocol/sync.pb.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "url/gurl.h" 13 #include "url/gurl.h"
14 14
15 namespace extensions {
16
15 namespace { 17 namespace {
16 18
17 const char kValidId[] = "abcdefghijklmnopabcdefghijklmnop"; 19 const char kValidId[] = "abcdefghijklmnopabcdefghijklmnop";
18 const char kVersion[] = "1.0.0.1"; 20 const char kVersion[] = "1.0.0.1";
19 const char kValidUpdateUrl[] = 21 const char kValidUpdateUrl[] =
20 "https://clients2.google.com/service/update2/crx"; 22 "https://clients2.google.com/service/update2/crx";
21 const char kName[] = "MyExtension"; 23 const char kName[] = "MyExtension";
22 24
25 // Serializes a protobuf structure (entity specifics) into an ExtensionSyncData
26 // and back again, and confirms that the input is the same as the output.
27 void ProtobufToSyncDataEqual(const sync_pb::EntitySpecifics& entity) {
28 syncer::SyncData sync_data =
29 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity);
30 ExtensionSyncData extension_sync_data(sync_data);
31 syncer::SyncData output_sync_data = extension_sync_data.GetSyncData();
32 const sync_pb::ExtensionSpecifics& output =
33 output_sync_data.GetSpecifics().extension();
34 const sync_pb::ExtensionSpecifics& input = entity.extension();
35
36 // Check for field-by-field quality. It'd be nice if we could use
37 // AssertionResults here (instead of EXPECT_EQ) so that we could get valid
38 // line numbers, but it's not worth the ugliness of the verbose comparison.
39 EXPECT_EQ(input.id(), output.id());
40 EXPECT_EQ(input.name(), output.name());
41 EXPECT_EQ(input.version(), output.version());
42 EXPECT_EQ(input.update_url(), output.update_url());
43 EXPECT_EQ(input.enabled(), output.enabled());
44 EXPECT_EQ(input.incognito_enabled(), output.incognito_enabled());
45 EXPECT_EQ(input.remote_install(), output.remote_install());
46 EXPECT_EQ(input.installed_by_custodian(), output.installed_by_custodian());
47 EXPECT_EQ(input.has_all_urls_enabled(), output.has_all_urls_enabled());
48 if (input.has_all_urls_enabled())
49 EXPECT_EQ(input.all_urls_enabled(), output.all_urls_enabled());
50 }
51
52 // Serializes an ExtensionSyncData into a protobuf structure and back again, and
53 // confirms that the input is the same as the output.
54 void SyncDataToProtobufEqual(const ExtensionSyncData& input) {
55 syncer::SyncData sync_data = input.GetSyncData();
56 ExtensionSyncData output(sync_data);
57
58 EXPECT_EQ(input.id(), output.id());
59 EXPECT_EQ(input.uninstalled(), output.uninstalled());
60 EXPECT_EQ(input.enabled(), output.enabled());
61 EXPECT_EQ(input.incognito_enabled(), output.incognito_enabled());
62 EXPECT_EQ(input.remote_install(), output.remote_install());
63 EXPECT_EQ(input.installed_by_custodian(), output.installed_by_custodian());
64 EXPECT_EQ(input.all_urls_enabled(), output.all_urls_enabled());
65 EXPECT_TRUE(input.version().Equals(output.version()));
66 EXPECT_EQ(input.update_url(), output.update_url());
67 EXPECT_EQ(input.name(), output.name());
68 }
69
70 } // namespace
71
23 class ExtensionSyncDataTest : public testing::Test { 72 class ExtensionSyncDataTest : public testing::Test {
24 }; 73 };
25 74
26 TEST_F(ExtensionSyncDataTest, SyncDataToExtensionSyncDataForExtension) { 75 // Tests the conversion process from a protobuf to an ExtensionSyncData and vice
76 // versa.
77 TEST_F(ExtensionSyncDataTest, ExtensionSyncDataForExtension) {
27 sync_pb::EntitySpecifics entity; 78 sync_pb::EntitySpecifics entity;
28 sync_pb::ExtensionSpecifics* extension_specifics = entity.mutable_extension(); 79 sync_pb::ExtensionSpecifics* extension_specifics = entity.mutable_extension();
29 extension_specifics->set_id(kValidId); 80 extension_specifics->set_id(kValidId);
30 extension_specifics->set_update_url(kValidUpdateUrl); 81 extension_specifics->set_update_url(kValidUpdateUrl);
31 extension_specifics->set_enabled(false); 82 extension_specifics->set_enabled(false);
32 extension_specifics->set_incognito_enabled(true); 83 extension_specifics->set_incognito_enabled(true);
84 extension_specifics->set_remote_install(false);
85 extension_specifics->set_installed_by_custodian(false);
86 extension_specifics->set_all_urls_enabled(true);
33 extension_specifics->set_version(kVersion); 87 extension_specifics->set_version(kVersion);
34 extension_specifics->set_name(kName); 88 extension_specifics->set_name(kName);
35 syncer::SyncData sync_data =
36 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity);
37 89
38 extensions::ExtensionSyncData extension_sync_data(sync_data); 90 // Check the serialize-deserialize process for proto to ExtensionSyncData.
39 EXPECT_EQ(extension_specifics->id(), extension_sync_data.id()); 91 ProtobufToSyncDataEqual(entity);
40 EXPECT_EQ(extension_specifics->version(), 92
41 extension_sync_data.version().GetString()); 93 // Explicitly test that conversion to an ExtensionSyncData gets the correct
42 EXPECT_EQ(extension_specifics->update_url(), 94 // result (otherwise we just know that conversion to/from a proto gives us
43 extension_sync_data.update_url().spec()); 95 // the same result, but don't know that it's right).
44 EXPECT_EQ(extension_specifics->enabled(), extension_sync_data.enabled()); 96 ExtensionSyncData extension_sync_data;
45 EXPECT_EQ(extension_specifics->incognito_enabled(), 97 extension_sync_data.PopulateFromExtensionSpecifics(*extension_specifics);
46 extension_sync_data.incognito_enabled()); 98 EXPECT_EQ(kValidId, extension_sync_data.id());
47 EXPECT_EQ(extension_specifics->name(), extension_sync_data.name()); 99 EXPECT_EQ(GURL(kValidUpdateUrl), extension_sync_data.update_url());
48 EXPECT_FALSE(extension_sync_data.uninstalled()); 100 EXPECT_EQ(false, extension_sync_data.enabled());
101 EXPECT_EQ(true, extension_sync_data.incognito_enabled());
102 EXPECT_EQ(false, extension_sync_data.remote_install());
103 EXPECT_EQ(ExtensionSyncData::BOOLEAN_TRUE,
104 extension_sync_data.all_urls_enabled());
105 EXPECT_TRUE(Version(kVersion).Equals(extension_sync_data.version()));
106 EXPECT_EQ(std::string(kName), extension_sync_data.name());
107
108 // Check the serialize-deserialize process for ExtensionSyncData to proto.
109 SyncDataToProtobufEqual(extension_sync_data);
110
111 // The most important thing to test is the "all urls" bit, since it is a
112 // tri-state boolean (and thus has more logic). Also flip another bit for a
113 // sanity check.
114 extension_specifics->set_all_urls_enabled(false);
115 extension_specifics->set_incognito_enabled(false);
116 ProtobufToSyncDataEqual(entity);
117
118 extension_sync_data.PopulateFromExtensionSpecifics(*extension_specifics);
119 EXPECT_EQ(ExtensionSyncData::BOOLEAN_FALSE,
120 extension_sync_data.all_urls_enabled());
121 EXPECT_EQ(false, extension_sync_data.incognito_enabled());
122
123 SyncDataToProtobufEqual(extension_sync_data);
124
125 extension_specifics->clear_all_urls_enabled();
126 ProtobufToSyncDataEqual(entity);
127
128 extension_sync_data.PopulateFromExtensionSpecifics(*extension_specifics);
129 EXPECT_FALSE(extension_specifics->has_all_urls_enabled());
130 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET,
131 extension_sync_data.all_urls_enabled());
132
133 SyncDataToProtobufEqual(extension_sync_data);
49 } 134 }
50 135
51 TEST_F(ExtensionSyncDataTest, ExtensionSyncDataToSyncDataForExtension) { 136 } // namespace extensions
52 sync_pb::EntitySpecifics entity;
53 sync_pb::ExtensionSpecifics* input_extension = entity.mutable_extension();
54 input_extension->set_id(kValidId);
55 input_extension->set_update_url(kValidUpdateUrl);
56 input_extension->set_enabled(true);
57 input_extension->set_incognito_enabled(false);
58 input_extension->set_version(kVersion);
59 input_extension->set_name(kName);
60 syncer::SyncData sync_data =
61 syncer::SyncData::CreateLocalData("sync_tag", "non_unique_title", entity);
62 extensions::ExtensionSyncData extension_sync_data(sync_data);
63
64 syncer::SyncData output_sync_data = extension_sync_data.GetSyncData();
65 const sync_pb::ExtensionSpecifics& output_specifics =
66 output_sync_data.GetSpecifics().extension();
67 EXPECT_EQ(extension_sync_data.id(), output_specifics.id());
68 EXPECT_EQ(extension_sync_data.update_url().spec(),
69 output_specifics.update_url());
70 EXPECT_EQ(extension_sync_data.enabled(), output_specifics.enabled());
71 EXPECT_EQ(extension_sync_data.incognito_enabled(),
72 output_specifics.incognito_enabled());
73 EXPECT_EQ(extension_sync_data.version().GetString(),
74 output_specifics.version());
75 EXPECT_EQ(extension_sync_data.name(), output_specifics.name());
76 }
77
78 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_sync_data.cc ('k') | chrome/browser/extensions/extension_sync_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698