summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-17 21:37:02 +0000
committerjorlow@chromium.org <jorlow@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-17 21:37:02 +0000
commitc6a77be360f6cc9d94ccb630af63f15ca8ffc63d (patch)
treefdc78caf0d874daf69bc7c1340dfe64b04c15a7f
parenta26928155a6b274bbe7364a6264006c353bf45e8 (diff)
downloadchromium_src-c6a77be360f6cc9d94ccb630af63f15ca8ffc63d.zip
chromium_src-c6a77be360f6cc9d94ccb630af63f15ca8ffc63d.tar.gz
chromium_src-c6a77be360f6cc9d94ccb630af63f15ca8ffc63d.tar.bz2
Add plumbing for passing the indexed database quota via IDBFactory::open
Merge of http://src.chromium.org/viewvc/chrome?view=rev&revision=62352 BUG=59506 TEST=IndexedDB still works :-) git-svn-id: svn://svn.chromium.org/chrome/branches/552/src@62901 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc7
-rw-r--r--chrome/common/render_messages_params.cc9
-rw-r--r--chrome/common/render_messages_params.h3
-rw-r--r--chrome/renderer/indexed_db_dispatcher.cc10
-rw-r--r--chrome/renderer/indexed_db_dispatcher.h9
-rw-r--r--chrome/renderer/renderer_webidbfactory_impl.cc13
-rw-r--r--chrome/renderer/renderer_webidbfactory_impl.h9
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 053c923..9202a21 100644
--- a/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc
+++ b/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc
@@ -49,6 +49,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 055bbc4..a390cbb 100644
--- a/chrome/renderer/indexed_db_dispatcher.cc
+++ b/chrome/renderer/indexed_db_dispatcher.cc
@@ -111,9 +111,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)
@@ -128,6 +131,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 6df0b584..b803163 100644
--- a/chrome/renderer/indexed_db_dispatcher.h
+++ b/chrome/renderer/indexed_db_dispatcher.h
@@ -34,9 +34,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_