diff options
author | dumi@chromium.org <dumi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-24 03:32:59 +0000 |
---|---|---|
committer | dumi@chromium.org <dumi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-24 03:32:59 +0000 |
commit | e2b2d4ae919f7df1ca65eaace83e4d6cf5084e47 (patch) | |
tree | 49d1df1766d402f6f34eb3fab0be57aef4216053 /chrome | |
parent | 73142769aac422267b84568000a5cc2a4b024f3d (diff) | |
download | chromium_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-x | chrome/chrome.gyp | 2 | ||||
-rw-r--r-- | chrome/common/render_messages_internal.h | 24 | ||||
-rw-r--r-- | chrome/renderer/render_thread.cc | 5 | ||||
-rw-r--r-- | chrome/renderer/render_thread.h | 3 | ||||
-rw-r--r-- | chrome/renderer/renderer_web_database_observer.cc | 32 | ||||
-rw-r--r-- | chrome/renderer/renderer_web_database_observer.h | 22 |
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_ |