summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordumi@chromium.org <dumi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-24 03:32:59 +0000
committerdumi@chromium.org <dumi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-24 03:32:59 +0000
commite2b2d4ae919f7df1ca65eaace83e4d6cf5084e47 (patch)
tree49d1df1766d402f6f34eb3fab0be57aef4216053 /chrome
parent73142769aac422267b84568000a5cc2a4b024f3d (diff)
downloadchromium_src-e2b2d4ae919f7df1ca65eaace83e4d6cf5084e47.zip
chromium_src-e2b2d4ae919f7df1ca65eaace83e4d6cf5084e47.tar.gz
chromium_src-e2b2d4ae919f7df1ca65eaace83e4d6cf5084e47.tar.bz2
Implementing WebDatabaseObserver in the renderer process.
BUG=none TEST=none Review URL: http://codereview.chromium.org/293038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29993 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rwxr-xr-xchrome/chrome.gyp2
-rw-r--r--chrome/common/render_messages_internal.h24
-rw-r--r--chrome/renderer/render_thread.cc5
-rw-r--r--chrome/renderer/render_thread.h3
-rw-r--r--chrome/renderer/renderer_web_database_observer.cc32
-rw-r--r--chrome/renderer/renderer_web_database_observer.h22
6 files changed, 88 insertions, 0 deletions
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index 0970210..18bb465 100755
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -3251,6 +3251,8 @@
'renderer/renderer_webstoragearea_impl.h',
'renderer/renderer_webstoragenamespace_impl.cc',
'renderer/renderer_webstoragenamespace_impl.h',
+ 'renderer/renderer_web_database_observer.cc',
+ 'renderer/renderer_web_database_observer.h',
'renderer/user_script_slave.cc',
'renderer/user_script_slave.h',
'renderer/visitedlink_slave.cc',
diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h
index ab4397c..ceebdea 100644
--- a/chrome/common/render_messages_internal.h
+++ b/chrome/common/render_messages_internal.h
@@ -760,6 +760,13 @@ IPC_BEGIN_MESSAGES(View)
int32 /* the ID of the message we're replying to */,
int64 /* the size of the given DB file */)
+ // Notifies the child process of the new database size
+ IPC_MESSAGE_CONTROL4(ViewMsg_DatabaseUpdateSize,
+ string16 /* the origin */,
+ string16 /* the database name */,
+ int64 /* the new database size */,
+ int64 /* space available to origin */)
+
// Storage events are broadcast to renderer processes.
IPC_MESSAGE_CONTROL5(ViewMsg_DOMStorageEvent,
string16 /* key */,
@@ -1890,6 +1897,23 @@ IPC_BEGIN_MESSAGES(ViewHost)
FilePath /* the name of the file */,
int32 /* a unique message ID */)
+ // Notifies the browser process that a new database has been opened
+ IPC_MESSAGE_CONTROL4(ViewHostMsg_DatabaseOpened,
+ string16 /* origin identifier */,
+ string16 /* database name */,
+ string16 /* database description */,
+ int64 /* estimated size */)
+
+ // Notifies the browser process that a database might have been modified
+ IPC_MESSAGE_CONTROL2(ViewHostMsg_DatabaseModified,
+ string16 /* origin identifier */,
+ string16 /* database name */)
+
+ // Notifies the browser process that a database is about to close
+ IPC_MESSAGE_CONTROL2(ViewHostMsg_DatabaseClosed,
+ string16 /* origin identifier */,
+ string16 /* database name */)
+
//---------------------------------------------------------------------------
// Socket Stream messages:
// These are messages from the SocketStreamHandle to the browser.
diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc
index a95e906..998a2fa 100644
--- a/chrome/renderer/render_thread.cc
+++ b/chrome/renderer/render_thread.cc
@@ -43,6 +43,7 @@
#include "chrome/renderer/render_process.h"
#include "chrome/renderer/render_view.h"
#include "chrome/renderer/renderer_webkitclient_impl.h"
+#include "chrome/renderer/renderer_web_database_observer.h"
#include "chrome/renderer/user_script_slave.h"
#include "ipc/ipc_message.h"
#include "webkit/api/public/WebCache.h"
@@ -50,6 +51,7 @@
#include "webkit/api/public/WebCrossOriginPreflightResultCache.h"
#include "webkit/api/public/WebFontCache.h"
#include "webkit/api/public/WebColor.h"
+#include "webkit/api/public/WebDatabase.h"
#include "webkit/api/public/WebKit.h"
#include "webkit/api/public/WebScriptController.h"
#include "webkit/api/public/WebSecurityPolicy.h"
@@ -495,6 +497,9 @@ void RenderThread::EnsureWebKitInitialized() {
WebScriptController::registerExtension(
ExtensionApiTestV8Extension::Get(), EXTENSION_GROUP_CONTENT_SCRIPTS);
+ renderer_web_database_observer_.reset(new RendererWebDatabaseObserver(this));
+ WebKit::WebDatabase::setObserver(renderer_web_database_observer_.get());
+
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kEnableBenchmarking)) {
diff --git a/chrome/renderer/render_thread.h b/chrome/renderer/render_thread.h
index 6062053..3c3bc78 100644
--- a/chrome/renderer/render_thread.h
+++ b/chrome/renderer/render_thread.h
@@ -26,6 +26,7 @@ class ListValue;
class NullableString16;
class RenderDnsMaster;
class RendererHistogram;
+class RendererWebDatabaseObserver;
class RendererWebKitClientImpl;
class SkBitmap;
class UserScriptSlave;
@@ -201,7 +202,9 @@ class RenderThread : public RenderThreadBase,
scoped_ptr<RendererHistogramSnapshots> histogram_snapshots_;
scoped_ptr<RendererWebKitClientImpl> webkit_client_;
scoped_ptr<WebKit::WebStorageEventDispatcher> dom_storage_event_dispatcher_;
+ scoped_ptr<RendererWebDatabaseObserver> renderer_web_database_observer_;
+ // Used on the renderer and IPC threads.
scoped_refptr<DBMessageFilter> db_message_filter_;
#if defined(OS_POSIX)
diff --git a/chrome/renderer/renderer_web_database_observer.cc b/chrome/renderer/renderer_web_database_observer.cc
new file mode 100644
index 0000000..d99dfb4
--- /dev/null
+++ b/chrome/renderer/renderer_web_database_observer.cc
@@ -0,0 +1,32 @@
+// Copyright (c) 2009 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.
+
+#include "chrome/renderer/renderer_web_database_observer.h"
+
+#include "chrome/common/render_messages.h"
+#include "webkit/api/public/WebDatabase.h"
+
+RendererWebDatabaseObserver::RendererWebDatabaseObserver(
+ IPC::Message::Sender* sender)
+ : sender_(sender) {
+}
+
+void RendererWebDatabaseObserver::databaseOpened(
+ const WebKit::WebDatabase& database) {
+ sender_->Send(new ViewHostMsg_DatabaseOpened(
+ database.securityOrigin().databaseIdentifier(), database.name(),
+ database.displayName(), database.estimatedSize()));
+}
+
+void RendererWebDatabaseObserver::databaseModified(
+ const WebKit::WebDatabase& database) {
+ sender_->Send(new ViewHostMsg_DatabaseModified(
+ database.securityOrigin().databaseIdentifier(), database.name()));
+}
+
+void RendererWebDatabaseObserver::databaseClosed(
+ const WebKit::WebDatabase& database) {
+ sender_->Send(new ViewHostMsg_DatabaseClosed(
+ database.securityOrigin().databaseIdentifier(), database.name()));
+}
diff --git a/chrome/renderer/renderer_web_database_observer.h b/chrome/renderer/renderer_web_database_observer.h
new file mode 100644
index 0000000..4e09b53
--- /dev/null
+++ b/chrome/renderer/renderer_web_database_observer.h
@@ -0,0 +1,22 @@
+// Copyright (c) 2009 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_RENDERER_WEB_DATABASE_OBSERVER_H_
+#define CHROME_RENDERER_RENDERER_WEB_DATABASE_OBSERVER_H_
+
+#include "ipc/ipc_message.h"
+#include "webkit/api/public/WebDatabaseObserver.h"
+
+class RendererWebDatabaseObserver : public WebKit::WebDatabaseObserver {
+ public:
+ explicit RendererWebDatabaseObserver(IPC::Message::Sender* sender);
+ virtual void databaseOpened(const WebKit::WebDatabase& database);
+ virtual void databaseModified(const WebKit::WebDatabase& database);
+ virtual void databaseClosed(const WebKit::WebDatabase& database);
+
+ private:
+ IPC::Message::Sender* sender_;
+};
+
+#endif // CHROME_RENDERER_WEB_DATABASE_OBSERVER_H_