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_INDEXED_DB_INDEXED_DB_MESSAGE_FILTER_H_
6#define CONTENT_CHILD_INDEXED_DB_INDEXED_DB_MESSAGE_FILTER_H_
7
8#include "base/memory/ref_counted.h"
9#include "content/child/child_message_filter.h"
10
11struct IndexedDBDatabaseMetadata;
12struct IndexedDBMsg_CallbacksUpgradeNeeded_Params;
13
14namespace base {
15class MessageLoopProxy;
16}
17
18namespace IPC {
19class Message;
20}
21
22namespace content {
23
24class ThreadSafeSender;
25
26class IndexedDBMessageFilter : public ChildMessageFilter {
27 public:
28  explicit IndexedDBMessageFilter(ThreadSafeSender* thread_safe_sender);
29
30 protected:
31  virtual ~IndexedDBMessageFilter();
32
33 private:
34  // ChildMessageFilter implementation:
35  virtual base::TaskRunner* OverrideTaskRunnerForMessage(
36      const IPC::Message& msg) OVERRIDE;
37  virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
38  virtual void OnStaleMessageReceived(const IPC::Message& msg) OVERRIDE;
39
40  void OnStaleSuccessIDBDatabase(int32 ipc_thread_id,
41                                 int32 ipc_callbacks_id,
42                                 int32 ipc_database_callbacks_id,
43                                 int32 ipc_object_id,
44                                 const IndexedDBDatabaseMetadata&);
45  void OnStaleUpgradeNeeded(const IndexedDBMsg_CallbacksUpgradeNeeded_Params&);
46
47  scoped_refptr<base::MessageLoopProxy> main_thread_loop_;
48  scoped_refptr<ThreadSafeSender> thread_safe_sender_;
49
50  DISALLOW_COPY_AND_ASSIGN(IndexedDBMessageFilter);
51};
52
53}  // namespace content
54
55#endif  // CONTENT_CHILD_INDEXED_DB_INDEXED_DB_MESSAGE_FILTER_H_
56