1 // Copyright (c) 2010 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/sync/glue/extension_data.h"
6
7 #include "chrome/browser/sync/glue/extension_util.h"
8 #include "chrome/browser/sync/protocol/extension_specifics.pb.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace browser_sync {
12
13 namespace {
14
15 class ExtensionDataTest : public testing::Test {
16 };
17
18 const char kValidId[] = "abcdefghijklmnopabcdefghijklmnop";
19 const char kValidUpdateUrl1[] = "http://www.google.com";
20 const char kValidUpdateUrl2[] = "http://www.bing.com";
21 const char kValidVersion1[] = "1.0.0.0";
22 const char kValidVersion2[] = "1.1.0.0";
23
TEST_F(ExtensionDataTest,FromData)24 TEST_F(ExtensionDataTest, FromData) {
25 sync_pb::ExtensionSpecifics client_data;
26 client_data.set_id(kValidId);
27 client_data.set_update_url(kValidUpdateUrl1);
28 client_data.set_version(kValidVersion1);
29 ExtensionData extension_data =
30 ExtensionData::FromData(ExtensionData::CLIENT, client_data);
31 EXPECT_FALSE(extension_data.NeedsUpdate(ExtensionData::CLIENT));
32 EXPECT_TRUE(extension_data.NeedsUpdate(ExtensionData::SERVER));
33 EXPECT_TRUE(AreExtensionSpecificsEqual(
34 client_data, extension_data.merged_data()));
35 }
36
TEST_F(ExtensionDataTest,SetData)37 TEST_F(ExtensionDataTest, SetData) {
38 sync_pb::ExtensionSpecifics client_data;
39 client_data.set_id(kValidId);
40 client_data.set_update_url(kValidUpdateUrl1);
41 client_data.set_version(kValidVersion1);
42 ExtensionData extension_data =
43 ExtensionData::FromData(ExtensionData::CLIENT, client_data);
44
45 {
46 sync_pb::ExtensionSpecifics server_data;
47 server_data.set_id(kValidId);
48 server_data.set_update_url(kValidUpdateUrl2);
49 server_data.set_version(kValidVersion2);
50 server_data.set_enabled(true);
51 extension_data.SetData(ExtensionData::SERVER, false, server_data);
52 EXPECT_TRUE(extension_data.NeedsUpdate(ExtensionData::CLIENT));
53 EXPECT_TRUE(extension_data.NeedsUpdate(ExtensionData::SERVER));
54 }
55
56 {
57 sync_pb::ExtensionSpecifics server_data;
58 server_data.set_id(kValidId);
59 server_data.set_update_url(kValidUpdateUrl2);
60 server_data.set_version(kValidVersion2);
61 server_data.set_enabled(true);
62 extension_data.SetData(ExtensionData::SERVER, true, server_data);
63 EXPECT_TRUE(extension_data.NeedsUpdate(ExtensionData::CLIENT));
64 EXPECT_FALSE(extension_data.NeedsUpdate(ExtensionData::SERVER));
65 EXPECT_TRUE(AreExtensionSpecificsEqual(
66 server_data, extension_data.merged_data()));
67 }
68 }
69
TEST_F(ExtensionDataTest,ResolveData)70 TEST_F(ExtensionDataTest, ResolveData) {
71 sync_pb::ExtensionSpecifics client_data;
72 client_data.set_id(kValidId);
73 client_data.set_update_url(kValidUpdateUrl1);
74 client_data.set_version(kValidVersion1);
75 ExtensionData extension_data =
76 ExtensionData::FromData(ExtensionData::CLIENT, client_data);
77
78 sync_pb::ExtensionSpecifics server_data;
79 server_data.set_id(kValidId);
80 server_data.set_update_url(kValidUpdateUrl2);
81 server_data.set_version(kValidVersion2);
82 extension_data.SetData(ExtensionData::SERVER, true, server_data);
83
84 extension_data.ResolveData(ExtensionData::CLIENT);
85 EXPECT_FALSE(extension_data.NeedsUpdate(ExtensionData::CLIENT));
86 EXPECT_FALSE(extension_data.NeedsUpdate(ExtensionData::SERVER));
87 EXPECT_TRUE(AreExtensionSpecificsEqual(
88 server_data, extension_data.merged_data()));
89 }
90
91 } // namespace
92
93 } // namespace browser_sync
94