1 // Copyright 2013 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 #ifndef CONTENT_CHILD_WEB_DATABASE_OBSERVER_IMPL_H_ 6 #define CONTENT_CHILD_WEB_DATABASE_OBSERVER_IMPL_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "ipc/ipc_sync_message_filter.h" 10 #include "storage/common/database/database_connections.h" 11 #include "third_party/WebKit/public/platform/WebDatabaseObserver.h" 12 13 namespace content { 14 15 class WebDatabaseObserverImpl : public blink::WebDatabaseObserver { 16 public: 17 explicit WebDatabaseObserverImpl(IPC::SyncMessageFilter* sender); 18 virtual ~WebDatabaseObserverImpl(); 19 20 virtual void databaseOpened( 21 const blink::WebString& origin_identifier, 22 const blink::WebString& database_name, 23 const blink::WebString& database_display_name, 24 unsigned long estimated_size); 25 virtual void databaseModified( 26 const blink::WebString& origin_identifier, 27 const blink::WebString& database_name); 28 virtual void databaseClosed( 29 const blink::WebString& origin_identifier, 30 const blink::WebString& database_name); 31 virtual void reportOpenDatabaseResult( 32 const blink::WebString& origin_identifier, 33 const blink::WebString& database_name, 34 bool is_sync_database, 35 int callsite, int websql_error, int sqlite_error); 36 virtual void reportChangeVersionResult( 37 const blink::WebString& origin_identifier, 38 const blink::WebString& database_name, 39 bool is_sync_database, 40 int callsite, int websql_error, int sqlite_error); 41 virtual void reportStartTransactionResult( 42 const blink::WebString& origin_identifier, 43 const blink::WebString& database_name, 44 bool is_sync_database, 45 int callsite, int websql_error, int sqlite_error); 46 virtual void reportCommitTransactionResult( 47 const blink::WebString& origin_identifier, 48 const blink::WebString& database_name, 49 bool is_sync_database, 50 int callsite, int websql_error, int sqlite_error); 51 virtual void reportExecuteStatementResult( 52 const blink::WebString& origin_identifier, 53 const blink::WebString& database_name, 54 bool is_sync_database, 55 int callsite, int websql_error, int sqlite_error); 56 virtual void reportVacuumDatabaseResult( 57 const blink::WebString& origin_identifier, 58 const blink::WebString& database_name, 59 bool is_sync_database, 60 int sqlite_error); 61 62 void WaitForAllDatabasesToClose(); 63 64 private: 65 void HandleSqliteError(const blink::WebString& origin_identifier, 66 const blink::WebString& database_name, 67 int error); 68 69 scoped_refptr<IPC::SyncMessageFilter> sender_; 70 scoped_refptr<storage::DatabaseConnectionsWrapper> open_connections_; 71 72 DISALLOW_COPY_AND_ASSIGN(WebDatabaseObserverImpl); 73 }; 74 75 } // namespace content 76 77 #endif // CONTENT_CHILD_WEB_DATABASE_OBSERVER_IMPL_H_ 78