// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_RENDERER_INDEXED_DB_DISPATCHER_H_ #define CHROME_RENDERER_INDEXED_DB_DISPATCHER_H_ #include "base/id_map.h" #include "base/string16.h" #include "ipc/ipc_message.h" #include "third_party/WebKit/WebKit/chromium/public/WebIDBCallbacks.h" #include "third_party/WebKit/WebKit/chromium/public/WebIDBDatabase.h" namespace WebKit { class WebFrame; } // Handle the indexed db related communication for this entire renderer. class IndexedDBDispatcher { public: IndexedDBDispatcher(); ~IndexedDBDispatcher(); // Called to possibly handle the incoming IPC message. Returns true if // handled. bool OnMessageReceived(const IPC::Message& msg); void RequestIndexedDatabaseOpen( const string16& name, const string16& description, WebKit::WebIDBCallbacks* callbacks, const string16& origin, WebKit::WebFrame* web_frame); void RequestIDBDatabaseCreateObjectStore( const string16& name, const string16& keypath, bool auto_increment, WebKit::WebIDBCallbacks* callbacks, int32 idb_database_id); void RequestIDBDatabaseRemoveObjectStore( const string16& name, WebKit::WebIDBCallbacks* callbacks, int32 idb_database_id); void RequestIDBObjectStoreCreateIndex( const string16& name, const string16& keypath, bool unique, WebKit::WebIDBCallbacks* callbacks, int32 idb_object_store_id); void RequestIDBObjectStoreRemoveIndex( const string16& name, WebKit::WebIDBCallbacks* callbacks, int32 idb_object_store_id); private: // IDBCallback message handlers. void OnSuccessReturnNull(int32 response_id); void OnSuccessCreateIDBDatabase(int32 response_id, int32 object_id); void OnSuccessCreateIDBObjectStore(int32 response_id, int32 object_id); void OnSuccessCreateIDBIndex(int32 response_id, int32 object_id); void OnError(int32 response_id, int code, const string16& message); // Careful! WebIDBCallbacks wraps non-threadsafe data types. It must be // destroyed and used on the same thread it was created on. IDMap pending_callbacks_; DISALLOW_COPY_AND_ASSIGN(IndexedDBDispatcher); }; #endif // CHROME_RENDERER_INDEXED_DB_DISPATCHER_H_