sync: remove use of protobuf extensions in protocol to reduce static init overhead.
Instead, we now use optional fields in EntitySpecifics. Because the tag numbers remain
the same, this is a wire-format compatible change.
This incurs a (#datatypes * sizeof(void*))*#sync_items memory cost, due to storing extra pointers. In practice, for a typical account on windows this amounts to < 200k, and the static init cost is believed to be greater.
Note - upcoming features in protobufs may let us eliminate this extra memory overhead.
Also: The testserver tests were broken on ToT due to a bug in _SaveEntry's saving of mtime which is fixed in this patch.
[email protected]
[email protected]
[email protected]
[email protected]
BUG=94992, 94925
Review URL: http://codereview.chromium.org/9460047
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124912 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_sync_data_unittest.cc b/chrome/browser/extensions/extension_sync_data_unittest.cc
index 90afc1e4..4be1055 100644
--- a/chrome/browser/extensions/extension_sync_data_unittest.cc
+++ b/chrome/browser/extensions/extension_sync_data_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -8,6 +8,7 @@
#include "base/version.h"
#include "chrome/browser/sync/protocol/app_specifics.pb.h"
#include "chrome/browser/sync/protocol/extension_specifics.pb.h"
+#include "chrome/browser/sync/protocol/sync.pb.h"
#include "googleurl/src/gurl.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -37,8 +38,7 @@
TEST_F(ExtensionSyncDataTest, SyncDataToExtensionSyncDataForExtension) {
sync_pb::EntitySpecifics entity;
- sync_pb::ExtensionSpecifics* extension_specifics =
- entity.MutableExtension(sync_pb::extension);
+ sync_pb::ExtensionSpecifics* extension_specifics = entity.mutable_extension();
extension_specifics->set_id(kValidId);
extension_specifics->set_update_url(kValidUpdateUrl2);
extension_specifics->set_enabled(false);
@@ -63,8 +63,7 @@
TEST_F(ExtensionSyncDataTest, ExtensionSyncDataToSyncDataForExtension) {
sync_pb::EntitySpecifics entity;
- sync_pb::ExtensionSpecifics* input_extension =
- entity.MutableExtension(sync_pb::extension);
+ sync_pb::ExtensionSpecifics* input_extension = entity.mutable_extension();
input_extension->set_id(kValidId);
input_extension->set_update_url(kValidUpdateUrl2);
input_extension->set_enabled(true);
@@ -77,7 +76,7 @@
SyncData output_sync_data = extension_sync_data.GetSyncData();
const sync_pb::ExtensionSpecifics& output_specifics =
- output_sync_data.GetSpecifics().GetExtension(sync_pb::extension);
+ output_sync_data.GetSpecifics().extension();
EXPECT_EQ(extension_sync_data.id(), output_specifics.id());
EXPECT_EQ(extension_sync_data.update_url().spec(),
output_specifics.update_url());
@@ -91,7 +90,7 @@
TEST_F(ExtensionSyncDataTest, SyncDataToExtensionSyncDataForApp) {
sync_pb::EntitySpecifics entity;
- sync_pb::AppSpecifics* app_specifics = entity.MutableExtension(sync_pb::app);
+ sync_pb::AppSpecifics* app_specifics = entity.mutable_app();
app_specifics->set_app_launch_ordinal(
StringOrdinal::CreateInitialOrdinal().ToString());
app_specifics->set_page_ordinal(
@@ -135,8 +134,7 @@
TEST_F(ExtensionSyncDataTest, ExtensionSyncDataToSyncDataForApp) {
sync_pb::EntitySpecifics entity;
- sync_pb::AppSpecifics* input_specifics = entity.MutableExtension(
- sync_pb::app);
+ sync_pb::AppSpecifics* input_specifics = entity.mutable_app();
input_specifics->set_app_launch_ordinal(
StringOrdinal::CreateInitialOrdinal().ToString());
input_specifics->set_page_ordinal(
@@ -159,9 +157,9 @@
ExtensionSyncData extension_sync_data(sync_data);
SyncData output_sync_data = extension_sync_data.GetSyncData();
- EXPECT_TRUE(sync_data.GetSpecifics().HasExtension(sync_pb::app));
+ EXPECT_TRUE(sync_data.GetSpecifics().has_app());
const sync_pb::AppSpecifics& output_specifics =
- output_sync_data.GetSpecifics().GetExtension(sync_pb::app);
+ output_sync_data.GetSpecifics().app();
EXPECT_EQ(input_specifics->SerializeAsString(),
output_specifics.SerializeAsString());
}
@@ -169,7 +167,7 @@
// Ensures that invalid StringOrdinals don't break ExtensionSyncData.
TEST_F(ExtensionSyncDataTest, ExtensionSyncDataInvalidOrdinal) {
sync_pb::EntitySpecifics entity;
- sync_pb::AppSpecifics* app_specifics = entity.MutableExtension(sync_pb::app);
+ sync_pb::AppSpecifics* app_specifics = entity.mutable_app();
// Set the ordinals as invalid.
app_specifics->set_app_launch_ordinal("");
app_specifics->set_page_ordinal("");