1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/sync/glue/extension_data_type_controller.h" 6 7 #include "base/metrics/histogram.h" 8 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/sync/profile_sync_factory.h" 10 11 namespace browser_sync { 12 13 ExtensionDataTypeController::ExtensionDataTypeController( 14 ProfileSyncFactory* profile_sync_factory, 15 Profile* profile, 16 ProfileSyncService* sync_service) 17 : FrontendDataTypeController(profile_sync_factory, 18 profile, 19 sync_service) { 20 } 21 22 ExtensionDataTypeController::~ExtensionDataTypeController() { 23 } 24 25 syncable::ModelType ExtensionDataTypeController::type() const { 26 return syncable::EXTENSIONS; 27 } 28 29 bool ExtensionDataTypeController::StartModels() { 30 profile_->InitExtensions(true); 31 return true; 32 } 33 34 void ExtensionDataTypeController::CreateSyncComponents() { 35 ProfileSyncFactory::SyncComponents sync_components = 36 profile_sync_factory_->CreateExtensionSyncComponents(sync_service_, 37 this); 38 model_associator_.reset(sync_components.model_associator); 39 change_processor_.reset(sync_components.change_processor); 40 } 41 42 void ExtensionDataTypeController::RecordUnrecoverableError( 43 const tracked_objects::Location& from_here, 44 const std::string& message) { 45 UMA_HISTOGRAM_COUNTS("Sync.ExtensionRunFailures", 1); 46 } 47 48 void ExtensionDataTypeController::RecordAssociationTime(base::TimeDelta time) { 49 UMA_HISTOGRAM_TIMES("Sync.ExtensionAssociationTime", time); 50 } 51 52 void ExtensionDataTypeController::RecordStartFailure(StartResult result) { 53 UMA_HISTOGRAM_ENUMERATION("Sync.ExtensionStartFailures", 54 result, 55 MAX_START_RESULT); 56 } 57 58 } // namespace browser_sync 59