summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/contacts
diff options
context:
space:
mode:
authorderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-23 01:54:52 +0000
committerderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-23 01:54:52 +0000
commitbdc10063ed1ae1d8941f7dcb43bc5e4b6fbf6d60 (patch)
tree4de087f7a9576e7be0e42079cea9f57d9f8a92fe /chrome/browser/chromeos/contacts
parent646228a9066b7a3ad0c3a1b346f0e634e137fe71 (diff)
downloadchromium_src-bdc10063ed1ae1d8941f7dcb43bc5e4b6fbf6d60.zip
chromium_src-bdc10063ed1ae1d8941f7dcb43bc5e4b6fbf6d60.tar.gz
chromium_src-bdc10063ed1ae1d8941f7dcb43bc5e4b6fbf6d60.tar.bz2
contacts: Add histograms.
Adds UMA histograms to report stats for GDataContactsService and ContactDatabase. BUG=128805 TEST=none Review URL: https://chromiumcodereview.appspot.com/10868021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@152916 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/contacts')
-rw-r--r--chrome/browser/chromeos/contacts/contact_database.cc51
1 files changed, 50 insertions, 1 deletions
diff --git a/chrome/browser/chromeos/contacts/contact_database.cc b/chrome/browser/chromeos/contacts/contact_database.cc
index efe3a3d..4452f14 100644
--- a/chrome/browser/chromeos/contacts/contact_database.cc
+++ b/chrome/browser/chromeos/contacts/contact_database.cc
@@ -7,6 +7,7 @@
#include <set>
#include "base/file_util.h"
+#include "base/metrics/histogram.h"
#include "base/sequenced_task_runner.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/chromeos/contacts/contact.pb.h"
@@ -24,6 +25,30 @@ namespace contacts {
namespace {
+// Initialization results reported via the "Contacts.DatabaseInitResult"
+// histogram.
+enum HistogramInitResult {
+ HISTOGRAM_INIT_RESULT_SUCCESS = 0,
+ HISTOGRAM_INIT_RESULT_FAILURE = 1,
+ HISTOGRAM_INIT_RESULT_DELETED_CORRUPTED = 2,
+ HISTOGRAM_INIT_RESULT_MAX_VALUE = 3,
+};
+
+// Save results reported via the "Contacts.DatabaseSaveResult" histogram.
+enum HistogramSaveResult {
+ HISTOGRAM_SAVE_RESULT_SUCCESS = 0,
+ HISTOGRAM_SAVE_RESULT_FAILURE = 1,
+ HISTOGRAM_SAVE_RESULT_MAX_VALUE = 2,
+};
+
+// Load results reported via the "Contacts.DatabaseLoadResult" histogram.
+enum HistogramLoadResult {
+ HISTOGRAM_LOAD_RESULT_SUCCESS = 0,
+ HISTOGRAM_LOAD_RESULT_METADATA_PARSE_FAILURE = 1,
+ HISTOGRAM_LOAD_RESULT_CONTACT_PARSE_FAILURE = 2,
+ HISTOGRAM_LOAD_RESULT_MAX_VALUE = 3,
+};
+
// LevelDB key used for storing UpdateMetadata messages.
const char kUpdateMetadataKey[] = "__chrome_update_metadata__";
@@ -145,9 +170,12 @@ void ContactDatabase::InitFromTaskRunner(const FilePath& database_dir,
bool* success) {
DCHECK(IsRunByTaskRunner());
DCHECK(success);
- VLOG(1) << "Opening " << database_dir.value();
+ VLOG(1) << "Opening " << database_dir.value();
+ UMA_HISTOGRAM_MEMORY_KB("Contacts.DatabaseSizeBytes",
+ file_util::ComputeDirectorySize(database_dir));
*success = false;
+ HistogramInitResult histogram_result = HISTOGRAM_INIT_RESULT_SUCCESS;
leveldb::Options options;
options.create_if_missing = true;
@@ -172,10 +200,16 @@ void ContactDatabase::InitFromTaskRunner(const FilePath& database_dir,
LOG(WARNING) << "Deleting possibly-corrupt database";
file_util::Delete(database_dir, true);
delete_and_retry_on_corruption = false;
+ histogram_result = HISTOGRAM_INIT_RESULT_DELETED_CORRUPTED;
} else {
+ histogram_result = HISTOGRAM_INIT_RESULT_FAILURE;
break;
}
}
+
+ UMA_HISTOGRAM_ENUMERATION("Contacts.DatabaseInitResult",
+ histogram_result,
+ HISTOGRAM_INIT_RESULT_MAX_VALUE);
}
void ContactDatabase::SaveContactsFromTaskRunner(
@@ -240,6 +274,12 @@ void ContactDatabase::SaveContactsFromTaskRunner(
*success = true;
else
LOG(WARNING) << "Failed writing contacts: " << status.ToString();
+
+ UMA_HISTOGRAM_ENUMERATION("Contacts.DatabaseSaveResult",
+ *success ?
+ HISTOGRAM_SAVE_RESULT_SUCCESS :
+ HISTOGRAM_SAVE_RESULT_FAILURE,
+ HISTOGRAM_SAVE_RESULT_MAX_VALUE);
}
void ContactDatabase::LoadContactsFromTaskRunner(
@@ -264,6 +304,9 @@ void ContactDatabase::LoadContactsFromTaskRunner(
if (db_iterator->key().ToString() == kUpdateMetadataKey) {
if (!metadata->ParseFromArray(value_slice.data(), value_slice.size())) {
LOG(WARNING) << "Unable to parse metadata";
+ UMA_HISTOGRAM_ENUMERATION("Contacts.DatabaseLoadResult",
+ HISTOGRAM_LOAD_RESULT_METADATA_PARSE_FAILURE,
+ HISTOGRAM_LOAD_RESULT_MAX_VALUE);
return;
}
} else {
@@ -271,6 +314,9 @@ void ContactDatabase::LoadContactsFromTaskRunner(
if (!contact->ParseFromArray(value_slice.data(), value_slice.size())) {
LOG(WARNING) << "Unable to parse contact "
<< db_iterator->key().ToString();
+ UMA_HISTOGRAM_ENUMERATION("Contacts.DatabaseLoadResult",
+ HISTOGRAM_LOAD_RESULT_CONTACT_PARSE_FAILURE,
+ HISTOGRAM_LOAD_RESULT_MAX_VALUE);
return;
}
contacts->push_back(contact.release());
@@ -279,6 +325,9 @@ void ContactDatabase::LoadContactsFromTaskRunner(
}
*success = true;
+ UMA_HISTOGRAM_ENUMERATION("Contacts.DatabaseLoadResult",
+ HISTOGRAM_LOAD_RESULT_SUCCESS,
+ HISTOGRAM_LOAD_RESULT_MAX_VALUE);
}
} // namespace contacts