| // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/sync/glue/extension_data.h" |
| |
| #include "chrome/browser/sync/glue/extension_util.h" |
| #include "chrome/browser/sync/protocol/extension_specifics.pb.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace browser_sync { |
| |
| namespace { |
| |
| class ExtensionDataTest : public testing::Test { |
| }; |
| |
| const char kValidId[] = "abcdefghijklmnopabcdefghijklmnop"; |
| const char kValidUpdateUrl1[] = "http://www.google.com"; |
| const char kValidUpdateUrl2[] = "http://www.bing.com"; |
| const char kValidVersion1[] = "1.0.0.0"; |
| const char kValidVersion2[] = "1.1.0.0"; |
| |
| TEST_F(ExtensionDataTest, FromData) { |
| sync_pb::ExtensionSpecifics client_data; |
| client_data.set_id(kValidId); |
| client_data.set_update_url(kValidUpdateUrl1); |
| client_data.set_version(kValidVersion1); |
| ExtensionData extension_data = |
| ExtensionData::FromData(ExtensionData::CLIENT, client_data); |
| EXPECT_FALSE(extension_data.NeedsUpdate(ExtensionData::CLIENT)); |
| EXPECT_TRUE(extension_data.NeedsUpdate(ExtensionData::SERVER)); |
| EXPECT_TRUE(AreExtensionSpecificsEqual( |
| client_data, extension_data.merged_data())); |
| } |
| |
| TEST_F(ExtensionDataTest, SetData) { |
| sync_pb::ExtensionSpecifics client_data; |
| client_data.set_id(kValidId); |
| client_data.set_update_url(kValidUpdateUrl1); |
| client_data.set_version(kValidVersion1); |
| ExtensionData extension_data = |
| ExtensionData::FromData(ExtensionData::CLIENT, client_data); |
| |
| { |
| sync_pb::ExtensionSpecifics server_data; |
| server_data.set_id(kValidId); |
| server_data.set_update_url(kValidUpdateUrl2); |
| server_data.set_version(kValidVersion2); |
| server_data.set_enabled(true); |
| extension_data.SetData(ExtensionData::SERVER, false, server_data); |
| EXPECT_TRUE(extension_data.NeedsUpdate(ExtensionData::CLIENT)); |
| EXPECT_TRUE(extension_data.NeedsUpdate(ExtensionData::SERVER)); |
| } |
| |
| { |
| sync_pb::ExtensionSpecifics server_data; |
| server_data.set_id(kValidId); |
| server_data.set_update_url(kValidUpdateUrl2); |
| server_data.set_version(kValidVersion2); |
| server_data.set_enabled(true); |
| extension_data.SetData(ExtensionData::SERVER, true, server_data); |
| EXPECT_TRUE(extension_data.NeedsUpdate(ExtensionData::CLIENT)); |
| EXPECT_FALSE(extension_data.NeedsUpdate(ExtensionData::SERVER)); |
| EXPECT_TRUE(AreExtensionSpecificsEqual( |
| server_data, extension_data.merged_data())); |
| } |
| } |
| |
| TEST_F(ExtensionDataTest, ResolveData) { |
| sync_pb::ExtensionSpecifics client_data; |
| client_data.set_id(kValidId); |
| client_data.set_update_url(kValidUpdateUrl1); |
| client_data.set_version(kValidVersion1); |
| ExtensionData extension_data = |
| ExtensionData::FromData(ExtensionData::CLIENT, client_data); |
| |
| sync_pb::ExtensionSpecifics server_data; |
| server_data.set_id(kValidId); |
| server_data.set_update_url(kValidUpdateUrl2); |
| server_data.set_version(kValidVersion2); |
| extension_data.SetData(ExtensionData::SERVER, true, server_data); |
| |
| extension_data.ResolveData(ExtensionData::CLIENT); |
| EXPECT_FALSE(extension_data.NeedsUpdate(ExtensionData::CLIENT)); |
| EXPECT_FALSE(extension_data.NeedsUpdate(ExtensionData::SERVER)); |
| EXPECT_TRUE(AreExtensionSpecificsEqual( |
| server_data, extension_data.merged_data())); |
| } |
| |
| } // namespace |
| |
| } // namespace browser_sync |