| Index: content/common/web_database_observer_impl.cc
|
| ===================================================================
|
| --- content/common/web_database_observer_impl.cc (revision 122554)
|
| +++ content/common/web_database_observer_impl.cc (working copy)
|
| @@ -7,6 +7,7 @@
|
| #include "base/metrics/histogram.h"
|
| #include "base/string16.h"
|
| #include "content/common/database_messages.h"
|
| +#include "third_party/sqlite/sqlite3.h"
|
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabase.h"
|
| #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
|
|
|
| @@ -98,6 +99,7 @@
|
| int sqlite_error) {
|
| HISTOGRAM_WEBSQL_RESULT("OpenResult", database, callsite,
|
| websql_error, sqlite_error);
|
| + HandleSqliteError(database, sqlite_error);
|
| }
|
|
|
| void WebDatabaseObserverImpl::reportChangeVersionResult(
|
| @@ -105,6 +107,7 @@
|
| int sqlite_error) {
|
| HISTOGRAM_WEBSQL_RESULT("ChangeVersionResult", database, callsite,
|
| websql_error, sqlite_error);
|
| + HandleSqliteError(database, sqlite_error);
|
| }
|
|
|
| void WebDatabaseObserverImpl::reportStartTransactionResult(
|
| @@ -112,6 +115,7 @@
|
| int sqlite_error) {
|
| HISTOGRAM_WEBSQL_RESULT("BeginResult", database, callsite,
|
| websql_error, sqlite_error);
|
| + HandleSqliteError(database, sqlite_error);
|
| }
|
|
|
| void WebDatabaseObserverImpl::reportCommitTransactionResult(
|
| @@ -119,6 +123,7 @@
|
| int sqlite_error) {
|
| HISTOGRAM_WEBSQL_RESULT("CommitResult", database, callsite,
|
| websql_error, sqlite_error);
|
| + HandleSqliteError(database, sqlite_error);
|
| }
|
|
|
| void WebDatabaseObserverImpl::reportExecuteStatementResult(
|
| @@ -126,6 +131,7 @@
|
| int sqlite_error) {
|
| HISTOGRAM_WEBSQL_RESULT("StatementResult", database, callsite,
|
| websql_error, sqlite_error);
|
| + HandleSqliteError(database, sqlite_error);
|
| }
|
|
|
| void WebDatabaseObserverImpl::reportVacuumDatabaseResult(
|
| @@ -138,8 +144,22 @@
|
| UMA_HISTOGRAM_ENUMERATION("websql.Async.VacuumResult",
|
| result, kResultHistogramSize);
|
| }
|
| + HandleSqliteError(database, sqlite_error);
|
| }
|
|
|
| void WebDatabaseObserverImpl::WaitForAllDatabasesToClose() {
|
| open_connections_->WaitForAllDatabasesToClose();
|
| }
|
| +
|
| +void WebDatabaseObserverImpl::HandleSqliteError(
|
| + const WebDatabase& database, int error) {
|
| + // We filter out errors which the backend doesn't act on to avoid
|
| + // a unnecessary ipc traffic, this method can get called at a fairly
|
| + // high frequency (per-sqlstatement).
|
| + if (error == SQLITE_CORRUPT || error == SQLITE_NOTADB) {
|
| + sender_->Send(new DatabaseHostMsg_HandleSqliteError(
|
| + database.securityOrigin().databaseIdentifier(),
|
| + database.name(),
|
| + error));
|
| + }
|
| +}
|
|
|