diff options
author | andreip@chromium.org <andreip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-12 23:06:46 +0000 |
---|---|---|
committer | andreip@chromium.org <andreip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-12 23:06:46 +0000 |
commit | d4202dfcf7ff44bb50609434cc08eda3229a92eb (patch) | |
tree | f3441351099690baf003a9070df73763329642a7 | |
parent | 83de85e769936a09955bcbce489a1d77506f6386 (diff) | |
download | chromium_src-d4202dfcf7ff44bb50609434cc08eda3229a92eb.zip chromium_src-d4202dfcf7ff44bb50609434cc08eda3229a92eb.tar.gz chromium_src-d4202dfcf7ff44bb50609434cc08eda3229a92eb.tar.bz2 |
Add plumbing for passing the indexed database quota via IDBFactory::open
BUG=
TEST=
Review URL: http://codereview.chromium.org/3729003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62352 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc | 7 | ||||
-rw-r--r-- | chrome/common/render_messages_params.cc | 9 | ||||
-rw-r--r-- | chrome/common/render_messages_params.h | 3 | ||||
-rw-r--r-- | chrome/renderer/indexed_db_dispatcher.cc | 10 | ||||
-rw-r--r-- | chrome/renderer/indexed_db_dispatcher.h | 9 | ||||
-rw-r--r-- | chrome/renderer/renderer_webidbfactory_impl.cc | 13 | ||||
-rw-r--r-- | chrome/renderer/renderer_webidbfactory_impl.h | 9 |
7 files changed, 44 insertions, 16 deletions
diff --git a/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc b/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc index db400f5..1a78a83 100644 --- a/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc +++ b/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc @@ -48,6 +48,10 @@ using WebKit::WebVector; namespace { +// FIXME: Replace this magic constant once we have a more sophisticated quota +// system. +static const uint64 kDatabaseQuota = 5 * 1024 * 1024; + template <class T> void DeleteOnWebKitThread(T* obj) { if (!BrowserThread::DeleteSoon(BrowserThread::WEBKIT, FROM_HERE, obj)) @@ -285,11 +289,12 @@ void IndexedDBDispatcherHost::OnIDBFactoryOpen( return; } + DCHECK(kDatabaseQuota == params.maximum_size_); Context()->GetIDBFactory()->open( params.name_, params.description_, new IndexedDBCallbacks<WebIDBDatabase>(this, params.response_id_), WebSecurityOrigin::createFromDatabaseIdentifier(params.origin_), NULL, - webkit_glue::FilePathToWebString(indexed_db_path)); + webkit_glue::FilePathToWebString(indexed_db_path), kDatabaseQuota); } ////////////////////////////////////////////////////////////////////// diff --git a/chrome/common/render_messages_params.cc b/chrome/common/render_messages_params.cc index 6729ee2..59802b4 100644 --- a/chrome/common/render_messages_params.cc +++ b/chrome/common/render_messages_params.cc @@ -175,7 +175,8 @@ ViewMsg_DOMStorageEvent_Params::~ViewMsg_DOMStorageEvent_Params() { ViewHostMsg_IDBFactoryOpen_Params::ViewHostMsg_IDBFactoryOpen_Params() : routing_id_(0), - response_id_(0) { + response_id_(0), + maximum_size_(0) { } ViewHostMsg_IDBFactoryOpen_Params::~ViewHostMsg_IDBFactoryOpen_Params() { @@ -1250,6 +1251,7 @@ void ParamTraits<ViewHostMsg_IDBFactoryOpen_Params>::Write( WriteParam(m, p.origin_); WriteParam(m, p.name_); WriteParam(m, p.description_); + WriteParam(m, p.maximum_size_); } bool ParamTraits<ViewHostMsg_IDBFactoryOpen_Params>::Read(const Message* m, @@ -1260,7 +1262,8 @@ bool ParamTraits<ViewHostMsg_IDBFactoryOpen_Params>::Read(const Message* m, ReadParam(m, iter, &p->response_id_) && ReadParam(m, iter, &p->origin_) && ReadParam(m, iter, &p->name_) && - ReadParam(m, iter, &p->description_); + ReadParam(m, iter, &p->description_) && + ReadParam(m, iter, &p->maximum_size_); } void ParamTraits<ViewHostMsg_IDBFactoryOpen_Params>::Log(const param_type& p, @@ -1275,6 +1278,8 @@ void ParamTraits<ViewHostMsg_IDBFactoryOpen_Params>::Log(const param_type& p, LogParam(p.name_, l); l->append(", "); LogParam(p.description_, l); + l->append(", "); + LogParam(p.maximum_size_, l); l->append(")"); } diff --git a/chrome/common/render_messages_params.h b/chrome/common/render_messages_params.h index bb3ab81f..2eeff70 100644 --- a/chrome/common/render_messages_params.h +++ b/chrome/common/render_messages_params.h @@ -669,6 +669,9 @@ struct ViewHostMsg_IDBFactoryOpen_Params { // The description of the database. string16 description_; + + // The maximum size of the database. + uint64 maximum_size_; }; // Used to create an object store. diff --git a/chrome/renderer/indexed_db_dispatcher.cc b/chrome/renderer/indexed_db_dispatcher.cc index b04434f..69ce63f 100644 --- a/chrome/renderer/indexed_db_dispatcher.cc +++ b/chrome/renderer/indexed_db_dispatcher.cc @@ -101,9 +101,12 @@ void IndexedDBDispatcher::RequestIDBCursorRemove( } void IndexedDBDispatcher::RequestIDBFactoryOpen( - const string16& name, const string16& description, - WebIDBCallbacks* callbacks_ptr, const string16& origin, - WebFrame* web_frame) { + const string16& name, + const string16& description, + WebIDBCallbacks* callbacks_ptr, + const string16& origin, + WebFrame* web_frame, + uint64 maximum_size) { scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); if (!web_frame) @@ -118,6 +121,7 @@ void IndexedDBDispatcher::RequestIDBFactoryOpen( params.origin_ = origin; params.name_ = name; params.description_ = description; + params.maximum_size_ = maximum_size; RenderThread::current()->Send(new ViewHostMsg_IDBFactoryOpen(params)); } diff --git a/chrome/renderer/indexed_db_dispatcher.h b/chrome/renderer/indexed_db_dispatcher.h index 8e78141..a776d92 100644 --- a/chrome/renderer/indexed_db_dispatcher.h +++ b/chrome/renderer/indexed_db_dispatcher.h @@ -33,9 +33,12 @@ class IndexedDBDispatcher { bool OnMessageReceived(const IPC::Message& msg); void RequestIDBFactoryOpen( - const string16& name, const string16& description, - WebKit::WebIDBCallbacks* callbacks, const string16& origin, - WebKit::WebFrame* web_frame); + const string16& name, + const string16& description, + WebKit::WebIDBCallbacks* callbacks, + const string16& origin, + WebKit::WebFrame* web_frame, + uint64 maximum_size); void RequestIDBCursorUpdate( const SerializedScriptValue& value, diff --git a/chrome/renderer/renderer_webidbfactory_impl.cc b/chrome/renderer/renderer_webidbfactory_impl.cc index 776c6f1..79f02cc 100644 --- a/chrome/renderer/renderer_webidbfactory_impl.cc +++ b/chrome/renderer/renderer_webidbfactory_impl.cc @@ -24,12 +24,17 @@ RendererWebIDBFactoryImpl::~RendererWebIDBFactoryImpl() { } void RendererWebIDBFactoryImpl::open( - const WebString& name, const WebString& description, - WebIDBCallbacks* callbacks, const WebSecurityOrigin& origin, - WebFrame* web_frame, const WebString& dataDir) { + const WebString& name, + const WebString& description, + WebIDBCallbacks* callbacks, + const WebSecurityOrigin& origin, + WebFrame* web_frame, + const WebString& dataDir, + uint64 maximum_size) { // Don't send the dataDir. We know what we want on the Browser side of things. IndexedDBDispatcher* dispatcher = RenderThread::current()->indexed_db_dispatcher(); dispatcher->RequestIDBFactoryOpen( - name, description, callbacks, origin.databaseIdentifier(), web_frame); + name, description, callbacks, origin.databaseIdentifier(), web_frame, + maximum_size); } diff --git a/chrome/renderer/renderer_webidbfactory_impl.h b/chrome/renderer/renderer_webidbfactory_impl.h index de4d4ee..d52aa53 100644 --- a/chrome/renderer/renderer_webidbfactory_impl.h +++ b/chrome/renderer/renderer_webidbfactory_impl.h @@ -25,10 +25,13 @@ class RendererWebIDBFactoryImpl : public WebKit::WebIDBFactory { // See WebIDBFactory.h for documentation on these functions. virtual void open( - const WebKit::WebString& name, const WebKit::WebString& description, + const WebKit::WebString& name, + const WebKit::WebString& description, WebKit::WebIDBCallbacks* callbacks, - const WebKit::WebSecurityOrigin& origin, WebKit::WebFrame* web_frame, - const WebKit::WebString& dataDir); + const WebKit::WebSecurityOrigin& origin, + WebKit::WebFrame* web_frame, + const WebKit::WebString& dataDir, + uint64 maximum_size); }; #endif // CHROME_RENDERER_RENDERER_WEBIDBFACTORY_IMPL_H_ |