summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-01 01:44:06 +0000
committerrsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-01 01:44:06 +0000
commit8c6b5192848be90633007b5a0f49b9c300e84bea (patch)
tree4a8ed5d8ff75add0f3ff337f213078ea49e6c6f4
parent9445a1312786a982749e784065512c6aa99385ef (diff)
downloadchromium_src-8c6b5192848be90633007b5a0f49b9c300e84bea.zip
chromium_src-8c6b5192848be90633007b5a0f49b9c300e84bea.tar.gz
chromium_src-8c6b5192848be90633007b5a0f49b9c300e84bea.tar.bz2
[sync] Componentize sync: Part Final: Target 'sync' is now its own component
One of the long term goals of the sync team has been to pull sync out of chrome_dll and into its own component. This should result in faster link times for component builds, and cleaner demarcation between sync code and the rest of chrome. This patch does the following: - Splits off sync.gyp into gypi files for sync_core, sync_api, sync_internal_api, sync_notifier and sync_proto. - Audits the dependencies of various targets in sync.gyp, sync_tests.gyp, and other chrome gyp files, and makes sure all dependencies are explicitly declared. - Makes targets declared in gyp files outside sync.gyp directly depend on sync.gyp:sync instead of inner sync targets. - Implements two versions of the target 'sync.gyp:sync': 1) In static mode, the public 'sync' target has a target type of 'none', and is composed of the static library targets 'sync_api', 'sync_core', 'sync_internal_api', 'sync_notifier', and 'sync_proto'. 2) In component mode, we build the public 'sync' target into a single shared library, which includes the contents of sync_api.gypi, sync_core.gypi, sync_internal_api.gypi, sync_notifier.gypi, and sync_proto.gypi. TBR=akalin,robertshield,thakis BUG=136928 TEST=Set GYP_DEFINES="component=shared_library" and build the 'all' target on all platforms. Review URL: https://codereview.chromium.org/11412211 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180034 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/chrome.gyp4
-rw-r--r--chrome/chrome_browser.gypi12
-rw-r--r--chrome/chrome_browser_chromeos.gypi8
-rw-r--r--chrome/chrome_browser_extensions.gypi4
-rw-r--r--chrome/chrome_browser_ui.gypi8
-rw-r--r--chrome/chrome_tests.gypi27
-rw-r--r--chrome/chrome_tests_unit.gypi8
-rw-r--r--chrome_frame/chrome_frame.gyp6
-rw-r--r--jingle/jingle.gyp1
-rw-r--r--sync/base/sync_export.h3
-rw-r--r--sync/internal_api/public/base/unique_position.h3
-rw-r--r--sync/internal_api/public/delete_journal.h3
-rw-r--r--sync/protocol/sync_proto.gyp49
-rw-r--r--sync/sync.gyp1087
-rw-r--r--sync/sync_api.gypi33
-rw-r--r--sync/sync_core.gypi190
-rw-r--r--sync/sync_internal_api.gypi111
-rw-r--r--sync/sync_notifier.gypi64
-rw-r--r--sync/sync_proto.gypi51
-rw-r--r--sync/sync_tests.gypi617
-rw-r--r--sync/syncable/syncable_base_transaction.cc8
-rw-r--r--sync/syncable/syncable_base_transaction.h6
-rw-r--r--sync/syncable/syncable_delete_journal.h3
-rw-r--r--sync/syncable/syncable_read_transaction.h2
-rw-r--r--sync/syncable/syncable_write_transaction.h2
25 files changed, 1197 insertions, 1113 deletions
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index eb94a43..352f264 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -14,7 +14,7 @@
'common',
'browser',
'../content/content.gyp:content_app',
- '../sync/sync.gyp:sync_core',
+ '../sync/sync.gyp:sync',
],
'allocator_target': '../base/allocator/allocator.gyp:allocator',
'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/chrome',
@@ -385,7 +385,7 @@
'dependencies': [
'test_support_common',
'../skia/skia.gyp:skia',
- '../sync/sync.gyp:sync_core',
+ '../sync/sync.gyp:sync',
],
'include_dirs': [
'..',
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index b6585a0..adb5d6a 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -35,12 +35,8 @@
'../google_apis/google_apis.gyp:google_apis',
'../media/media.gyp:media',
'../skia/skia.gyp:skia',
- '../sync/protocol/sync_proto.gyp:sync_proto',
- # TODO(akalin): Depend only on sync_api from sync.
- '../sync/sync.gyp:sync_api',
- '../sync/sync.gyp:sync_internal_api',
- '../sync/sync.gyp:sync_notifier',
- '../ui/ui.gyp:shell_dialogs',
+ '../sql/sql.gyp:sql',
+ '../sync/sync.gyp:sync',
'../third_party/bzip2/bzip2.gyp:bzip2',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp',
@@ -51,6 +47,7 @@
'../third_party/zlib/zlib.gyp:minizip',
'../third_party/zlib/zlib.gyp:zlib',
'../ui/base/strings/ui_strings.gyp:ui_strings',
+ '../ui/ui.gyp:shell_dialogs',
'../ui/ui.gyp:ui',
'../ui/ui.gyp:ui_resources',
'../webkit/support/webkit_support.gyp:user_agent',
@@ -62,7 +59,8 @@
'<(SHARED_INTERMEDIATE_DIR)',
],
'export_dependent_settings': [
- '../sync/sync.gyp:sync_notifier',
+ '../sql/sql.gyp:sql',
+ '../sync/sync.gyp:sync',
],
'sources': [
# All .cc, .h, .m, and .mm files under browser except for:
diff --git a/chrome/chrome_browser_chromeos.gypi b/chrome/chrome_browser_chromeos.gypi
index ab7c9fe..d352867 100644
--- a/chrome/chrome_browser_chromeos.gypi
+++ b/chrome/chrome_browser_chromeos.gypi
@@ -57,11 +57,7 @@
'../ppapi/ppapi_internal.gyp:ppapi_ipc', # For PpapiMsg_LoadPlugin
'../printing/printing.gyp:printing',
'../skia/skia.gyp:skia',
- '../sync/protocol/sync_proto.gyp:sync_proto',
- # TODO(akalin): Depend only on sync_api from sync.
- '../sync/sync.gyp:sync_api',
- '../sync/sync.gyp:sync_internal_api',
- '../sync/sync.gyp:sync_notifier',
+ '../sync/sync.gyp:sync',
'../third_party/adobe/flash/flash_player.gyp:flapper_version_h',
'../third_party/bzip2/bzip2.gyp:bzip2',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
@@ -104,7 +100,7 @@
],
},
'export_dependent_settings': [
- '../sync/sync.gyp:sync_notifier',
+ '../sync/sync.gyp:sync',
],
'sources': [
# All .cc, .h, .m, and .mm files unde browser/chromeos, except for tests
diff --git a/chrome/chrome_browser_extensions.gypi b/chrome/chrome_browser_extensions.gypi
index c5e8557..e0497de 100644
--- a/chrome/chrome_browser_extensions.gypi
+++ b/chrome/chrome_browser_extensions.gypi
@@ -14,7 +14,6 @@
# have the same dependencies. Once browser_extensions is untangled from
# browser, then we can clean up these dependencies.
'dependencies': [
- '../sync/protocol/sync_proto.gyp:sync_proto',
'chrome_resources.gyp:chrome_extra_resources',
'chrome_resources.gyp:chrome_resources',
'chrome_resources.gyp:chrome_strings',
@@ -32,8 +31,9 @@
'../device/device.gyp:device_bluetooth',
'../net/net.gyp:net',
'../skia/skia.gyp:skia',
- '../sync/sync.gyp:sync_notifier',
+ '../sync/sync.gyp:sync',
'../third_party/bzip2/bzip2.gyp:bzip2',
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
'../third_party/icu/icu.gyp:icui18n',
'../third_party/icu/icu.gyp:icuuc',
'../third_party/leveldatabase/leveldatabase.gyp:leveldatabase',
diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi
index 505a8ba..8923e07 100644
--- a/chrome/chrome_browser_ui.gypi
+++ b/chrome/chrome_browser_ui.gypi
@@ -36,11 +36,7 @@
'../crypto/crypto.gyp:crypto',
'../media/media.gyp:media',
'../skia/skia.gyp:skia',
- '../sync/protocol/sync_proto.gyp:sync_proto',
- # TODO(akalin): Depend only on sync_api from sync.
- '../sync/sync.gyp:sync_api',
- '../sync/sync.gyp:sync_internal_api',
- '../sync/sync.gyp:sync_notifier',
+ '../sync/sync.gyp:sync',
'../third_party/bzip2/bzip2.gyp:bzip2',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp',
@@ -63,7 +59,7 @@
'<(SHARED_INTERMEDIATE_DIR)',
],
'export_dependent_settings': [
- '../sync/sync.gyp:sync_notifier',
+ '../sync/sync.gyp:sync',
],
'sources': [
# All .cc, .h, .m, and .mm files under browser/ui except for:
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index b1a966f..c04b4084 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -153,8 +153,7 @@
'../net/net.gyp:net_resources',
'../net/net.gyp:net_test_support',
'../skia/skia.gyp:skia',
- '../sync/protocol/sync_proto.gyp:sync_proto',
- '../sync/sync.gyp:sync_api',
+ '../sync/sync.gyp:sync',
'../third_party/icu/icu.gyp:icui18n',
'../third_party/icu/icu.gyp:icuuc',
'../third_party/libpng/libpng.gyp:libpng',
@@ -462,7 +461,7 @@
'../build/temp_gyp/googleurl.gyp:googleurl',
'../net/net.gyp:net',
'../skia/skia.gyp:skia',
- '../sync/sync.gyp:sync_api',
+ '../sync/sync.gyp:sync',
'../testing/gtest.gyp:gtest',
'../third_party/icu/icu.gyp:icui18n',
'../third_party/icu/icu.gyp:icuuc',
@@ -928,11 +927,11 @@
'../net/net.gyp:net',
'../net/net.gyp:net_test_support',
'../skia/skia.gyp:skia',
- '../sync/protocol/sync_proto.gyp:sync_proto',
- '../sync/sync.gyp:sync_notifier',
+ '../sync/sync.gyp:sync',
'../sync/sync.gyp:test_support_sync_api',
'../testing/gmock.gyp:gmock',
'../testing/gtest.gyp:gtest',
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
'../third_party/cld/cld.gyp:cld',
'../third_party/icu/icu.gyp:icui18n',
'../third_party/icu/icu.gyp:icuuc',
@@ -1768,7 +1767,6 @@
'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'],
'dependencies': [
'browser',
- '../sync/protocol/sync_proto.gyp:sync_proto',
'chrome_resources.gyp:chrome_resources',
'chrome_resources.gyp:chrome_strings',
'chrome_resources.gyp:packed_extra_resources',
@@ -1781,6 +1779,7 @@
'../net/net.gyp:net',
'../net/net.gyp:net_test_support',
'../skia/skia.gyp:skia',
+ '../sync/sync.gyp:sync',
'../testing/gmock.gyp:gmock',
'../testing/gtest.gyp:gtest',
'../third_party/cld/cld.gyp:cld',
@@ -2070,7 +2069,6 @@
'type': 'executable',
'dependencies': [
'browser',
- '../sync/protocol/sync_proto.gyp:sync_proto',
'chrome',
'chrome_resources.gyp:chrome_resources',
'chrome_resources.gyp:chrome_strings',
@@ -2083,7 +2081,7 @@
'../net/net.gyp:net',
'../printing/printing.gyp:printing',
'../skia/skia.gyp:skia',
- '../sync/sync.gyp:sync_notifier',
+ '../sync/sync.gyp:sync',
'../sync/sync.gyp:test_support_sync_testserver',
'../testing/gmock.gyp:gmock',
'../testing/gtest.gyp:gtest',
@@ -2107,8 +2105,6 @@
'app/chrome_dll.rc',
'app/chrome_dll_resource.h',
'app/chrome_version.rc.version',
- 'browser/sessions/session_backend.cc',
- 'browser/sync/glue/session_model_associator.cc',
'test/base/chrome_test_launcher.cc',
'test/data/resource.rc',
'browser/sync/test/integration/apps_helper.cc',
@@ -2246,13 +2242,12 @@
'target_name': 'sync_performance_tests',
'type': 'executable',
'dependencies': [
- '../sync/protocol/sync_proto.gyp:sync_proto',
'browser',
'chrome',
'common/extensions/api/api.gyp:api',
'test_support_common',
'../skia/skia.gyp:skia',
- '../sync/sync.gyp:sync_notifier',
+ '../sync/sync.gyp:sync',
'../sync/sync.gyp:test_support_sync_testserver',
'../testing/gmock.gyp:gmock',
'../testing/gtest.gyp:gtest',
@@ -2270,8 +2265,6 @@
'app/chrome_dll.rc',
'app/chrome_dll_resource.h',
'app/chrome_version.rc.version',
- 'browser/sessions/session_backend.cc',
- 'browser/sync/glue/session_model_associator.cc',
'browser/sync/test/integration/autofill_helper.cc',
'browser/sync/test/integration/autofill_helper.h',
'browser/sync/test/integration/bookmarks_helper.cc',
@@ -2557,11 +2550,11 @@
'test_support_common',
'browser',
'renderer',
- 'chrome_resources.gyp:packed_resources',
+ 'chrome_resources.gyp:packed_resources',
'../base/base.gyp:base',
'../net/net.gyp:net_test_support',
'../skia/skia.gyp:skia',
- '../sync/sync.gyp:sync_api',
+ '../sync/sync.gyp:sync',
],
'include_dirs': [
'..',
@@ -2610,7 +2603,7 @@
'debugger',
'test_support_common',
'../skia/skia.gyp:skia',
- '../sync/sync.gyp:sync_api',
+ '../sync/sync.gyp:sync',
'../testing/gtest.gyp:gtest',
],
'export_dependent_settings': [
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 2dcc754..6b3ba32 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -13,7 +13,6 @@
# dependencies block below, rather than here.
'app/policy/cloud_policy_codegen.gyp:policy_test_support',
'browser',
- '../sync/protocol/sync_proto.gyp:sync_proto',
'chrome_resources.gyp:chrome_resources',
'chrome_resources.gyp:chrome_strings',
'chrome_resources.gyp:theme_resources',
@@ -26,6 +25,7 @@
'../net/net.gyp:net',
'../net/net.gyp:net_test_support',
'../skia/skia.gyp:skia',
+ '../sync/sync.gyp:sync',
'../testing/gmock.gyp:gmock',
'../testing/gtest.gyp:gtest',
],
@@ -374,13 +374,13 @@
'../media/media.gyp:media_test_support',
'../net/net.gyp:net',
'../net/net.gyp:net_test_support',
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- 'test_support_common',
'../sync/sync.gyp:test_support_sync_api',
'../sync/sync.gyp:test_support_sync_core',
'../sync/sync.gyp:test_support_sync_internal_api',
'../sync/sync.gyp:test_support_sync_notifier',
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ 'test_support_common',
'test_support_unit',
# 3) anything tests directly depend on
'../google_apis/google_apis.gyp:google_apis',
diff --git a/chrome_frame/chrome_frame.gyp b/chrome_frame/chrome_frame.gyp
index 4b9e5bd..797f731 100644
--- a/chrome_frame/chrome_frame.gyp
+++ b/chrome_frame/chrome_frame.gyp
@@ -417,7 +417,7 @@
'../net/net.gyp:net',
'../net/net.gyp:net_test_support',
'../skia/skia.gyp:skia',
- '../sync/sync.gyp:sync_api',
+ '../sync/sync.gyp:sync',
'../testing/gtest.gyp:gtest',
'../third_party/icu/icu.gyp:icui18n',
'../third_party/icu/icu.gyp:icuuc',
@@ -800,7 +800,7 @@
'../chrome/chrome.gyp:installer_util',
'../google_update/google_update.gyp:google_update',
# Make the archive build happy.
- '../sync/sync.gyp:sync_api',
+ '../sync/sync.gyp:sync',
# Crash Reporting
'crash_reporting/crash_reporting.gyp:crash_report',
],
@@ -923,7 +923,7 @@
'../chrome/chrome.gyp:installer_util',
'../google_update/google_update.gyp:google_update',
# Make the archive build happy.
- '../sync/sync.gyp:sync_api',
+ '../sync/sync.gyp:sync',
# Crash Reporting
'crash_reporting/crash_reporting.gyp:crash_report',
],
diff --git a/jingle/jingle.gyp b/jingle/jingle.gyp
index 0fd9811..2506978 100644
--- a/jingle/jingle.gyp
+++ b/jingle/jingle.gyp
@@ -111,6 +111,7 @@
'../net/net.gyp:net',
'../third_party/expat/expat.gyp:expat',
'../third_party/libjingle/libjingle.gyp:libjingle',
+ 'jingle_glue',
],
'export_dependent_settings': [
'../third_party/libjingle/libjingle.gyp:libjingle',
diff --git a/sync/base/sync_export.h b/sync/base/sync_export.h
index a38e8b2..83c65a6 100644
--- a/sync/base/sync_export.h
+++ b/sync/base/sync_export.h
@@ -5,8 +5,7 @@
#ifndef SYNC_SYNC_EXPORT_H_
#define SYNC_SYNC_EXPORT_H_
-// TODO(akalin): Remove '0 && ' when sync becomes a component.
-#if 0 && defined(COMPONENT_BUILD)
+#if defined(COMPONENT_BUILD)
#if defined(WIN32)
#if defined(SYNC_IMPLEMENTATION)
diff --git a/sync/internal_api/public/base/unique_position.h b/sync/internal_api/public/base/unique_position.h
index 8a0a1ba..3fbd5af 100644
--- a/sync/internal_api/public/base/unique_position.h
+++ b/sync/internal_api/public/base/unique_position.h
@@ -8,6 +8,7 @@
#include <string>
#include "base/basictypes.h"
+#include "sync/base/sync_export.h"
namespace sync_pb {
class UniquePosition;
@@ -37,7 +38,7 @@ namespace syncer {
//
// This class currently has several bookmarks-related assumptions built in,
// though it could be adapted to be more generally useful.
-class UniquePosition {
+class SYNC_EXPORT_PRIVATE UniquePosition {
public:
static const size_t kSuffixLength;
diff --git a/sync/internal_api/public/delete_journal.h b/sync/internal_api/public/delete_journal.h
index 1e66b3c..3152b02 100644
--- a/sync/internal_api/public/delete_journal.h
+++ b/sync/internal_api/public/delete_journal.h
@@ -7,6 +7,7 @@
#include <vector>
+#include "sync/base/sync_export.h"
#include "sync/internal_api/public/base/model_type.h"
#include "sync/protocol/sync.pb.h"
@@ -23,7 +24,7 @@ typedef std::vector<BookmarkDeleteJournal> BookmarkDeleteJournalList;
// Static APIs for passing delete journals between syncer::syncable namspace
// and syncer namespace.
-class DeleteJournal {
+class SYNC_EXPORT DeleteJournal {
public:
// Return info about deleted bookmark entries stored in the delete journal
// of |trans|'s directory.
diff --git a/sync/protocol/sync_proto.gyp b/sync/protocol/sync_proto.gyp
deleted file mode 100644
index edcb897..0000000
--- a/sync/protocol/sync_proto.gyp
+++ /dev/null
@@ -1,49 +0,0 @@
-# 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.
-
-{
- 'variables': {
- 'chromium_code': 1,
- },
- 'targets': [
- {
- 'target_name': 'sync_proto',
- 'type': 'static_library',
- 'sources': [
- 'app_notification_specifics.proto',
- 'app_setting_specifics.proto',
- 'app_specifics.proto',
- 'autofill_specifics.proto',
- 'bookmark_specifics.proto',
- 'client_commands.proto',
- 'client_debug_info.proto',
- 'device_info_specifics.proto',
- 'dictionary_specifics.proto',
- 'encryption.proto',
- 'experiments_specifics.proto',
- 'extension_setting_specifics.proto',
- 'extension_specifics.proto',
- 'get_updates_caller_info.proto',
- 'history_delete_directive_specifics.proto',
- 'nigori_specifics.proto',
- 'password_specifics.proto',
- 'preference_specifics.proto',
- 'priority_preference_specifics.proto',
- 'search_engine_specifics.proto',
- 'session_specifics.proto',
- 'sync.proto',
- 'sync_enums.proto',
- 'synced_notification_specifics.proto',
- 'test.proto',
- 'theme_specifics.proto',
- 'typed_url_specifics.proto',
- 'unique_position.proto',
- ],
- 'variables': {
- 'proto_out_dir': 'sync/protocol',
- },
- 'includes': ['../../build/protoc.gypi'],
- },
- ],
-}
diff --git a/sync/sync.gyp b/sync/sync.gyp
index 12f5267..baeffba 100644
--- a/sync/sync.gyp
+++ b/sync/sync.gyp
@@ -6,1054 +6,127 @@
'variables': {
'chromium_code': 1,
},
- 'targets': [
- # The core sync library.
- {
- 'target_name': 'sync_core',
- 'type': 'static_library',
- 'variables': { 'enable_wexit_time_destructors': 1, },
- 'include_dirs': [
- '..',
- ],
- 'defines': [
- 'SYNC_IMPLEMENTATION',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- '../build/temp_gyp/googleurl.gyp:googleurl',
- '../crypto/crypto.gyp:crypto',
- '../google_apis/google_apis.gyp:google_apis',
- '../net/net.gyp:net',
- '../sql/sql.gyp:sql',
- 'protocol/sync_proto.gyp:sync_proto',
- ],
- 'conditions': [
- ['OS=="linux" and chromeos==1', {
- # Required by get_session_name.cc on Chrome OS.
- 'dependencies': [
- '../chromeos/chromeos.gyp:chromeos',
- ],
- }],
- ],
- 'export_dependent_settings': [
- # Propagate sync_proto since our headers include its generated
- # files.
- 'protocol/sync_proto.gyp:sync_proto',
- ],
- 'sources': [
- 'base/sync_export.h',
- 'engine/all_status.cc',
- 'engine/all_status.h',
- 'engine/apply_control_data_updates.cc',
- 'engine/apply_control_data_updates.h',
- 'engine/apply_updates_and_resolve_conflicts_command.cc',
- 'engine/apply_updates_and_resolve_conflicts_command.h',
- 'engine/backoff_delay_provider.cc',
- 'engine/backoff_delay_provider.h',
- 'engine/build_commit_command.cc',
- 'engine/build_commit_command.h',
- 'engine/commit.cc',
- 'engine/commit.h',
- 'engine/conflict_resolver.cc',
- 'engine/conflict_resolver.h',
- 'engine/conflict_util.cc',
- 'engine/conflict_util.h',
- 'engine/download_updates_command.cc',
- 'engine/download_updates_command.h',
- 'engine/get_commit_ids_command.cc',
- 'engine/get_commit_ids_command.h',
- 'engine/model_changing_syncer_command.cc',
- 'engine/model_changing_syncer_command.h',
- 'engine/net/server_connection_manager.cc',
- 'engine/net/server_connection_manager.h',
- 'engine/net/url_translator.cc',
- 'engine/net/url_translator.h',
- 'engine/nudge_source.cc',
- 'engine/nudge_source.h',
- 'engine/process_commit_response_command.cc',
- 'engine/process_commit_response_command.h',
- 'engine/process_updates_command.cc',
- 'engine/process_updates_command.h',
- 'engine/store_timestamps_command.cc',
- 'engine/store_timestamps_command.h',
- 'engine/sync_engine_event.cc',
- 'engine/sync_engine_event.h',
- 'engine/sync_scheduler.cc',
- 'engine/sync_scheduler.h',
- 'engine/sync_scheduler_impl.cc',
- 'engine/sync_scheduler_impl.h',
- 'engine/sync_session_job.cc',
- 'engine/sync_session_job.h',
- 'engine/syncer.cc',
- 'engine/syncer.h',
- 'engine/syncer_command.cc',
- 'engine/syncer_command.h',
- 'engine/syncer_proto_util.cc',
- 'engine/syncer_proto_util.h',
- 'engine/syncer_types.h',
- 'engine/syncer_util.cc',
- 'engine/syncer_util.h',
- 'engine/throttled_data_type_tracker.cc',
- 'engine/throttled_data_type_tracker.h',
- 'engine/traffic_logger.cc',
- 'engine/traffic_logger.h',
- 'engine/traffic_recorder.cc',
- 'engine/traffic_recorder.h',
- 'engine/update_applicator.cc',
- 'engine/update_applicator.h',
- 'js/js_arg_list.cc',
- 'js/js_arg_list.h',
- 'js/js_backend.h',
- 'js/js_controller.h',
- 'js/js_event_details.cc',
- 'js/js_event_details.h',
- 'js/js_event_handler.h',
- 'js/js_reply_handler.h',
- 'js/sync_js_controller.cc',
- 'js/sync_js_controller.h',
- 'protocol/proto_enum_conversions.cc',
- 'protocol/proto_enum_conversions.h',
- 'protocol/proto_value_conversions.cc',
- 'protocol/proto_value_conversions.h',
- 'protocol/sync_protocol_error.cc',
- 'protocol/sync_protocol_error.h',
- 'sessions/debug_info_getter.h',
- 'sessions/ordered_commit_set.cc',
- 'sessions/ordered_commit_set.h',
- 'sessions/status_controller.cc',
- 'sessions/status_controller.h',
- 'sessions/sync_session.cc',
- 'sessions/sync_session.h',
- 'sessions/sync_session_context.cc',
- 'sessions/sync_session_context.h',
- 'syncable/blob.h',
- 'syncable/dir_open_result.h',
- 'syncable/directory.cc',
- 'syncable/directory.h',
- 'syncable/directory_backing_store.cc',
- 'syncable/directory_backing_store.h',
- 'syncable/directory_change_delegate.h',
- 'syncable/entry.cc',
- 'syncable/entry.h',
- 'syncable/entry_kernel.cc',
- 'syncable/entry_kernel.h',
- 'syncable/in_memory_directory_backing_store.cc',
- 'syncable/in_memory_directory_backing_store.h',
- 'syncable/invalid_directory_backing_store.cc',
- 'syncable/invalid_directory_backing_store.h',
- 'syncable/metahandle_set.h',
- 'syncable/model_type.cc',
- 'syncable/mutable_entry.cc',
- 'syncable/mutable_entry.h',
- 'syncable/nigori_handler.cc',
- 'syncable/nigori_handler.h',
- 'syncable/nigori_util.cc',
- 'syncable/nigori_util.h',
- 'syncable/on_disk_directory_backing_store.cc',
- 'syncable/on_disk_directory_backing_store.h',
- 'syncable/scoped_kernel_lock.h',
- 'syncable/syncable-inl.h',
- 'syncable/syncable_base_transaction.cc',
- 'syncable/syncable_base_transaction.h',
- 'syncable/syncable_changes_version.h',
- 'syncable/syncable_columns.h',
- 'syncable/syncable_delete_journal.cc',
- 'syncable/syncable_delete_journal.h',
- 'syncable/syncable_enum_conversions.cc',
- 'syncable/syncable_enum_conversions.h',
- 'syncable/syncable_id.cc',
- 'syncable/syncable_id.h',
- 'syncable/syncable_proto_util.cc',
- 'syncable/syncable_proto_util.h',
- 'syncable/syncable_read_transaction.cc',
- 'syncable/syncable_read_transaction.h',
- 'syncable/syncable_util.cc',
- 'syncable/syncable_util.h',
- 'syncable/syncable_write_transaction.cc',
- 'syncable/syncable_write_transaction.h',
- 'syncable/transaction_observer.h',
- 'syncable/write_transaction_info.cc',
- 'syncable/write_transaction_info.h',
- 'util/cryptographer.cc',
- 'util/cryptographer.h',
-
- # TODO(akalin): Figure out a better place to put
- # data_encryption_win*; it's also used by autofill.
- 'util/data_encryption_win.cc',
- 'util/data_encryption_win.h',
-
- 'util/data_type_histogram.h',
- 'util/encryptor.h',
- 'util/extensions_activity_monitor.cc',
- 'util/extensions_activity_monitor.h',
- 'util/get_session_name.cc',
- 'util/get_session_name.h',
- 'util/get_session_name_ios.mm',
- 'util/get_session_name_ios.h',
- 'util/get_session_name_mac.mm',
- 'util/get_session_name_mac.h',
- 'util/get_session_name_win.cc',
- 'util/get_session_name_win.h',
- 'util/logging.cc',
- 'util/logging.h',
- 'util/nigori.cc',
- 'util/nigori.h',
- 'util/time.cc',
- 'util/time.h',
- ],
- },
-
- # The sync notifications library.
- {
- 'target_name': 'sync_notifier',
- 'type': 'static_library',
- 'variables': { 'enable_wexit_time_destructors': 1, },
- 'include_dirs': [
- '..',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- '../jingle/jingle.gyp:jingle_glue',
- '../jingle/jingle.gyp:notifier',
- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
- # TODO(akalin): Remove this (http://crbug.com/133352).
- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp',
- '../third_party/libjingle/libjingle.gyp:libjingle',
- 'sync_core',
- ],
- 'export_dependent_settings': [
- '../jingle/jingle.gyp:notifier',
- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
- ],
- 'sources': [
- 'notifier/invalidation_handler.h',
- 'notifier/invalidation_state_tracker.cc',
- 'notifier/invalidation_state_tracker.h',
- 'notifier/invalidation_util.cc',
- 'notifier/invalidation_util.h',
- 'notifier/invalidator_factory.cc',
- 'notifier/invalidator_factory.h',
- 'notifier/invalidator.h',
- 'notifier/invalidator_registrar.cc',
- 'notifier/invalidator_registrar.h',
- 'notifier/invalidator_state.cc',
- 'notifier/invalidator_state.h',
- 'notifier/object_id_invalidation_map.cc',
- 'notifier/object_id_invalidation_map.h',
- ],
- 'conditions': [
- ['OS != "android"', {
- 'sources': [
- 'notifier/ack_tracker.cc',
- 'notifier/ack_tracker.h',
- 'notifier/invalidation_notifier.cc',
- 'notifier/invalidation_notifier.h',
- 'notifier/non_blocking_invalidator.cc',
- 'notifier/non_blocking_invalidator.h',
- 'notifier/p2p_invalidator.cc',
- 'notifier/p2p_invalidator.h',
- 'notifier/push_client_channel.cc',
- 'notifier/push_client_channel.h',
- 'notifier/registration_manager.cc',
- 'notifier/registration_manager.h',
- 'notifier/state_writer.h',
- 'notifier/sync_invalidation_listener.cc',
- 'notifier/sync_invalidation_listener.h',
- 'notifier/sync_system_resources.cc',
- 'notifier/sync_system_resources.h',
- ],
- }],
- ],
- },
- # The sync internal API library.
- {
- 'target_name': 'sync_internal_api',
- 'type': 'static_library',
- 'variables': { 'enable_wexit_time_destructors': 1, },
- 'include_dirs': [
- '..',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- '../build/temp_gyp/googleurl.gyp:googleurl',
- '../net/net.gyp:net',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- 'sync_notifier',
- ],
- 'export_dependent_settings': [
- # Propagate sync_proto since our headers include its generated
- # files.
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- ],
- 'sources': [
- 'internal_api/base_node.cc',
- 'internal_api/base_transaction.cc',
- 'internal_api/change_record.cc',
- 'internal_api/change_reorder_buffer.cc',
- 'internal_api/change_reorder_buffer.h',
- 'internal_api/debug_info_event_listener.cc',
- 'internal_api/debug_info_event_listener.h',
- 'internal_api/http_bridge.cc',
- 'internal_api/internal_components_factory_impl.cc',
- 'internal_api/js_mutation_event_observer.cc',
- 'internal_api/js_mutation_event_observer.h',
- 'internal_api/js_sync_encryption_handler_observer.cc',
- 'internal_api/js_sync_encryption_handler_observer.h',
- 'internal_api/js_sync_manager_observer.cc',
- 'internal_api/js_sync_manager_observer.h',
- 'internal_api/public/base/enum_set.h',
- 'internal_api/public/base/invalidation.cc',
- 'internal_api/public/base/invalidation.h',
- 'internal_api/public/base/model_type.h',
- 'internal_api/public/base/model_type_invalidation_map.cc',
- 'internal_api/public/base/model_type_invalidation_map.h',
- 'internal_api/public/base/node_ordinal.cc',
- 'internal_api/public/base/node_ordinal.h',
- 'internal_api/public/base/ordinal.h',
- 'internal_api/public/base/progress_marker_map.cc',
- 'internal_api/public/base/progress_marker_map.h',
- 'internal_api/public/base/unique_position.cc',
- 'internal_api/public/base/unique_position.h',
- 'internal_api/public/base_node.h',
- 'internal_api/public/base_transaction.h',
- 'internal_api/public/change_record.h',
- 'internal_api/public/configure_reason.h',
- 'internal_api/public/data_type_association_stats.cc',
- 'internal_api/public/data_type_association_stats.h',
- 'internal_api/public/data_type_debug_info_listener.h',
- 'internal_api/public/engine/model_safe_worker.cc',
- 'internal_api/public/engine/model_safe_worker.h',
- 'internal_api/public/engine/passive_model_worker.cc',
- 'internal_api/public/engine/passive_model_worker.h',
- 'internal_api/public/engine/polling_constants.cc',
- 'internal_api/public/engine/polling_constants.h',
- 'internal_api/public/engine/sync_status.cc',
- 'internal_api/public/engine/sync_status.h',
- 'internal_api/public/http_bridge.h',
- 'internal_api/public/http_post_provider_factory.h',
- 'internal_api/public/http_post_provider_interface.h',
- 'internal_api/public/internal_components_factory_impl.h',
- 'internal_api/public/internal_components_factory.h',
- 'internal_api/public/delete_journal.h',
- 'internal_api/public/read_node.h',
- 'internal_api/public/read_transaction.h',
- 'internal_api/public/sessions/model_neutral_state.cc',
- 'internal_api/public/sessions/model_neutral_state.h',
- 'internal_api/public/sessions/sync_session_snapshot.cc',
- 'internal_api/public/sessions/sync_session_snapshot.h',
- 'internal_api/public/sessions/sync_source_info.cc',
- 'internal_api/public/sessions/sync_source_info.h',
- 'internal_api/public/sync_encryption_handler.cc',
- 'internal_api/public/sync_encryption_handler.h',
- 'internal_api/public/sync_manager_factory.h',
- 'internal_api/public/sync_manager.cc',
- 'internal_api/public/sync_manager.h',
- 'internal_api/public/user_share.h',
- 'internal_api/public/util/experiments.h',
- 'internal_api/public/util/immutable.h',
- 'internal_api/public/util/report_unrecoverable_error_function.h',
- 'internal_api/public/util/sync_string_conversions.cc',
- 'internal_api/public/util/sync_string_conversions.h',
- 'internal_api/public/util/syncer_error.cc',
- 'internal_api/public/util/syncer_error.h',
- 'internal_api/public/util/unrecoverable_error_handler.h',
- 'internal_api/public/util/unrecoverable_error_info.cc',
- 'internal_api/public/util/unrecoverable_error_info.h',
- 'internal_api/public/util/weak_handle.cc',
- 'internal_api/public/util/weak_handle.h',
- 'internal_api/public/write_node.h',
- 'internal_api/public/write_transaction.h',
- 'internal_api/delete_journal.cc',
- 'internal_api/read_node.cc',
- 'internal_api/read_transaction.cc',
- 'internal_api/sync_encryption_handler_impl.cc',
- 'internal_api/sync_encryption_handler_impl.h',
- 'internal_api/sync_manager_factory.cc',
- 'internal_api/sync_manager_impl.cc',
- 'internal_api/sync_manager_impl.h',
- 'internal_api/syncapi_internal.cc',
- 'internal_api/syncapi_internal.h',
- 'internal_api/syncapi_server_connection_manager.cc',
- 'internal_api/syncapi_server_connection_manager.h',
- 'internal_api/user_share.cc',
- 'internal_api/write_node.cc',
- 'internal_api/write_transaction.cc',
- ],
- },
-
- # The sync external API library.
- {
- 'target_name': 'sync_api',
- 'type': 'static_library',
- 'variables': { 'enable_wexit_time_destructors': 1, },
- 'include_dirs': [
- '..',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_internal_api',
- ],
- # We avoid including header files from sync_proto in our public
- # header files so we don't need to export its settings.
- 'sources': [
- 'api/string_ordinal.h',
- 'api/syncable_service.cc',
- 'api/syncable_service.h',
- 'api/sync_data.h',
- 'api/sync_data.cc',
- 'api/sync_change.h',
- 'api/sync_change.cc',
- 'api/sync_change_processor.h',
- 'api/sync_change_processor.cc',
- 'api/sync_error.h',
- 'api/sync_error.cc',
- 'api/sync_error_factory.h',
- 'api/sync_error_factory.cc',
- 'api/sync_merge_result.h',
- 'api/sync_merge_result.cc',
- 'api/time.h',
- ],
- },
-
- # The componentized sync library.
- {
- 'target_name': 'sync_component',
- # TODO(rsimha): Change the type of this target to '<(component)' after
- # exporting dependencies on 'sync_proto'.
- 'type': 'none',
- 'dependencies': [
- 'sync_api',
- 'sync_core',
- 'sync_notifier',
- 'sync_internal_api',
- ],
- 'export_dependent_settings': [
- 'sync_api',
- 'sync_core',
- 'sync_notifier',
- 'sync_internal_api',
- ],
- },
-
- # The public sync target. This depends on 'sync_component' and
- # 'sync_proto' separately since 'sync_proto' isn't exportable from
- # 'sync_component' (for now).
- {
- 'target_name': 'sync',
- 'type': 'none',
- 'dependencies': [
- 'sync_component',
- 'protocol/sync_proto.gyp:sync_proto',
- ],
- 'export_dependent_settings': [
- 'sync_component',
- 'protocol/sync_proto.gyp:sync_proto',
- ],
- },
-
- # Test support files for the 'sync_core' target.
- {
- 'target_name': 'test_support_sync_core',
- 'type': 'static_library',
- 'variables': { 'enable_wexit_time_destructors': 1, },
- 'include_dirs': [
- '..',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- ],
- 'export_dependent_settings': [
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- ],
- 'sources': [
- 'js/js_test_util.cc',
- 'js/js_test_util.h',
- 'sessions/test_util.cc',
- 'sessions/test_util.h',
- 'syncable/syncable_mock.cc',
- 'syncable/syncable_mock.h',
- 'test/callback_counter.h',
- 'test/engine/fake_model_worker.cc',
- 'test/engine/fake_model_worker.h',
- 'test/engine/fake_sync_scheduler.cc',
- 'test/engine/fake_sync_scheduler.h',
- 'test/engine/mock_connection_manager.cc',
- 'test/engine/mock_connection_manager.h',
- 'test/engine/syncer_command_test.cc',
- 'test/engine/syncer_command_test.h',
- 'test/engine/test_directory_setter_upper.cc',
- 'test/engine/test_directory_setter_upper.h',
- 'test/engine/test_id_factory.h',
- 'test/engine/test_syncable_utils.cc',
- 'test/engine/test_syncable_utils.h',
- 'test/fake_encryptor.cc',
- 'test/fake_encryptor.h',
- 'test/fake_sync_encryption_handler.h',
- 'test/fake_sync_encryption_handler.cc',
- 'test/fake_extensions_activity_monitor.cc',
- 'test/fake_extensions_activity_monitor.h',
- 'test/test_transaction_observer.cc',
- 'test/test_transaction_observer.h',
- 'test/null_directory_change_delegate.cc',
- 'test/null_directory_change_delegate.h',
- 'test/null_transaction_observer.cc',
- 'test/null_transaction_observer.h',
- 'test/sessions/test_scoped_session_event_listener.h',
- 'test/test_directory_backing_store.cc',
- 'test/test_directory_backing_store.h',
- 'util/test_unrecoverable_error_handler.cc',
- 'util/test_unrecoverable_error_handler.h',
- ],
- },
-
- # Test support files for the python sync test server.
- {
- 'target_name': 'test_support_sync_testserver',
- 'type': 'static_library',
- 'variables': { 'enable_wexit_time_destructors': 1, },
- 'include_dirs': [
- '..',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- '../net/net.gyp:net_test_support',
-
- # The sync test server uses Python modules generated by the sync protos.
- '../third_party/protobuf/protobuf.gyp:py_proto',
- 'protocol/sync_proto.gyp:sync_proto',
- ],
- 'export_dependent_settings': [
- '../base/base.gyp:base',
- '../net/net.gyp:net_test_support',
- ],
- 'sources': [
- 'test/local_sync_test_server.cc',
- 'test/local_sync_test_server.h',
- ],
- },
-
- # Test support files for the 'sync_notifier' target.
- {
- 'target_name': 'test_support_sync_notifier',
- 'type': 'static_library',
- 'include_dirs': [
- '..',
- ],
- 'dependencies': [
- '../testing/gmock.gyp:gmock',
- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp',
- 'sync_internal_api',
- 'sync_notifier',
- ],
- 'export_dependent_settings': [
- '../testing/gmock.gyp:gmock',
- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp',
- 'sync_internal_api',
- 'sync_notifier',
- ],
- 'sources': [
- 'notifier/fake_invalidation_state_tracker.cc',
- 'notifier/fake_invalidation_state_tracker.h',
- 'notifier/fake_invalidator.cc',
- 'notifier/fake_invalidator.h',
- 'notifier/fake_invalidation_handler.cc',
- 'notifier/fake_invalidation_handler.h',
- 'notifier/invalidator_test_template.cc',
- 'notifier/invalidator_test_template.h',
- 'notifier/object_id_invalidation_map_test_util.cc',
- 'notifier/object_id_invalidation_map_test_util.h',
- ],
- },
-
- # Test support files for the 'sync_internal_api' target.
- {
- 'target_name': 'test_support_sync_internal_api',
- 'type': 'static_library',
- 'variables': { 'enable_wexit_time_destructors': 1, },
- 'include_dirs': [
- '..',
- ],
- 'dependencies': [
- '../base/base.gyp:base',
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- 'sync_internal_api',
- 'sync_notifier',
- 'test_support_sync_core',
- ],
- 'export_dependent_settings': [
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- 'sync_internal_api',
- 'sync_notifier',
- 'test_support_sync_core',
- ],
- 'sources': [
- 'internal_api/public/base/invalidation_test_util.cc',
- 'internal_api/public/base/invalidation_test_util.h',
- 'internal_api/public/base/model_type_invalidation_map_test_util.cc',
- 'internal_api/public/base/model_type_invalidation_map_test_util.h',
- 'internal_api/public/base/model_type_test_util.cc',
- 'internal_api/public/base/model_type_test_util.h',
- 'internal_api/public/test/fake_sync_manager.h',
- 'internal_api/public/test/test_entry_factory.h',
- 'internal_api/public/test/test_internal_components_factory.h',
- 'internal_api/public/test/test_user_share.h',
- 'internal_api/test/fake_sync_manager.cc',
- 'internal_api/test/test_entry_factory.cc',
- 'internal_api/test/test_internal_components_factory.cc',
- 'internal_api/test/test_user_share.cc',
- ],
- },
-
- # Test support files for the 'sync_api' target.
- {
- 'target_name': 'test_support_sync_api',
- 'type': 'static_library',
- 'include_dirs': [
- '..',
- ],
- 'dependencies': [
- '../testing/gmock.gyp:gmock',
- 'sync_api',
- ],
- 'export_dependent_settings': [
- '../testing/gmock.gyp:gmock',
- 'sync_api',
- ],
- 'sources': [
- 'api/fake_syncable_service.cc',
- 'api/fake_syncable_service.h',
- 'api/sync_error_factory_mock.cc',
- 'api/sync_error_factory_mock.h',
- ],
- },
-
- # Unit tests for the 'sync_core' target. This cannot be a static
- # library because the unit test files have to be compiled directly
- # into the executable, so we push the target files to the
- # depending executable target via direct_dependent_settings.
- {
- 'target_name': 'sync_core_tests',
- 'type': 'none',
- # We only want unit test executables to include this target.
- 'suppress_wildcard': 1,
- 'dependencies': [
- '../base/base.gyp:base',
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- 'test_support_sync_core',
- ],
- # Propagate all dependencies since the actual compilation
- # happens in the dependents.
- 'export_dependent_settings': [
- '../base/base.gyp:base',
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- 'test_support_sync_core',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '..',
- ],
- 'sources': [
- 'internal_api/public/base/enum_set_unittest.cc',
- 'internal_api/public/base/model_type_invalidation_map_unittest.cc',
- 'internal_api/public/base/node_ordinal_unittest.cc',
- 'internal_api/public/base/ordinal_unittest.cc',
- 'internal_api/public/base/unique_position_unittest.cc',
- 'internal_api/public/engine/model_safe_worker_unittest.cc',
- 'internal_api/public/util/immutable_unittest.cc',
- 'internal_api/public/util/weak_handle_unittest.cc',
- 'engine/apply_control_data_updates_unittest.cc',
- 'engine/apply_updates_and_resolve_conflicts_command_unittest.cc',
- 'engine/backoff_delay_provider_unittest.cc',
- 'engine/build_commit_command_unittest.cc',
- 'engine/download_updates_command_unittest.cc',
- 'engine/model_changing_syncer_command_unittest.cc',
- 'engine/process_commit_response_command_unittest.cc',
- 'engine/process_updates_command_unittest.cc',
- 'engine/store_timestamps_command_unittest.cc',
- 'engine/sync_session_job_unittest.cc',
- 'engine/sync_scheduler_unittest.cc',
- 'engine/sync_scheduler_whitebox_unittest.cc',
- 'engine/syncer_proto_util_unittest.cc',
- 'engine/syncer_unittest.cc',
- 'engine/throttled_data_type_tracker_unittest.cc',
- 'engine/traffic_recorder_unittest.cc',
- 'js/js_arg_list_unittest.cc',
- 'js/js_event_details_unittest.cc',
- 'js/sync_js_controller_unittest.cc',
- 'protocol/proto_enum_conversions_unittest.cc',
- 'protocol/proto_value_conversions_unittest.cc',
- 'sessions/ordered_commit_set_unittest.cc',
- 'sessions/status_controller_unittest.cc',
- 'sessions/sync_session_unittest.cc',
- 'syncable/directory_backing_store_unittest.cc',
- 'syncable/model_type_unittest.cc',
- 'syncable/nigori_util_unittest.cc',
- 'syncable/syncable_enum_conversions_unittest.cc',
- 'syncable/syncable_id_unittest.cc',
- 'syncable/syncable_unittest.cc',
- 'syncable/syncable_util_unittest.cc',
- 'util/cryptographer_unittest.cc',
- 'util/data_encryption_win_unittest.cc',
- 'util/data_type_histogram_unittest.cc',
- 'util/get_session_name_unittest.cc',
- 'util/nigori_unittest.cc',
- 'util/protobuf_unittest.cc',
- ],
- 'conditions': [
- ['OS == "ios" and coverage != 0', {
- 'sources!': [
- # These sources can't be built with coverage due to a toolchain
- # bug: http://openradar.appspot.com/radar?id=1499403
- 'engine/syncer_unittest.cc',
-
- # These tests crash when run with coverage turned on due to an
- # issue with llvm_gcda_increment_indirect_counter:
- # http://crbug.com/156058
- 'syncable/directory_backing_store_unittest.cc',
- ],
- }],
- ],
- },
- },
-
- # Unit tests for the 'sync_notifier' target. This cannot be a static
- # library because the unit test files have to be compiled directly
- # into the executable, so we push the target files to the
- # depending executable target via direct_dependent_settings.
- {
- 'target_name': 'sync_notifier_tests',
- 'type': 'none',
- # We only want unit test executables to include this target.
- 'suppress_wildcard': 1,
- 'dependencies': [
- '../base/base.gyp:base',
- '../jingle/jingle.gyp:notifier_test_util',
- '../net/net.gyp:net_test_support',
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
- '../third_party/libjingle/libjingle.gyp:libjingle',
- 'sync_core',
- 'sync_notifier',
- 'test_support_sync_notifier',
- ],
- # Propagate all dependencies since the actual compilation
- # happens in the dependents.
- 'export_dependent_settings': [
- '../base/base.gyp:base',
- '../jingle/jingle.gyp:notifier_test_util',
- '../net/net.gyp:net_test_support',
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
- '../third_party/libjingle/libjingle.gyp:libjingle',
- 'sync_core',
- 'sync_notifier',
- 'test_support_sync_notifier',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '..',
- ],
- 'sources': [
- 'notifier/invalidator_factory_unittest.cc',
- ],
- 'conditions': [
- ['OS != "android"', {
- 'sources': [
- 'notifier/ack_tracker_unittest.cc',
- 'notifier/fake_invalidator_unittest.cc',
- 'notifier/invalidation_notifier_unittest.cc',
- 'notifier/invalidator_registrar_unittest.cc',
- 'notifier/non_blocking_invalidator_unittest.cc',
- 'notifier/p2p_invalidator_unittest.cc',
- 'notifier/push_client_channel_unittest.cc',
- 'notifier/registration_manager_unittest.cc',
- 'notifier/sync_invalidation_listener_unittest.cc',
- 'notifier/sync_system_resources_unittest.cc',
- ],
- }],
- ],
- },
- },
- # Unit tests for the 'sync_internal_api' target. This cannot be a static
- # library because the unit test files have to be compiled directly
- # into the executable, so we push the target files to the
- # depending executable target via direct_dependent_settings.
- {
- 'target_name': 'sync_internal_api_tests',
- 'type': 'none',
- # We only want unit test executables to include this target.
- 'suppress_wildcard': 1,
- 'dependencies': [
- '../base/base.gyp:base',
- '../net/net.gyp:net',
- '../net/net.gyp:net_test_support',
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- 'sync_internal_api',
- 'sync_notifier',
- 'test_support_sync_internal_api',
- ],
- # Propagate all dependencies since the actual compilation
- # happens in the dependents.
- 'export_dependent_settings': [
- '../base/base.gyp:base',
- '../net/net.gyp:net',
- '../net/net.gyp:net_test_support',
- '../testing/gmock.gyp:gmock',
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- 'sync_internal_api',
- 'sync_notifier',
- 'test_support_sync_internal_api',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '..',
- ],
- 'sources': [
- 'internal_api/debug_info_event_listener_unittest.cc',
- 'internal_api/http_bridge_unittest.cc',
- 'internal_api/js_mutation_event_observer_unittest.cc',
- 'internal_api/js_sync_encryption_handler_observer_unittest.cc',
- 'internal_api/js_sync_manager_observer_unittest.cc',
- 'internal_api/public/change_record_unittest.cc',
- 'internal_api/public/sessions/sync_session_snapshot_unittest.cc',
- 'internal_api/public/sessions/sync_source_info_unittest.cc',
- 'internal_api/syncapi_server_connection_manager_unittest.cc',
- 'internal_api/sync_encryption_handler_impl_unittest.cc',
- 'internal_api/sync_manager_impl_unittest.cc',
- ],
- 'conditions': [
- ['OS == "ios"', {
- 'sources!': [
- 'internal_api/http_bridge_unittest.cc',
- ],
- }],
- ],
- },
- },
-
- # Unit tests for the 'sync_api' target. This cannot be a static
- # library because the unit test files have to be compiled directly
- # into the executable, so we push the target files to the
- # depending executable target via direct_dependent_settings.
- {
- 'target_name': 'sync_api_tests',
- 'type': 'none',
- # We only want unit test executables to include this target.
- 'suppress_wildcard': 1,
- 'dependencies': [
- '../base/base.gyp:base',
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- 'sync_internal_api',
- 'test_support_sync_internal_api',
- ],
- # Propagate all dependencies since the actual compilation
- # happens in the dependents.
- 'export_dependent_settings': [
- '../base/base.gyp:base',
- '../testing/gtest.gyp:gtest',
- 'protocol/sync_proto.gyp:sync_proto',
- 'sync_core',
- 'sync_internal_api',
- 'test_support_sync_internal_api',
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '..',
- ],
- 'sources': [
- 'api/sync_change_unittest.cc',
- 'api/sync_error_unittest.cc',
- 'api/sync_merge_result_unittest.cc',
- ],
- },
- },
-
- # The unit test executable for sync tests.
- {
- 'target_name': 'sync_unit_tests',
- 'type': '<(gtest_target_type)',
- # Typed-parametrized tests generate exit-time destructors.
- 'variables': { 'enable_wexit_time_destructors': 0, },
- 'dependencies': [
- '../base/base.gyp:run_all_unittests',
- 'sync',
- 'sync_api_tests',
- 'sync_core_tests',
- 'sync_internal_api_tests',
- 'sync_notifier_tests',
- ],
- 'conditions': [
- # TODO(akalin): This is needed because histogram.cc uses
- # leak_annotations.h, which pulls this in. Make 'base'
- # propagate this dependency.
- ['OS=="linux" and linux_use_tcmalloc==1', {
- 'dependencies': [
- '../base/allocator/allocator.gyp:allocator',
- ],
- }],
- ['OS == "android" and gtest_target_type == "shared_library"', {
- 'dependencies': [
- '../testing/android/native_test.gyp:native_test_native_code',
- ],
- }],
- ],
- },
+ 'includes': [
+ 'sync_tests.gypi',
],
+
'conditions': [
- ['OS != "ios"', {
+ # Notes:
+ # 1) In static mode, the public 'sync' target has a target type of 'none',
+ # and is composed of the static library targets 'sync_api', 'sync_core',
+ # 'sync_internal_api', 'sync_notifier', and 'sync_proto'.
+ # 2) In component mode, we build the public 'sync' target into a single DLL,
+ # which includes the contents of sync_api.gypi, sync_core.gypi,
+ # sync_internal_api.gypi, sync_notifier.gypi, and sync_proto.gypi.
+ # 3) All external targets that depend on anything in sync/ must simply
+ # declare a dependency on 'sync.gyp:sync'
+ ['component=="static_library"', {
'targets': [
+ # The public sync static library target.
{
- 'target_name': 'sync_tools_helper',
- 'type': 'static_library',
- 'include_dirs': [
- '..',
- ],
+ 'target_name': 'sync',
+ 'type': 'none',
'dependencies': [
- '../base/base.gyp:base',
+ 'sync_api',
+ 'sync_core',
+ 'sync_internal_api',
'sync_notifier',
+ 'sync_proto',
],
'export_dependent_settings': [
- '../base/base.gyp:base',
'sync_notifier',
- ],
- 'sources': [
- 'tools/null_invalidation_state_tracker.cc',
- 'tools/null_invalidation_state_tracker.h',
+ 'sync_proto',
],
},
- # A tool that can be used to launch a python sync server instance.
+ # The sync external API library.
{
- 'target_name': 'run_sync_testserver',
- 'type': 'executable',
- 'dependencies': [
- '../base/base.gyp:base',
- '../base/base.gyp:test_support_base',
- '../net/net.gyp:net_test_support',
- '../testing/gtest.gyp:gtest',
- 'test_support_sync_testserver',
+ 'target_name': 'sync_api',
+ 'type': 'static_library',
+ 'variables': { 'enable_wexit_time_destructors': 1, },
+ 'includes': [
+ 'sync_api.gypi',
],
- 'sources': [
- 'tools/testserver/run_sync_testserver.cc',
+ 'dependencies': [
+ 'sync_internal_api',
+ 'sync_proto',
],
},
- # A tool to listen to sync notifications and print them out.
+ # The core sync library.
{
- 'target_name': 'sync_listen_notifications',
- 'type': 'executable',
+ 'target_name': 'sync_core',
+ 'type': 'static_library',
+ 'variables': { 'enable_wexit_time_destructors': 1, },
+ 'includes': [
+ 'sync_core.gypi',
+ ],
'dependencies': [
- '../base/base.gyp:base',
- '../jingle/jingle.gyp:notifier',
- '../net/net.gyp:net',
- '../net/net.gyp:net_test_support',
- 'sync',
- 'sync_tools_helper',
+ 'sync_proto',
],
- 'sources': [
- 'tools/sync_listen_notifications.cc',
+ 'export_dependent_settings': [
+ 'sync_proto',
],
},
- # A standalone command-line sync client.
+ # The sync internal API library.
{
- 'target_name': 'sync_client',
- 'type': 'executable',
- 'defines': [
- 'SYNC_TEST',
+ 'target_name': 'sync_internal_api',
+ 'type': 'static_library',
+ 'variables': { 'enable_wexit_time_destructors': 1, },
+ 'includes': [
+ 'sync_internal_api.gypi',
],
'dependencies': [
- '../base/base.gyp:base',
- '../jingle/jingle.gyp:notifier',
- '../net/net.gyp:net',
- '../net/net.gyp:net_test_support',
- 'sync',
- 'sync_tools_helper',
+ 'sync_core',
+ 'sync_notifier',
+ 'sync_proto',
],
- 'sources': [
- 'tools/sync_client.cc',
+ 'export_dependent_settings': [
+ 'sync_core',
+ 'sync_proto',
],
},
- ],
- }],
- ['OS == "android"', {
- 'targets': [
+
+ # The sync notifications library.
{
- 'target_name': 'sync_java',
- 'type': 'none',
- 'variables': {
- 'package_name': 'sync',
- 'java_in_dir': '../sync/android/java',
- },
+ 'target_name': 'sync_notifier',
+ 'type': 'static_library',
+ 'variables': { 'enable_wexit_time_destructors': 1, },
+ 'includes': [
+ 'sync_notifier.gypi',
+ ],
'dependencies': [
- '../base/base.gyp:base_java',
- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_javalib',
- '../third_party/guava/guava.gyp:guava_javalib',
- '../third_party/jsr-305/jsr-305.gyp:jsr_305_javalib',
+ 'sync_core',
],
- 'includes': [ '../build/java.gypi' ],
},
+
+ # The sync protocol buffer library.
{
- 'target_name': 'sync_javatests',
- 'type': 'none',
- 'variables': {
- 'package_name': 'sync_javatests',
- 'java_in_dir': '../sync/android/javatests',
- },
- 'dependencies': [
- 'sync_java',
- '../base/base.gyp:base_java_test_support',
+ 'target_name': 'sync_proto',
+ 'type': 'static_library',
+ 'variables': { 'enable_wexit_time_destructors': 1, },
+ 'includes': [
+ 'sync_proto.gypi',
],
- 'includes': [ '../build/java.gypi' ],
},
],
- }],
-
- # Special target to wrap a gtest_target_type==shared_library
- # sync_unit_tests into an android apk for execution.
- ['OS == "android" and gtest_target_type == "shared_library"', {
+ },
+ { # component != static_library
'targets': [
+ # The public sync shared library target.
{
- 'target_name': 'sync_unit_tests_apk',
- 'type': 'none',
- 'dependencies': [
- 'sync_unit_tests',
+ 'target_name': 'sync',
+ 'type': 'shared_library',
+ 'variables': { 'enable_wexit_time_destructors': 1, },
+ 'includes': [
+ 'sync_api.gypi',
+ 'sync_core.gypi',
+ 'sync_internal_api.gypi',
+ 'sync_notifier.gypi',
+ 'sync_proto.gypi',
],
- 'variables': {
- 'test_suite_name': 'sync_unit_tests',
- 'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)sync_unit_tests<(SHARED_LIB_SUFFIX)',
- },
- 'includes': [ '../build/apk_test.gypi' ],
},
],
}],
diff --git a/sync/sync_api.gypi b/sync/sync_api.gypi
new file mode 100644
index 0000000..188fc32
--- /dev/null
+++ b/sync/sync_api.gypi
@@ -0,0 +1,33 @@
+# Copyright 2013 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_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'SYNC_IMPLEMENTATION',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ ],
+ 'sources': [
+ 'api/string_ordinal.h',
+ 'api/syncable_service.cc',
+ 'api/syncable_service.h',
+ 'api/sync_data.h',
+ 'api/sync_data.cc',
+ 'api/sync_change.h',
+ 'api/sync_change.cc',
+ 'api/sync_change_processor.h',
+ 'api/sync_change_processor.cc',
+ 'api/sync_error.h',
+ 'api/sync_error.cc',
+ 'api/sync_error_factory.h',
+ 'api/sync_error_factory.cc',
+ 'api/sync_merge_result.h',
+ 'api/sync_merge_result.cc',
+ 'api/time.h',
+ ],
+}
diff --git a/sync/sync_core.gypi b/sync/sync_core.gypi
new file mode 100644
index 0000000..716f2af
--- /dev/null
+++ b/sync/sync_core.gypi
@@ -0,0 +1,190 @@
+# Copyright 2013 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_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'SYNC_IMPLEMENTATION',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../base/base.gyp:base_i18n',
+ '../build/temp_gyp/googleurl.gyp:googleurl',
+ '../crypto/crypto.gyp:crypto',
+ '../google_apis/google_apis.gyp:google_apis',
+ '../net/net.gyp:net',
+ '../sql/sql.gyp:sql',
+ ],
+ 'conditions': [
+ ['OS=="linux" and chromeos==1', {
+ # Required by get_session_name.cc on Chrome OS.
+ 'dependencies': [
+ '../chromeos/chromeos.gyp:chromeos',
+ ],
+ }],
+ ],
+ 'sources': [
+ 'base/sync_export.h',
+ 'engine/all_status.cc',
+ 'engine/all_status.h',
+ 'engine/apply_control_data_updates.cc',
+ 'engine/apply_control_data_updates.h',
+ 'engine/apply_updates_and_resolve_conflicts_command.cc',
+ 'engine/apply_updates_and_resolve_conflicts_command.h',
+ 'engine/backoff_delay_provider.cc',
+ 'engine/backoff_delay_provider.h',
+ 'engine/build_commit_command.cc',
+ 'engine/build_commit_command.h',
+ 'engine/commit.cc',
+ 'engine/commit.h',
+ 'engine/conflict_resolver.cc',
+ 'engine/conflict_resolver.h',
+ 'engine/conflict_util.cc',
+ 'engine/conflict_util.h',
+ 'engine/download_updates_command.cc',
+ 'engine/download_updates_command.h',
+ 'engine/get_commit_ids_command.cc',
+ 'engine/get_commit_ids_command.h',
+ 'engine/model_changing_syncer_command.cc',
+ 'engine/model_changing_syncer_command.h',
+ 'engine/net/server_connection_manager.cc',
+ 'engine/net/server_connection_manager.h',
+ 'engine/net/url_translator.cc',
+ 'engine/net/url_translator.h',
+ 'engine/nudge_source.cc',
+ 'engine/nudge_source.h',
+ 'engine/process_commit_response_command.cc',
+ 'engine/process_commit_response_command.h',
+ 'engine/process_updates_command.cc',
+ 'engine/process_updates_command.h',
+ 'engine/store_timestamps_command.cc',
+ 'engine/store_timestamps_command.h',
+ 'engine/sync_engine_event.cc',
+ 'engine/sync_engine_event.h',
+ 'engine/sync_scheduler.cc',
+ 'engine/sync_scheduler.h',
+ 'engine/sync_scheduler_impl.cc',
+ 'engine/sync_scheduler_impl.h',
+ 'engine/sync_session_job.cc',
+ 'engine/sync_session_job.h',
+ 'engine/syncer.cc',
+ 'engine/syncer.h',
+ 'engine/syncer_command.cc',
+ 'engine/syncer_command.h',
+ 'engine/syncer_proto_util.cc',
+ 'engine/syncer_proto_util.h',
+ 'engine/syncer_types.h',
+ 'engine/syncer_util.cc',
+ 'engine/syncer_util.h',
+ 'engine/throttled_data_type_tracker.cc',
+ 'engine/throttled_data_type_tracker.h',
+ 'engine/traffic_logger.cc',
+ 'engine/traffic_logger.h',
+ 'engine/traffic_recorder.cc',
+ 'engine/traffic_recorder.h',
+ 'engine/update_applicator.cc',
+ 'engine/update_applicator.h',
+ 'js/js_arg_list.cc',
+ 'js/js_arg_list.h',
+ 'js/js_backend.h',
+ 'js/js_controller.h',
+ 'js/js_event_details.cc',
+ 'js/js_event_details.h',
+ 'js/js_event_handler.h',
+ 'js/js_reply_handler.h',
+ 'js/sync_js_controller.cc',
+ 'js/sync_js_controller.h',
+ 'protocol/proto_enum_conversions.cc',
+ 'protocol/proto_enum_conversions.h',
+ 'protocol/proto_value_conversions.cc',
+ 'protocol/proto_value_conversions.h',
+ 'protocol/sync_protocol_error.cc',
+ 'protocol/sync_protocol_error.h',
+ 'sessions/debug_info_getter.h',
+ 'sessions/ordered_commit_set.cc',
+ 'sessions/ordered_commit_set.h',
+ 'sessions/status_controller.cc',
+ 'sessions/status_controller.h',
+ 'sessions/sync_session.cc',
+ 'sessions/sync_session.h',
+ 'sessions/sync_session_context.cc',
+ 'sessions/sync_session_context.h',
+ 'syncable/blob.h',
+ 'syncable/dir_open_result.h',
+ 'syncable/directory.cc',
+ 'syncable/directory.h',
+ 'syncable/directory_backing_store.cc',
+ 'syncable/directory_backing_store.h',
+ 'syncable/directory_change_delegate.h',
+ 'syncable/entry.cc',
+ 'syncable/entry.h',
+ 'syncable/entry_kernel.cc',
+ 'syncable/entry_kernel.h',
+ 'syncable/in_memory_directory_backing_store.cc',
+ 'syncable/in_memory_directory_backing_store.h',
+ 'syncable/invalid_directory_backing_store.cc',
+ 'syncable/invalid_directory_backing_store.h',
+ 'syncable/metahandle_set.h',
+ 'syncable/model_type.cc',
+ 'syncable/mutable_entry.cc',
+ 'syncable/mutable_entry.h',
+ 'syncable/nigori_handler.cc',
+ 'syncable/nigori_handler.h',
+ 'syncable/nigori_util.cc',
+ 'syncable/nigori_util.h',
+ 'syncable/on_disk_directory_backing_store.cc',
+ 'syncable/on_disk_directory_backing_store.h',
+ 'syncable/scoped_kernel_lock.h',
+ 'syncable/syncable-inl.h',
+ 'syncable/syncable_base_transaction.cc',
+ 'syncable/syncable_base_transaction.h',
+ 'syncable/syncable_changes_version.h',
+ 'syncable/syncable_columns.h',
+ 'syncable/syncable_delete_journal.cc',
+ 'syncable/syncable_delete_journal.h',
+ 'syncable/syncable_enum_conversions.cc',
+ 'syncable/syncable_enum_conversions.h',
+ 'syncable/syncable_id.cc',
+ 'syncable/syncable_id.h',
+ 'syncable/syncable_proto_util.cc',
+ 'syncable/syncable_proto_util.h',
+ 'syncable/syncable_read_transaction.cc',
+ 'syncable/syncable_read_transaction.h',
+ 'syncable/syncable_util.cc',
+ 'syncable/syncable_util.h',
+ 'syncable/syncable_write_transaction.cc',
+ 'syncable/syncable_write_transaction.h',
+ 'syncable/transaction_observer.h',
+ 'syncable/write_transaction_info.cc',
+ 'syncable/write_transaction_info.h',
+ 'util/cryptographer.cc',
+ 'util/cryptographer.h',
+
+ # TODO(akalin): Figure out a better place to put
+ # data_encryption_win*; it's also used by autofill.
+ 'util/data_encryption_win.cc',
+ 'util/data_encryption_win.h',
+
+ 'util/data_type_histogram.h',
+ 'util/encryptor.h',
+ 'util/extensions_activity_monitor.cc',
+ 'util/extensions_activity_monitor.h',
+ 'util/get_session_name.cc',
+ 'util/get_session_name.h',
+ 'util/get_session_name_ios.mm',
+ 'util/get_session_name_ios.h',
+ 'util/get_session_name_mac.mm',
+ 'util/get_session_name_mac.h',
+ 'util/get_session_name_win.cc',
+ 'util/get_session_name_win.h',
+ 'util/logging.cc',
+ 'util/logging.h',
+ 'util/nigori.cc',
+ 'util/nigori.h',
+ 'util/time.cc',
+ 'util/time.h',
+ ],
+}
diff --git a/sync/sync_internal_api.gypi b/sync/sync_internal_api.gypi
new file mode 100644
index 0000000..04c36a6
--- /dev/null
+++ b/sync/sync_internal_api.gypi
@@ -0,0 +1,111 @@
+# Copyright 2013 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_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'SYNC_IMPLEMENTATION',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../build/temp_gyp/googleurl.gyp:googleurl',
+ '../net/net.gyp:net',
+ ],
+ 'sources': [
+ 'internal_api/base_node.cc',
+ 'internal_api/base_transaction.cc',
+ 'internal_api/change_record.cc',
+ 'internal_api/change_reorder_buffer.cc',
+ 'internal_api/change_reorder_buffer.h',
+ 'internal_api/delete_journal.cc',
+ 'internal_api/debug_info_event_listener.cc',
+ 'internal_api/debug_info_event_listener.h',
+ 'internal_api/http_bridge.cc',
+ 'internal_api/internal_components_factory_impl.cc',
+ 'internal_api/js_mutation_event_observer.cc',
+ 'internal_api/js_mutation_event_observer.h',
+ 'internal_api/js_sync_encryption_handler_observer.cc',
+ 'internal_api/js_sync_encryption_handler_observer.h',
+ 'internal_api/js_sync_manager_observer.cc',
+ 'internal_api/js_sync_manager_observer.h',
+ 'internal_api/public/base/enum_set.h',
+ 'internal_api/public/base/invalidation.cc',
+ 'internal_api/public/base/invalidation.h',
+ 'internal_api/public/base/model_type.h',
+ 'internal_api/public/base/model_type_invalidation_map.cc',
+ 'internal_api/public/base/model_type_invalidation_map.h',
+ 'internal_api/public/base/node_ordinal.cc',
+ 'internal_api/public/base/node_ordinal.h',
+ 'internal_api/public/base/ordinal.h',
+ 'internal_api/public/base/progress_marker_map.cc',
+ 'internal_api/public/base/progress_marker_map.h',
+ 'internal_api/public/base/unique_position.cc',
+ 'internal_api/public/base/unique_position.h',
+ 'internal_api/public/base_node.h',
+ 'internal_api/public/base_transaction.h',
+ 'internal_api/public/change_record.h',
+ 'internal_api/public/configure_reason.h',
+ 'internal_api/public/data_type_association_stats.cc',
+ 'internal_api/public/data_type_association_stats.h',
+ 'internal_api/public/data_type_debug_info_listener.h',
+ 'internal_api/public/delete_journal.h',
+ 'internal_api/public/engine/model_safe_worker.cc',
+ 'internal_api/public/engine/model_safe_worker.h',
+ 'internal_api/public/engine/passive_model_worker.cc',
+ 'internal_api/public/engine/passive_model_worker.h',
+ 'internal_api/public/engine/polling_constants.cc',
+ 'internal_api/public/engine/polling_constants.h',
+ 'internal_api/public/engine/sync_status.cc',
+ 'internal_api/public/engine/sync_status.h',
+ 'internal_api/public/http_bridge.h',
+ 'internal_api/public/http_post_provider_factory.h',
+ 'internal_api/public/http_post_provider_interface.h',
+ 'internal_api/public/internal_components_factory_impl.h',
+ 'internal_api/public/internal_components_factory.h',
+ 'internal_api/public/read_node.h',
+ 'internal_api/public/read_transaction.h',
+ 'internal_api/public/sessions/model_neutral_state.cc',
+ 'internal_api/public/sessions/model_neutral_state.h',
+ 'internal_api/public/sessions/sync_session_snapshot.cc',
+ 'internal_api/public/sessions/sync_session_snapshot.h',
+ 'internal_api/public/sessions/sync_source_info.cc',
+ 'internal_api/public/sessions/sync_source_info.h',
+ 'internal_api/public/sync_encryption_handler.cc',
+ 'internal_api/public/sync_encryption_handler.h',
+ 'internal_api/public/sync_manager_factory.h',
+ 'internal_api/public/sync_manager.cc',
+ 'internal_api/public/sync_manager.h',
+ 'internal_api/public/user_share.h',
+ 'internal_api/public/util/experiments.h',
+ 'internal_api/public/util/immutable.h',
+ 'internal_api/public/util/report_unrecoverable_error_function.h',
+ 'internal_api/public/util/sync_string_conversions.cc',
+ 'internal_api/public/util/sync_string_conversions.h',
+ 'internal_api/public/util/syncer_error.cc',
+ 'internal_api/public/util/syncer_error.h',
+ 'internal_api/public/util/unrecoverable_error_handler.h',
+ 'internal_api/public/util/unrecoverable_error_info.cc',
+ 'internal_api/public/util/unrecoverable_error_info.h',
+ 'internal_api/public/util/weak_handle.cc',
+ 'internal_api/public/util/weak_handle.h',
+ 'internal_api/public/write_node.h',
+ 'internal_api/public/write_transaction.h',
+ 'internal_api/read_node.cc',
+ 'internal_api/read_transaction.cc',
+ 'internal_api/sync_encryption_handler_impl.cc',
+ 'internal_api/sync_encryption_handler_impl.h',
+ 'internal_api/sync_manager_factory.cc',
+ 'internal_api/sync_manager_impl.cc',
+ 'internal_api/sync_manager_impl.h',
+ 'internal_api/syncapi_internal.cc',
+ 'internal_api/syncapi_internal.h',
+ 'internal_api/syncapi_server_connection_manager.cc',
+ 'internal_api/syncapi_server_connection_manager.h',
+ 'internal_api/user_share.cc',
+ 'internal_api/write_node.cc',
+ 'internal_api/write_transaction.cc',
+ ],
+}
diff --git a/sync/sync_notifier.gypi b/sync/sync_notifier.gypi
new file mode 100644
index 0000000..18ef4b9
--- /dev/null
+++ b/sync/sync_notifier.gypi
@@ -0,0 +1,64 @@
+# Copyright 2013 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_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'SYNC_IMPLEMENTATION',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../jingle/jingle.gyp:jingle_glue',
+ '../jingle/jingle.gyp:notifier',
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
+ # TODO(akalin): Remove this (http://crbug.com/133352).
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp',
+ '../third_party/libjingle/libjingle.gyp:libjingle',
+ ],
+ 'export_dependent_settings': [
+ '../jingle/jingle.gyp:notifier',
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
+ ],
+ 'sources': [
+ 'notifier/invalidation_handler.h',
+ 'notifier/invalidation_state_tracker.cc',
+ 'notifier/invalidation_state_tracker.h',
+ 'notifier/invalidation_util.cc',
+ 'notifier/invalidation_util.h',
+ 'notifier/invalidator_factory.cc',
+ 'notifier/invalidator_factory.h',
+ 'notifier/invalidator.h',
+ 'notifier/invalidator_registrar.cc',
+ 'notifier/invalidator_registrar.h',
+ 'notifier/invalidator_state.cc',
+ 'notifier/invalidator_state.h',
+ 'notifier/object_id_invalidation_map.cc',
+ 'notifier/object_id_invalidation_map.h',
+ ],
+ 'conditions': [
+ ['OS != "android"', {
+ 'sources': [
+ 'notifier/ack_tracker.cc',
+ 'notifier/ack_tracker.h',
+ 'notifier/invalidation_notifier.cc',
+ 'notifier/invalidation_notifier.h',
+ 'notifier/non_blocking_invalidator.cc',
+ 'notifier/non_blocking_invalidator.h',
+ 'notifier/p2p_invalidator.cc',
+ 'notifier/p2p_invalidator.h',
+ 'notifier/push_client_channel.cc',
+ 'notifier/push_client_channel.h',
+ 'notifier/registration_manager.cc',
+ 'notifier/registration_manager.h',
+ 'notifier/state_writer.h',
+ 'notifier/sync_invalidation_listener.cc',
+ 'notifier/sync_invalidation_listener.h',
+ 'notifier/sync_system_resources.cc',
+ 'notifier/sync_system_resources.h',
+ ],
+ }],
+ ],
+}
diff --git a/sync/sync_proto.gypi b/sync/sync_proto.gypi
new file mode 100644
index 0000000..0e288fb
--- /dev/null
+++ b/sync/sync_proto.gypi
@@ -0,0 +1,51 @@
+# Copyright 2013 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_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'SYNC_IMPLEMENTATION',
+ ],
+ 'sources': [
+ 'protocol/app_notification_specifics.proto',
+ 'protocol/app_setting_specifics.proto',
+ 'protocol/app_specifics.proto',
+ 'protocol/autofill_specifics.proto',
+ 'protocol/bookmark_specifics.proto',
+ 'protocol/client_commands.proto',
+ 'protocol/client_debug_info.proto',
+ 'protocol/device_info_specifics.proto',
+ 'protocol/dictionary_specifics.proto',
+ 'protocol/encryption.proto',
+ 'protocol/experiments_specifics.proto',
+ 'protocol/extension_setting_specifics.proto',
+ 'protocol/extension_specifics.proto',
+ 'protocol/get_updates_caller_info.proto',
+ 'protocol/history_delete_directive_specifics.proto',
+ 'protocol/nigori_specifics.proto',
+ 'protocol/password_specifics.proto',
+ 'protocol/preference_specifics.proto',
+ 'protocol/priority_preference_specifics.proto',
+ 'protocol/search_engine_specifics.proto',
+ 'protocol/session_specifics.proto',
+ 'protocol/sync.proto',
+ 'protocol/sync_enums.proto',
+ 'protocol/synced_notification_specifics.proto',
+ 'protocol/test.proto',
+ 'protocol/theme_specifics.proto',
+ 'protocol/typed_url_specifics.proto',
+ 'protocol/unique_position.proto',
+ ],
+ 'variables': {
+ 'proto_in_dir': './protocol',
+ 'proto_out_dir': 'sync/protocol',
+ 'cc_generator_options': 'dllexport_decl=SYNC_EXPORT:',
+ 'cc_include': 'sync/base/sync_export.h',
+ },
+ 'includes': [
+ '../build/protoc.gypi'
+ ],
+}
diff --git a/sync/sync_tests.gypi b/sync/sync_tests.gypi
new file mode 100644
index 0000000..81424c8
--- /dev/null
+++ b/sync/sync_tests.gypi
@@ -0,0 +1,617 @@
+# Copyright 2013 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.
+
+{
+ 'targets': [
+ # Test support files for the 'sync_core' target.
+ {
+ 'target_name': 'test_support_sync_core',
+ 'type': 'static_library',
+ 'variables': { 'enable_wexit_time_destructors': 1, },
+ 'include_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'SYNC_TEST'
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ ],
+ 'export_dependent_settings': [
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ ],
+ 'sources': [
+ 'js/js_test_util.cc',
+ 'js/js_test_util.h',
+ 'sessions/test_util.cc',
+ 'sessions/test_util.h',
+ 'syncable/syncable_mock.cc',
+ 'syncable/syncable_mock.h',
+ 'test/callback_counter.h',
+ 'test/engine/fake_model_worker.cc',
+ 'test/engine/fake_model_worker.h',
+ 'test/engine/fake_sync_scheduler.cc',
+ 'test/engine/fake_sync_scheduler.h',
+ 'test/engine/mock_connection_manager.cc',
+ 'test/engine/mock_connection_manager.h',
+ 'test/engine/syncer_command_test.cc',
+ 'test/engine/syncer_command_test.h',
+ 'test/engine/test_directory_setter_upper.cc',
+ 'test/engine/test_directory_setter_upper.h',
+ 'test/engine/test_id_factory.h',
+ 'test/engine/test_syncable_utils.cc',
+ 'test/engine/test_syncable_utils.h',
+ 'test/fake_encryptor.cc',
+ 'test/fake_encryptor.h',
+ 'test/fake_sync_encryption_handler.h',
+ 'test/fake_sync_encryption_handler.cc',
+ 'test/fake_extensions_activity_monitor.cc',
+ 'test/fake_extensions_activity_monitor.h',
+ 'test/test_transaction_observer.cc',
+ 'test/test_transaction_observer.h',
+ 'test/null_directory_change_delegate.cc',
+ 'test/null_directory_change_delegate.h',
+ 'test/null_transaction_observer.cc',
+ 'test/null_transaction_observer.h',
+ 'test/sessions/test_scoped_session_event_listener.h',
+ 'test/test_directory_backing_store.cc',
+ 'test/test_directory_backing_store.h',
+ 'util/test_unrecoverable_error_handler.cc',
+ 'util/test_unrecoverable_error_handler.h',
+ ],
+ },
+
+ # Test support files for the python sync test server.
+ {
+ 'target_name': 'test_support_sync_testserver',
+ 'type': 'static_library',
+ 'variables': { 'enable_wexit_time_destructors': 1, },
+ 'include_dirs': [
+ '..',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../net/net.gyp:net_test_support',
+ # The sync test server uses Python modules generated by the sync protos.
+ '../third_party/protobuf/protobuf.gyp:py_proto',
+ 'sync',
+ ],
+ 'export_dependent_settings': [
+ '../base/base.gyp:base',
+ '../net/net.gyp:net_test_support',
+ ],
+ 'sources': [
+ 'test/local_sync_test_server.cc',
+ 'test/local_sync_test_server.h',
+ ],
+ },
+
+ # Test support files for the 'sync_notifier' target.
+ {
+ 'target_name': 'test_support_sync_notifier',
+ 'type': 'static_library',
+ 'include_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'SYNC_TEST'
+ ],
+ 'dependencies': [
+ '../testing/gmock.gyp:gmock',
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp',
+ 'sync',
+ ],
+ 'export_dependent_settings': [
+ '../testing/gmock.gyp:gmock',
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp',
+ 'sync',
+ ],
+ 'sources': [
+ 'notifier/fake_invalidation_state_tracker.cc',
+ 'notifier/fake_invalidation_state_tracker.h',
+ 'notifier/fake_invalidator.cc',
+ 'notifier/fake_invalidator.h',
+ 'notifier/fake_invalidation_handler.cc',
+ 'notifier/fake_invalidation_handler.h',
+ 'notifier/invalidator_test_template.cc',
+ 'notifier/invalidator_test_template.h',
+ 'notifier/object_id_invalidation_map_test_util.cc',
+ 'notifier/object_id_invalidation_map_test_util.h',
+ ],
+ },
+
+ # Test support files for the 'sync_internal_api' target.
+ {
+ 'target_name': 'test_support_sync_internal_api',
+ 'type': 'static_library',
+ 'variables': { 'enable_wexit_time_destructors': 1, },
+ 'include_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'SYNC_TEST'
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ 'test_support_sync_core',
+ ],
+ 'export_dependent_settings': [
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ 'test_support_sync_core',
+ ],
+ 'sources': [
+ 'internal_api/public/base/invalidation_test_util.cc',
+ 'internal_api/public/base/invalidation_test_util.h',
+ 'internal_api/public/base/model_type_invalidation_map_test_util.cc',
+ 'internal_api/public/base/model_type_invalidation_map_test_util.h',
+ 'internal_api/public/base/model_type_test_util.cc',
+ 'internal_api/public/base/model_type_test_util.h',
+ 'internal_api/public/test/fake_sync_manager.h',
+ 'internal_api/public/test/test_entry_factory.h',
+ 'internal_api/public/test/test_internal_components_factory.h',
+ 'internal_api/public/test/test_user_share.h',
+ 'internal_api/test/fake_sync_manager.cc',
+ 'internal_api/test/test_entry_factory.cc',
+ 'internal_api/test/test_internal_components_factory.cc',
+ 'internal_api/test/test_user_share.cc',
+ ],
+ },
+
+ # Test support files for the 'sync_api' target.
+ {
+ 'target_name': 'test_support_sync_api',
+ 'type': 'static_library',
+ 'include_dirs': [
+ '..',
+ ],
+ 'defines': [
+ 'SYNC_TEST'
+ ],
+ 'dependencies': [
+ '../testing/gmock.gyp:gmock',
+ 'sync',
+ ],
+ 'export_dependent_settings': [
+ '../testing/gmock.gyp:gmock',
+ 'sync',
+ ],
+ 'sources': [
+ 'api/fake_syncable_service.cc',
+ 'api/fake_syncable_service.h',
+ 'api/sync_error_factory_mock.cc',
+ 'api/sync_error_factory_mock.h',
+ ],
+ },
+
+ # Unit tests for the 'sync_core' target. This cannot be a static
+ # library because the unit test files have to be compiled directly
+ # into the executable, so we push the target files to the
+ # depending executable target via direct_dependent_settings.
+ {
+ 'target_name': 'sync_core_tests',
+ 'type': 'none',
+ # We only want unit test executables to include this target.
+ 'suppress_wildcard': 1,
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../sql/sql.gyp:sql',
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ 'test_support_sync_core',
+ ],
+ 'conditions': [
+ ['OS=="linux" and chromeos==1', {
+ # Required by get_session_name_unittest.cc on Chrome OS.
+ 'dependencies': [
+ '../chromeos/chromeos.gyp:chromeos',
+ ],
+ }],
+ ],
+ # Propagate all dependencies since the actual compilation
+ # happens in the dependents.
+ 'export_dependent_settings': [
+ '../base/base.gyp:base',
+ '../sql/sql.gyp:sql',
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ 'test_support_sync_core',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '..',
+ ],
+ 'sources': [
+ 'internal_api/public/base/enum_set_unittest.cc',
+ 'internal_api/public/base/model_type_invalidation_map_unittest.cc',
+ 'internal_api/public/base/node_ordinal_unittest.cc',
+ 'internal_api/public/base/ordinal_unittest.cc',
+ 'internal_api/public/base/unique_position_unittest.cc',
+ 'internal_api/public/engine/model_safe_worker_unittest.cc',
+ 'internal_api/public/util/immutable_unittest.cc',
+ 'internal_api/public/util/weak_handle_unittest.cc',
+ 'engine/apply_control_data_updates_unittest.cc',
+ 'engine/apply_updates_and_resolve_conflicts_command_unittest.cc',
+ 'engine/backoff_delay_provider_unittest.cc',
+ 'engine/build_commit_command_unittest.cc',
+ 'engine/download_updates_command_unittest.cc',
+ 'engine/model_changing_syncer_command_unittest.cc',
+ 'engine/process_commit_response_command_unittest.cc',
+ 'engine/process_updates_command_unittest.cc',
+ 'engine/store_timestamps_command_unittest.cc',
+ 'engine/sync_session_job_unittest.cc',
+ 'engine/sync_scheduler_unittest.cc',
+ 'engine/sync_scheduler_whitebox_unittest.cc',
+ 'engine/syncer_proto_util_unittest.cc',
+ 'engine/syncer_unittest.cc',
+ 'engine/throttled_data_type_tracker_unittest.cc',
+ 'engine/traffic_recorder_unittest.cc',
+ 'js/js_arg_list_unittest.cc',
+ 'js/js_event_details_unittest.cc',
+ 'js/sync_js_controller_unittest.cc',
+ 'protocol/proto_enum_conversions_unittest.cc',
+ 'protocol/proto_value_conversions_unittest.cc',
+ 'sessions/ordered_commit_set_unittest.cc',
+ 'sessions/status_controller_unittest.cc',
+ 'sessions/sync_session_unittest.cc',
+ 'syncable/directory_backing_store_unittest.cc',
+ 'syncable/model_type_unittest.cc',
+ 'syncable/nigori_util_unittest.cc',
+ 'syncable/syncable_enum_conversions_unittest.cc',
+ 'syncable/syncable_id_unittest.cc',
+ 'syncable/syncable_unittest.cc',
+ 'syncable/syncable_util_unittest.cc',
+ 'util/cryptographer_unittest.cc',
+ 'util/data_encryption_win_unittest.cc',
+ 'util/data_type_histogram_unittest.cc',
+ 'util/get_session_name_unittest.cc',
+ 'util/nigori_unittest.cc',
+ 'util/protobuf_unittest.cc',
+ ],
+ 'conditions': [
+ ['OS == "ios" and coverage != 0', {
+ 'sources!': [
+ # These sources can't be built with coverage due to a toolchain
+ # bug: http://openradar.appspot.com/radar?id=1499403
+ 'engine/syncer_unittest.cc',
+
+ # These tests crash when run with coverage turned on due to an
+ # issue with llvm_gcda_increment_indirect_counter:
+ # http://crbug.com/156058
+ 'syncable/directory_backing_store_unittest.cc',
+ ],
+ }],
+ ],
+ },
+ },
+
+ # Unit tests for the 'sync_notifier' target. This cannot be a static
+ # library because the unit test files have to be compiled directly
+ # into the executable, so we push the target files to the
+ # depending executable target via direct_dependent_settings.
+ {
+ 'target_name': 'sync_notifier_tests',
+ 'type': 'none',
+ # We only want unit test executables to include this target.
+ 'suppress_wildcard': 1,
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../jingle/jingle.gyp:notifier_test_util',
+ '../net/net.gyp:net_test_support',
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
+ '../third_party/libjingle/libjingle.gyp:libjingle',
+ 'sync',
+ 'test_support_sync_notifier',
+ ],
+ # Propagate all dependencies since the actual compilation
+ # happens in the dependents.
+ 'export_dependent_settings': [
+ '../base/base.gyp:base',
+ '../jingle/jingle.gyp:notifier_test_util',
+ '../net/net.gyp:net_test_support',
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation',
+ '../third_party/libjingle/libjingle.gyp:libjingle',
+ 'sync',
+ 'test_support_sync_notifier',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '..',
+ ],
+ 'sources': [
+ 'notifier/invalidator_factory_unittest.cc',
+ ],
+ 'conditions': [
+ ['OS != "android"', {
+ 'sources': [
+ 'notifier/ack_tracker_unittest.cc',
+ 'notifier/fake_invalidator_unittest.cc',
+ 'notifier/invalidation_notifier_unittest.cc',
+ 'notifier/invalidator_registrar_unittest.cc',
+ 'notifier/non_blocking_invalidator_unittest.cc',
+ 'notifier/p2p_invalidator_unittest.cc',
+ 'notifier/push_client_channel_unittest.cc',
+ 'notifier/registration_manager_unittest.cc',
+ 'notifier/sync_invalidation_listener_unittest.cc',
+ 'notifier/sync_system_resources_unittest.cc',
+ ],
+ }],
+ ],
+ },
+ },
+
+ # Unit tests for the 'sync_internal_api' target. This cannot be a static
+ # library because the unit test files have to be compiled directly
+ # into the executable, so we push the target files to the
+ # depending executable target via direct_dependent_settings.
+ {
+ 'target_name': 'sync_internal_api_tests',
+ 'type': 'none',
+ # We only want unit test executables to include this target.
+ 'suppress_wildcard': 1,
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../net/net.gyp:net',
+ '../net/net.gyp:net_test_support',
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ 'test_support_sync_internal_api',
+ ],
+ # Propagate all dependencies since the actual compilation
+ # happens in the dependents.
+ 'export_dependent_settings': [
+ '../base/base.gyp:base',
+ '../net/net.gyp:net',
+ '../net/net.gyp:net_test_support',
+ '../testing/gmock.gyp:gmock',
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ 'test_support_sync_internal_api',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '..',
+ ],
+ 'sources': [
+ 'internal_api/debug_info_event_listener_unittest.cc',
+ 'internal_api/http_bridge_unittest.cc',
+ 'internal_api/js_mutation_event_observer_unittest.cc',
+ 'internal_api/js_sync_encryption_handler_observer_unittest.cc',
+ 'internal_api/js_sync_manager_observer_unittest.cc',
+ 'internal_api/public/change_record_unittest.cc',
+ 'internal_api/public/sessions/sync_session_snapshot_unittest.cc',
+ 'internal_api/public/sessions/sync_source_info_unittest.cc',
+ 'internal_api/syncapi_server_connection_manager_unittest.cc',
+ 'internal_api/sync_encryption_handler_impl_unittest.cc',
+ 'internal_api/sync_manager_impl_unittest.cc',
+ ],
+ 'conditions': [
+ ['OS == "ios"', {
+ 'sources!': [
+ 'internal_api/http_bridge_unittest.cc',
+ ],
+ }],
+ ],
+ },
+ },
+
+ # Unit tests for the 'sync_api' target. This cannot be a static
+ # library because the unit test files have to be compiled directly
+ # into the executable, so we push the target files to the
+ # depending executable target via direct_dependent_settings.
+ {
+ 'target_name': 'sync_api_tests',
+ 'type': 'none',
+ # We only want unit test executables to include this target.
+ 'suppress_wildcard': 1,
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ 'test_support_sync_internal_api',
+ ],
+ # Propagate all dependencies since the actual compilation
+ # happens in the dependents.
+ 'export_dependent_settings': [
+ '../base/base.gyp:base',
+ '../testing/gtest.gyp:gtest',
+ 'sync',
+ 'test_support_sync_internal_api',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '..',
+ ],
+ 'sources': [
+ 'api/sync_change_unittest.cc',
+ 'api/sync_error_unittest.cc',
+ 'api/sync_merge_result_unittest.cc',
+ ],
+ },
+ },
+
+ # The unit test executable for sync tests.
+ {
+ 'target_name': 'sync_unit_tests',
+ 'type': '<(gtest_target_type)',
+ # Typed-parametrized tests generate exit-time destructors.
+ 'variables': { 'enable_wexit_time_destructors': 0, },
+ 'defines': [
+ 'SYNC_TEST',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:run_all_unittests',
+ 'sync_api_tests',
+ 'sync_core_tests',
+ 'sync_internal_api_tests',
+ 'sync_notifier_tests',
+ ],
+ 'conditions': [
+ # TODO(akalin): This is needed because histogram.cc uses
+ # leak_annotations.h, which pulls this in. Make 'base'
+ # propagate this dependency.
+ ['OS=="linux" and linux_use_tcmalloc==1', {
+ 'dependencies': [
+ '../base/allocator/allocator.gyp:allocator',
+ ],
+ }],
+ ['OS == "android" and gtest_target_type == "shared_library"', {
+ 'dependencies': [
+ '../testing/android/native_test.gyp:native_test_native_code',
+ ],
+ }],
+ ],
+ },
+ ],
+ 'conditions': [
+ ['OS != "ios"', {
+ 'targets': [
+ {
+ 'target_name': 'sync_tools_helper',
+ 'type': 'static_library',
+ 'defines': [
+ 'SYNC_IMPLEMENTATION',
+ ],
+ 'include_dirs': [
+ '..',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ 'sync',
+ ],
+ 'export_dependent_settings': [
+ '../base/base.gyp:base',
+ 'sync',
+ ],
+ 'sources': [
+ 'tools/null_invalidation_state_tracker.cc',
+ 'tools/null_invalidation_state_tracker.h',
+ ],
+ },
+
+ # A tool that can be used to launch a python sync server instance.
+ {
+ 'target_name': 'run_sync_testserver',
+ 'type': 'executable',
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../base/base.gyp:test_support_base',
+ '../net/net.gyp:net_test_support',
+ '../testing/gtest.gyp:gtest',
+ 'test_support_sync_testserver',
+ ],
+ 'sources': [
+ 'tools/testserver/run_sync_testserver.cc',
+ ],
+ },
+
+ # A tool to listen to sync notifications and print them out.
+ {
+ 'target_name': 'sync_listen_notifications',
+ 'type': 'executable',
+ 'defines': [
+ 'SYNC_TEST',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../jingle/jingle.gyp:notifier',
+ '../net/net.gyp:net',
+ '../net/net.gyp:net_test_support',
+ 'sync',
+ 'sync_tools_helper',
+ ],
+ 'sources': [
+ 'tools/sync_listen_notifications.cc',
+ ],
+ },
+
+ # A standalone command-line sync client.
+ {
+ 'target_name': 'sync_client',
+ 'type': 'executable',
+ 'defines': [
+ 'SYNC_TEST',
+ ],
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../jingle/jingle.gyp:notifier',
+ '../net/net.gyp:net',
+ '../net/net.gyp:net_test_support',
+ 'sync',
+ 'sync_tools_helper',
+ 'test_support_sync_core'
+ ],
+ 'sources': [
+ 'tools/sync_client.cc',
+ ],
+ },
+ ],
+ }],
+ ['OS == "android"', {
+ 'targets': [
+ {
+ 'target_name': 'sync_java',
+ 'type': 'none',
+ 'variables': {
+ 'package_name': 'sync',
+ 'java_in_dir': '../sync/android/java',
+ },
+ 'dependencies': [
+ '../base/base.gyp:base_java',
+ '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_javalib',
+ '../third_party/guava/guava.gyp:guava_javalib',
+ '../third_party/jsr-305/jsr-305.gyp:jsr_305_javalib',
+ ],
+ 'includes': [ '../build/java.gypi' ],
+ },
+ {
+ 'target_name': 'sync_javatests',
+ 'type': 'none',
+ 'variables': {
+ 'package_name': 'sync_javatests',
+ 'java_in_dir': '../sync/android/javatests',
+ },
+ 'dependencies': [
+ 'sync_java',
+ '../base/base.gyp:base_java_test_support',
+ ],
+ 'includes': [ '../build/java.gypi' ],
+ },
+ ],
+ }],
+
+ # Special target to wrap a gtest_target_type==shared_library
+ # sync_unit_tests into an android apk for execution.
+ ['OS == "android" and gtest_target_type == "shared_library"', {
+ 'targets': [
+ {
+ 'target_name': 'sync_unit_tests_apk',
+ 'type': 'none',
+ 'dependencies': [
+ 'sync_unit_tests',
+ ],
+ 'variables': {
+ 'test_suite_name': 'sync_unit_tests',
+ 'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)sync_unit_tests<(SHARED_LIB_SUFFIX)',
+ },
+ 'includes': [ '../build/apk_test.gypi' ],
+ },
+ ],
+ }],
+ ],
+}
diff --git a/sync/syncable/syncable_base_transaction.cc b/sync/syncable/syncable_base_transaction.cc
index 0404d94..d068bb9 100644
--- a/sync/syncable/syncable_base_transaction.cc
+++ b/sync/syncable/syncable_base_transaction.cc
@@ -10,6 +10,14 @@
namespace syncer {
namespace syncable {
+Directory* BaseTransaction::directory() const {
+ return directory_;
+}
+
+Id BaseTransaction::root_id() const {
+ return Id();
+}
+
void BaseTransaction::Lock() {
TRACE_EVENT2("sync_lock_contention", "AcquireLock",
"src_file", from_here_.file_name(),
diff --git a/sync/syncable/syncable_base_transaction.h b/sync/syncable/syncable_base_transaction.h
index 763f68d..e15a38b 100644
--- a/sync/syncable/syncable_base_transaction.h
+++ b/sync/syncable/syncable_base_transaction.h
@@ -31,10 +31,10 @@ enum WriterTag {
// Make sure to update this if you update WriterTag.
std::string WriterTagToString(WriterTag writer_tag);
-class SYNC_EXPORT_PRIVATE BaseTransaction {
+class SYNC_EXPORT BaseTransaction {
public:
- inline Directory* directory() const { return directory_; }
- inline Id root_id() const { return Id(); }
+ Directory* directory() const;
+ Id root_id() const;
virtual ~BaseTransaction();
diff --git a/sync/syncable/syncable_delete_journal.h b/sync/syncable/syncable_delete_journal.h
index 7d4224f..a4bf9ce 100644
--- a/sync/syncable/syncable_delete_journal.h
+++ b/sync/syncable/syncable_delete_journal.h
@@ -9,6 +9,7 @@
#include "base/gtest_prod_util.h"
#include "base/synchronization/lock.h"
+#include "sync/base/sync_export.h"
#include "sync/syncable/metahandle_set.h"
#include "sync/syncable/syncable-inl.h"
@@ -25,7 +26,7 @@ typedef std::set<const EntryKernel*, LessField<IdField, ID> > JournalIndex;
// DeleteJournal is thread-safe and can be accessed on any thread. Has to hold
// a valid transaction object when calling methods of DeleteJournal, thus each
// method requires a non-null |trans| parameter.
-class DeleteJournal {
+class SYNC_EXPORT_PRIVATE DeleteJournal {
public:
FRIEND_TEST_ALL_PREFIXES(SyncableDirectoryTest, ManageDeleteJournals);
diff --git a/sync/syncable/syncable_read_transaction.h b/sync/syncable/syncable_read_transaction.h
index ecaf59b..2b9729d 100644
--- a/sync/syncable/syncable_read_transaction.h
+++ b/sync/syncable/syncable_read_transaction.h
@@ -13,7 +13,7 @@ class ReadTransaction;
namespace syncable {
// Locks db in constructor, unlocks in destructor.
-class SYNC_EXPORT_PRIVATE ReadTransaction : public BaseTransaction {
+class SYNC_EXPORT ReadTransaction : public BaseTransaction {
public:
ReadTransaction(const tracked_objects::Location& from_here,
Directory* directory);
diff --git a/sync/syncable/syncable_write_transaction.h b/sync/syncable/syncable_write_transaction.h
index ea52d45..0debaa5 100644
--- a/sync/syncable/syncable_write_transaction.h
+++ b/sync/syncable/syncable_write_transaction.h
@@ -15,7 +15,7 @@ namespace syncable {
SYNC_EXPORT extern const int64 kInvalidTransactionVersion;
// Locks db in constructor, unlocks in destructor.
-class SYNC_EXPORT_PRIVATE WriteTransaction : public BaseTransaction {
+class SYNC_EXPORT WriteTransaction : public BaseTransaction {
public:
WriteTransaction(const tracked_objects::Location& from_here,
WriterTag writer, Directory* directory);