summaryrefslogtreecommitdiffstats
path: root/sync/internal_api
diff options
context:
space:
mode:
authorhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-31 21:42:39 +0000
committerhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-31 21:42:39 +0000
commite9d91ff8ae5d3c6412db8bc81aefdf62bb7f5200 (patch)
tree48f072a88f6829441793299495b423d7f3178f17 /sync/internal_api
parent04782106da17474fd72ac06988fcbef155c784ae (diff)
downloadchromium_src-e9d91ff8ae5d3c6412db8bc81aefdf62bb7f5200.zip
chromium_src-e9d91ff8ae5d3c6412db8bc81aefdf62bb7f5200.tar.gz
chromium_src-e9d91ff8ae5d3c6412db8bc81aefdf62bb7f5200.tar.bz2
Prioritize configuration of data types in data type manager.
Download and associate high-priority types (control types, priority preference and managed users for now) before other types. BUG=236456 Review URL: https://chromiumcodereview.appspot.com/15067016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203486 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/internal_api')
-rw-r--r--sync/internal_api/debug_info_event_listener.cc37
-rw-r--r--sync/internal_api/debug_info_event_listener.h4
-rw-r--r--sync/internal_api/public/data_type_association_stats.cc3
-rw-r--r--sync/internal_api/public/data_type_association_stats.h10
-rw-r--r--sync/internal_api/public/data_type_debug_info_listener.cc15
-rw-r--r--sync/internal_api/public/data_type_debug_info_listener.h31
6 files changed, 78 insertions, 22 deletions
diff --git a/sync/internal_api/debug_info_event_listener.cc b/sync/internal_api/debug_info_event_listener.cc
index 97ff3eb..ae02a7c 100644
--- a/sync/internal_api/debug_info_event_listener.cc
+++ b/sync/internal_api/debug_info_event_listener.cc
@@ -171,15 +171,19 @@ base::WeakPtr<DataTypeDebugInfoListener> DebugInfoEventListener::GetWeakPtr() {
return weak_ptr_factory_.GetWeakPtr();
}
-void DebugInfoEventListener::OnDataTypeAssociationComplete(
- const DataTypeAssociationStats& association_stats) {
+void DebugInfoEventListener::OnSingleDataTypeConfigureComplete(
+ const DataTypeConfigurationStats& configuration_stats) {
DCHECK(thread_checker_.CalledOnValidThread());
- DCHECK(ProtocolTypes().Has(association_stats.model_type));
+ DCHECK(ProtocolTypes().Has(configuration_stats.model_type));
+
+ const DataTypeAssociationStats& association_stats =
+ configuration_stats.association_stats;
+
sync_pb::DebugEventInfo association_event;
sync_pb::DatatypeAssociationStats* datatype_stats =
association_event.mutable_datatype_association_stats();
datatype_stats->set_data_type_id(
- GetSpecificsFieldNumberFromModelType(association_stats.model_type));
+ GetSpecificsFieldNumberFromModelType(configuration_stats.model_type));
datatype_stats->set_num_local_items_before_association(
association_stats.num_local_items_before_association);
datatype_stats->set_num_sync_items_before_association(
@@ -201,12 +205,31 @@ void DebugInfoEventListener::OnDataTypeAssociationComplete(
datatype_stats->set_num_sync_items_modified(
association_stats.num_sync_items_modified);
datatype_stats->set_had_error(association_stats.had_error);
- datatype_stats->set_download_time_us(
- association_stats.download_time.InMicroseconds());
- datatype_stats->set_association_wait_time_us(
+ datatype_stats->set_association_wait_time_for_same_priority_us(
association_stats.association_wait_time.InMicroseconds());
datatype_stats->set_association_time_us(
association_stats.association_time.InMicroseconds());
+ datatype_stats->set_download_wait_time_us(
+ configuration_stats.download_wait_time.InMicroseconds());
+ datatype_stats->set_download_time_us(
+ configuration_stats.download_time.InMicroseconds());
+ datatype_stats->set_association_wait_time_for_high_priority_us(
+ configuration_stats.association_wait_time_for_high_priority
+ .InMicroseconds());
+
+ for (ModelTypeSet::Iterator it =
+ configuration_stats.high_priority_types_configured_before.First();
+ it.Good(); it.Inc()) {
+ datatype_stats->add_high_priority_type_configured_before(
+ GetSpecificsFieldNumberFromModelType(it.Get()));
+ }
+
+ for (ModelTypeSet::Iterator it =
+ configuration_stats.same_priority_types_configured_before.First();
+ it.Good(); it.Inc()) {
+ datatype_stats->add_same_priority_type_configured_before(
+ GetSpecificsFieldNumberFromModelType(it.Get()));
+ }
AddEventToQueue(association_event);
}
diff --git a/sync/internal_api/debug_info_event_listener.h b/sync/internal_api/debug_info_event_listener.h
index 8aa72f8..a3c15eb 100644
--- a/sync/internal_api/debug_info_event_listener.h
+++ b/sync/internal_api/debug_info_event_listener.h
@@ -78,8 +78,8 @@ class SYNC_EXPORT_PRIVATE DebugInfoEventListener
virtual void GetAndClearDebugInfo(sync_pb::DebugInfo* debug_info) OVERRIDE;
// DataTypeDebugInfoListener implementation.
- virtual void OnDataTypeAssociationComplete(
- const DataTypeAssociationStats& association_stats) OVERRIDE;
+ virtual void OnSingleDataTypeConfigureComplete(
+ const DataTypeConfigurationStats& configuration_stats) OVERRIDE;
virtual void OnConfigureComplete() OVERRIDE;
// Returns a weak pointer to this object.
diff --git a/sync/internal_api/public/data_type_association_stats.cc b/sync/internal_api/public/data_type_association_stats.cc
index 0a77a7c..4ae4bd1 100644
--- a/sync/internal_api/public/data_type_association_stats.cc
+++ b/sync/internal_api/public/data_type_association_stats.cc
@@ -7,8 +7,7 @@
namespace syncer {
DataTypeAssociationStats::DataTypeAssociationStats()
- : model_type(UNSPECIFIED),
- num_local_items_before_association(0),
+ : num_local_items_before_association(0),
num_sync_items_before_association(0),
num_local_items_after_association(0),
num_sync_items_after_association(0),
diff --git a/sync/internal_api/public/data_type_association_stats.h b/sync/internal_api/public/data_type_association_stats.h
index c779dcd..bda8ff3 100644
--- a/sync/internal_api/public/data_type_association_stats.h
+++ b/sync/internal_api/public/data_type_association_stats.h
@@ -7,7 +7,6 @@
#include "base/time.h"
#include "sync/base/sync_export.h"
-#include "sync/internal_api/public/base/model_type.h"
namespace syncer {
@@ -16,9 +15,6 @@ struct SYNC_EXPORT DataTypeAssociationStats {
DataTypeAssociationStats();
~DataTypeAssociationStats();
- // The datatype that was associated.
- ModelType model_type;
-
// The state of the world before association.
int num_local_items_before_association;
int num_sync_items_before_association;
@@ -39,10 +35,8 @@ struct SYNC_EXPORT DataTypeAssociationStats {
// Whether a datatype unrecoverable error was encountered during association.
bool had_error;
- // Time spent on downloading data for association.
- base::TimeDelta download_time;
-
- // Time waiting for local model loading and preceding data types to finish.
+ // Waiting time within association manager for loading local models and
+ // associating other types.
base::TimeDelta association_wait_time;
// Time spent on association.
diff --git a/sync/internal_api/public/data_type_debug_info_listener.cc b/sync/internal_api/public/data_type_debug_info_listener.cc
new file mode 100644
index 0000000..08355dd
--- /dev/null
+++ b/sync/internal_api/public/data_type_debug_info_listener.cc
@@ -0,0 +1,15 @@
+// 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 "sync/internal_api/public/data_type_debug_info_listener.h"
+
+namespace syncer {
+
+DataTypeConfigurationStats::DataTypeConfigurationStats()
+ : model_type(UNSPECIFIED) {}
+
+DataTypeConfigurationStats::~DataTypeConfigurationStats() {}
+
+} // namespace syncer
+
diff --git a/sync/internal_api/public/data_type_debug_info_listener.h b/sync/internal_api/public/data_type_debug_info_listener.h
index 81ee889..82d6459 100644
--- a/sync/internal_api/public/data_type_debug_info_listener.h
+++ b/sync/internal_api/public/data_type_debug_info_listener.h
@@ -10,12 +10,37 @@
namespace syncer {
+struct SYNC_EXPORT DataTypeConfigurationStats {
+ DataTypeConfigurationStats();
+ ~DataTypeConfigurationStats();
+
+ // The datatype that was configured.
+ ModelType model_type;
+
+ // Waiting time before downloading starts.
+ base::TimeDelta download_wait_time;
+
+ // Time spent on downloading data for first-sync data types.
+ base::TimeDelta download_time;
+
+ // Waiting time for association of higher priority types to finish before
+ // asking association manager to associate.
+ base::TimeDelta association_wait_time_for_high_priority;
+
+ // Types configured before this type.
+ ModelTypeSet high_priority_types_configured_before;
+ ModelTypeSet same_priority_types_configured_before;
+
+ // Association stats.
+ DataTypeAssociationStats association_stats;
+};
+
// Interface for the sync internals to listen to external sync events.
class DataTypeDebugInfoListener {
public:
- // Notify the listener that a datatype's association has completed.
- virtual void OnDataTypeAssociationComplete(
- const DataTypeAssociationStats& association_stats) = 0;
+ // Notify the listener that configuration of one data type has completed.
+ virtual void OnSingleDataTypeConfigureComplete(
+ const DataTypeConfigurationStats& configuration_stats) = 0;
// Notify the listener that configuration has completed and sync has begun.
virtual void OnConfigureComplete() = 0;