1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#ifndef CONTENT_CHILD_WEB_DATABASE_OBSERVER_IMPL_H_
6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define CONTENT_CHILD_WEB_DATABASE_OBSERVER_IMPL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_sync_message_filter.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/common/database/database_connections.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "third_party/WebKit/public/platform/WebDatabaseObserver.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class WebDatabaseObserverImpl : public blink::WebDatabaseObserver {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit WebDatabaseObserverImpl(IPC::SyncMessageFilter* sender);
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~WebDatabaseObserverImpl();
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void databaseOpened(
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier,
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_name,
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_display_name,
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      unsigned long estimated_size);
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void databaseModified(
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier,
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_name);
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void databaseClosed(
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier,
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_name);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportOpenDatabaseResult(
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier,
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_name,
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      bool is_sync_database,
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int callsite, int websql_error, int sqlite_error);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportChangeVersionResult(
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier,
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_name,
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      bool is_sync_database,
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int callsite, int websql_error, int sqlite_error);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportStartTransactionResult(
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier,
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_name,
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      bool is_sync_database,
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int callsite, int websql_error, int sqlite_error);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportCommitTransactionResult(
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier,
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_name,
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      bool is_sync_database,
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int callsite, int websql_error, int sqlite_error);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportExecuteStatementResult(
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier,
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_name,
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      bool is_sync_database,
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int callsite, int websql_error, int sqlite_error);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportVacuumDatabaseResult(
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier,
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& database_name,
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      bool is_sync_database,
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int sqlite_error);
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void WaitForAllDatabasesToClose();
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void HandleSqliteError(const blink::WebString& origin_identifier,
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                         const blink::WebString& database_name,
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                         int error);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<IPC::SyncMessageFilter> sender_;
7003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  scoped_refptr<storage::DatabaseConnectionsWrapper> open_connections_;
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(WebDatabaseObserverImpl);
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif  // CONTENT_CHILD_WEB_DATABASE_OBSERVER_IMPL_H_
78