Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1447)

Unified Diff: content/common/web_database_observer_impl.cc

Issue 8590043: Record UMA status on websql results (chrome) (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/common/web_database_observer_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/web_database_observer_impl.cc
===================================================================
--- content/common/web_database_observer_impl.cc (revision 111751)
+++ content/common/web_database_observer_impl.cc (working copy)
@@ -4,11 +4,39 @@
#include "content/common/web_database_observer_impl.h"
+#include "base/metrics/histogram.h"
#include "base/string16.h"
#include "content/common/database_messages.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabase.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
+using WebKit::WebDatabase;
+
+namespace {
+
+const int kResultHistogramSize = 50;
+const int kCallsiteHistogramSize = 10;
+
+int DetermineHistogramResult(int webSqlErrorCode, int sqliteErrorCode) {
+ // If we have a sqlite error, log it after trimming the extended bits.
+ // There are 26 possible values, but we leave room for some new ones.
+ if (sqliteErrorCode)
+ return std::min(sqliteErrorCode & 0xff, 30);
+
+ // Otherwise, webSqlErrorCode may be an SQLExceptionCode, SQLErrorCode
+ // or a DOMExceptionCode, or -1 for success.
+ if (webSqlErrorCode == -1)
+ return 0; // no error
+
+ // SQLExceptionCode starts at 1000
+ if (webSqlErrorCode >= 1000)
+ webSqlErrorCode -= 1000;
+
+ return std::min(webSqlErrorCode + 30, kResultHistogramSize - 1);
+}
+
+} // namespace
+
WebDatabaseObserverImpl::WebDatabaseObserverImpl(
IPC::Message::Sender* sender)
: sender_(sender),
@@ -19,7 +47,7 @@
}
void WebDatabaseObserverImpl::databaseOpened(
- const WebKit::WebDatabase& database) {
+ const WebDatabase& database) {
string16 origin_identifier = database.securityOrigin().databaseIdentifier();
string16 database_name = database.name();
open_connections_->AddOpenConnection(origin_identifier, database_name);
@@ -29,13 +57,13 @@
}
void WebDatabaseObserverImpl::databaseModified(
- const WebKit::WebDatabase& database) {
+ const WebDatabase& database) {
sender_->Send(new DatabaseHostMsg_Modified(
database.securityOrigin().databaseIdentifier(), database.name()));
}
void WebDatabaseObserverImpl::databaseClosed(
- const WebKit::WebDatabase& database) {
+ const WebDatabase& database) {
string16 origin_identifier = database.securityOrigin().databaseIdentifier();
string16 database_name = database.name();
sender_->Send(new DatabaseHostMsg_Closed(
@@ -43,6 +71,128 @@
open_connections_->RemoveOpenConnection(origin_identifier, database_name);
}
+void WebDatabaseObserverImpl::reportOpenDatabaseResult(
+ const WebDatabase& database, int callsite, int webSqlErrorCode,
+ int sqliteErrorCode) {
+ DCHECK(callsite < kCallsiteHistogramSize);
ramant (doing other things) 2011/11/29 23:29:36 nit: could we define a routine that takes the his
michaeln 2011/11/29 23:50:13 I believe the histogram names can't vary for a par
ramant (doing other things) 2011/11/30 00:13:21 We have to define a macro. It is your call.
+ int result = DetermineHistogramResult(webSqlErrorCode, sqliteErrorCode);
+ if (database.isSyncDatabase()) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.OpenResult",
+ result, kResultHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.OpenResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ } else {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.OpenResult",
+ result, kResultHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.OpenResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ }
+}
+
+void WebDatabaseObserverImpl::reportChangeVersionResult(
+ const WebDatabase& database, int callsite, int webSqlErrorCode,
+ int sqliteErrorCode) {
+ DCHECK(callsite < kCallsiteHistogramSize);
+ int result = DetermineHistogramResult(webSqlErrorCode, sqliteErrorCode);
+ if (database.isSyncDatabase()) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.ChangeVersionResult",
+ result, kResultHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.ChangeVersionResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ } else {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.ChangeVersionResult",
+ result, kResultHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.ChangeVersionResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ }
+}
+
+void WebDatabaseObserverImpl::reportStartTransactionResult(
+ const WebDatabase& database, int callsite, int webSqlErrorCode,
+ int sqliteErrorCode) {
+ DCHECK(callsite < kCallsiteHistogramSize);
+ int result = DetermineHistogramResult(webSqlErrorCode, sqliteErrorCode);
+ if (database.isSyncDatabase()) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.BeginResult",
+ result, kResultHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.BeginResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ } else {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.BeginResult",
+ result, kResultHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.BeginResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ }
+}
+
+void WebDatabaseObserverImpl::reportCommitTransactionResult(
+ const WebDatabase& database, int callsite, int webSqlErrorCode,
+ int sqliteErrorCode) {
+ DCHECK(callsite < kCallsiteHistogramSize);
+ int result = DetermineHistogramResult(webSqlErrorCode, sqliteErrorCode);
+ if (database.isSyncDatabase()) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.CommitResult",
+ result, kResultHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.CommitResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ } else {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.CommitResult", result,
+ result, kResultHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.CommitResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ }
+}
+
+void WebDatabaseObserverImpl::reportExecuteStatementResult(
+ const WebDatabase& database, int callsite, int webSqlErrorCode,
+ int sqliteErrorCode) {
+ DCHECK(callsite < kCallsiteHistogramSize);
+ int result = DetermineHistogramResult(webSqlErrorCode, sqliteErrorCode);
+ if (database.isSyncDatabase()) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.StatementResult",
+ result, kHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.StatementResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ } else {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.StatementResult",
+ result, kResultHistogramSize);
+ if (result) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.StatementResult.ErrorSite",
+ callsite, kCallsiteHistogramSize);
+ }
+ }
+}
+
+void WebDatabaseObserverImpl::reportVacuumDatabaseResult(
+ const WebDatabase& database, int sqliteErrorCode) {
+ int result = DetermineHistogramResult(-1, sqliteErrorCode);
+ if (database.isSyncDatabase()) {
+ UMA_HISTOGRAM_ENUMERATION("websql.Sync.VacuumResult",
+ result, kResultHistogramSize);
+ } else {
+ UMA_HISTOGRAM_ENUMERATION("websql.Async.VacuumResult",
+ result, kResultHistogramSize);
+ }
+}
+
void WebDatabaseObserverImpl::WaitForAllDatabasesToClose() {
open_connections_->WaitForAllDatabasesToClose();
}
« no previous file with comments | « content/common/web_database_observer_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698