diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-30 17:03:43 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-30 17:03:43 +0000 |
commit | c6e27b9e28d46db4516fb38a9db1cecef19f5a94 (patch) | |
tree | d6ec9d9a2c409ae57ad96ac9079f39376f75bbbb /content | |
parent | 4d46aaaa5528cbcfd76e1c4c86f02f63bee8848b (diff) | |
download | chromium_src-c6e27b9e28d46db4516fb38a9db1cecef19f5a94.zip chromium_src-c6e27b9e28d46db4516fb38a9db1cecef19f5a94.tar.gz chromium_src-c6e27b9e28d46db4516fb38a9db1cecef19f5a94.tar.bz2 |
Implement the new WebPermissionClient interface in Chrome code to get rid of all the awkward calls to ContentRendererClient.
Review URL: http://codereview.chromium.org/6905117
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83679 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/browser/renderer_host/database_message_filter.cc | 13 | ||||
-rw-r--r-- | content/browser/renderer_host/database_message_filter.h | 6 | ||||
-rw-r--r-- | content/renderer/render_process_observer.cc | 7 | ||||
-rw-r--r-- | content/renderer/render_process_observer.h | 5 | ||||
-rw-r--r-- | content/renderer/render_thread.cc | 22 | ||||
-rw-r--r-- | content/renderer/render_thread.h | 10 | ||||
-rw-r--r-- | content/renderer/render_view.cc | 74 | ||||
-rw-r--r-- | content/renderer/render_view.h | 13 | ||||
-rw-r--r-- | content/renderer/render_view_observer.cc | 15 | ||||
-rw-r--r-- | content/renderer/render_view_observer.h | 6 |
10 files changed, 12 insertions, 159 deletions
diff --git a/content/browser/renderer_host/database_message_filter.cc b/content/browser/renderer_host/database_message_filter.cc index 31f7795..edb3839 100644 --- a/content/browser/renderer_host/database_message_filter.cc +++ b/content/browser/renderer_host/database_message_filter.cc @@ -97,7 +97,7 @@ bool DatabaseMessageFilter::OnMessageReceived( IPC_MESSAGE_HANDLER(DatabaseHostMsg_Opened, OnDatabaseOpened) IPC_MESSAGE_HANDLER(DatabaseHostMsg_Modified, OnDatabaseModified) IPC_MESSAGE_HANDLER(DatabaseHostMsg_Closed, OnDatabaseClosed) - IPC_MESSAGE_HANDLER_DELAY_REPLY(DatabaseHostMsg_Allow, OnAllowDatabase) + IPC_MESSAGE_HANDLER(DatabaseHostMsg_Allow, OnAllowDatabase) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP_EX() return handled; @@ -284,22 +284,15 @@ void DatabaseMessageFilter::OnAllowDatabase(const std::string& origin_url, const string16& name, const string16& display_name, unsigned long estimated_size, - IPC::Message* reply_msg) { + bool* result) { GURL url = GURL(origin_url); ContentSetting content_setting = host_content_settings_map_->GetContentSetting( url, CONTENT_SETTINGS_TYPE_COOKIES, ""); - AllowDatabaseResponse(reply_msg, content_setting); -} - -void DatabaseMessageFilter::AllowDatabaseResponse( - IPC::Message* reply_msg, ContentSetting content_setting) { DCHECK((content_setting == CONTENT_SETTING_ALLOW) || (content_setting == CONTENT_SETTING_BLOCK) || (content_setting == CONTENT_SETTING_SESSION_ONLY)); - DatabaseHostMsg_Allow::WriteReplyParams( - reply_msg, content_setting != CONTENT_SETTING_BLOCK); - Send(reply_msg); + *result = content_setting != CONTENT_SETTING_BLOCK;; } void DatabaseMessageFilter::OnDatabaseSizeChanged( diff --git a/content/browser/renderer_host/database_message_filter.h b/content/browser/renderer_host/database_message_filter.h index e5ab22e..59731cf 100644 --- a/content/browser/renderer_host/database_message_filter.h +++ b/content/browser/renderer_host/database_message_filter.h @@ -67,7 +67,7 @@ class DatabaseMessageFilter const string16& name, const string16& display_name, unsigned long estimated_size, - IPC::Message* reply_msg); + bool* result); // DatabaseTracker::Observer callbacks (file thread) virtual void OnDatabaseSizeChanged(const string16& origin_identifier, @@ -82,10 +82,6 @@ class DatabaseMessageFilter IPC::Message* reply_msg, int reschedule_count); - // CookiePromptModalDialog response handler (io thread) - void AllowDatabaseResponse(IPC::Message* reply_msg, - ContentSetting content_setting); - // The database tracker for the current profile. scoped_refptr<webkit_database::DatabaseTracker> db_tracker_; diff --git a/content/renderer/render_process_observer.cc b/content/renderer/render_process_observer.cc index 193c6c6..ac28339 100644 --- a/content/renderer/render_process_observer.cc +++ b/content/renderer/render_process_observer.cc @@ -27,12 +27,5 @@ void RenderProcessObserver::OnRenderProcessShutdown() { void RenderProcessObserver::WebKitInitialized() { } -bool RenderProcessObserver::AllowScriptExtension( - const std::string& v8_extension_name, - const GURL& url, - int extension_group) { - return false; -} - void RenderProcessObserver::IdleNotification() { } diff --git a/content/renderer/render_process_observer.h b/content/renderer/render_process_observer.h index a7a63a4..2850170 100644 --- a/content/renderer/render_process_observer.h +++ b/content/renderer/render_process_observer.h @@ -30,11 +30,6 @@ class RenderProcessObserver : public IPC::Message::Sender { // Called right after the WebKit API is initialized. virtual void WebKitInitialized(); - // See WebViewClient::allowScriptExtension - virtual bool AllowScriptExtension(const std::string& v8_extension_name, - const GURL& url, - int extension_group); - virtual void IdleNotification(); private: diff --git a/content/renderer/render_thread.cc b/content/renderer/render_thread.cc index c06ff32..9471a99 100644 --- a/content/renderer/render_thread.cc +++ b/content/renderer/render_thread.cc @@ -674,24 +674,12 @@ RenderThread::GetFileThreadMessageLoopProxy() { return file_thread_->message_loop_proxy(); } -bool RenderThread::AllowScriptExtension(const std::string& v8_extension_name, - const GURL& url, - int extension_group) { - // If we don't know about it, it was added by WebCore, so we should allow it. - if (v8_extensions_.find(v8_extension_name) == v8_extensions_.end()) - return true; - - ObserverListBase<RenderProcessObserver>::Iterator it(observers_); - RenderProcessObserver* observer; - while ((observer = it.GetNext()) != NULL) { - if (observer->AllowScriptExtension(v8_extension_name, url, extension_group)) - return true; - } - - return false; -} - void RenderThread::RegisterExtension(v8::Extension* extension) { WebScriptController::registerExtension(extension); v8_extensions_.insert(extension->name()); } + +bool RenderThread::IsRegisteredExtension( + const std::string& v8_extension_name) const { + return v8_extensions_.find(v8_extension_name) != v8_extensions_.end(); +} diff --git a/content/renderer/render_thread.h b/content/renderer/render_thread.h index 704e727..c1a6570 100644 --- a/content/renderer/render_thread.h +++ b/content/renderer/render_thread.h @@ -213,13 +213,6 @@ class RenderThread : public RenderThreadBase, // on the renderer's main thread. scoped_refptr<base::MessageLoopProxy> GetFileThreadMessageLoopProxy(); - // This function is called for every registered V8 extension each time a new - // script context is created. Returns true if the given V8 extension is - // allowed to run on the given URL and extension group. - bool AllowScriptExtension(const std::string& v8_extension_name, - const GURL& url, - int extension_group); - // Hack for http://crbug.com/71735. // TODO(jamesr): remove once http://crbug.com/72007 is fixed. RendererWebKitClientImpl* GetWebKitClientImpl() const { @@ -235,6 +228,9 @@ class RenderThread : public RenderThreadBase, // Registers the given V8 extension with WebKit. void RegisterExtension(v8::Extension* extension); + // Returns true iff the extension is registered. + bool IsRegisteredExtension(const std::string& v8_extension_name) const; + private: virtual bool OnControlMessageReceived(const IPC::Message& msg); diff --git a/content/renderer/render_view.cc b/content/renderer/render_view.cc index 4dbc188..19bbaac 100644 --- a/content/renderer/render_view.cc +++ b/content/renderer/render_view.cc @@ -2642,63 +2642,6 @@ void RenderView::didRunInsecureContent( target)); } -bool RenderView::allowImages(WebFrame* frame, bool enabled_per_settings) { - ObserverListBase<RenderViewObserver>::Iterator it(observers_); - RenderViewObserver* observer; - while ((observer = it.GetNext()) != NULL) - if (!observer->AllowImages(frame, enabled_per_settings)) - return false; - - return true; -} - -bool RenderView::allowPlugins(WebFrame* frame, bool enabled_per_settings) { - ObserverListBase<RenderViewObserver>::Iterator it(observers_); - RenderViewObserver* observer; - while ((observer = it.GetNext()) != NULL) - if (!observer->AllowPlugins(frame, enabled_per_settings)) - return false; - - return true; -} - -bool RenderView::allowScript(WebFrame* frame, bool enabled_per_settings) { - ObserverListBase<RenderViewObserver>::Iterator it(observers_); - RenderViewObserver* observer; - while ((observer = it.GetNext()) != NULL) - if (!observer->AllowScript(frame, enabled_per_settings)) - return false; - - return true; -} - -bool RenderView::allowDatabase( - WebFrame* frame, const WebString& name, const WebString& display_name, - unsigned long estimated_size) { - WebSecurityOrigin origin = frame->securityOrigin(); - if (origin.isEmpty()) - return false; // Uninitialized document? - - bool result; - if (!Send(new DatabaseHostMsg_Allow(routing_id_, - origin.toString().utf8(), name, display_name, estimated_size, &result))) - return false; - Send(new ViewHostMsg_WebDatabaseAccessed(routing_id_, - GURL(origin.toString().utf8()), - name, - display_name, - estimated_size, - !result)); - return result; -} -void RenderView::didNotAllowScript(WebKit::WebFrame* frame) { - FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidNotAllowScript(frame)); -} - -void RenderView::didNotAllowPlugins(WebKit::WebFrame* frame) { - FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidNotAllowPlugins(frame)); -} - void RenderView::didExhaustMemoryAvailableForScript(WebFrame* frame) { Send(new ViewHostMsg_JSOutOfMemory(routing_id_)); } @@ -2716,23 +2659,6 @@ void RenderView::didCreateIsolatedScriptContext(WebFrame* frame) { frame); } -bool RenderView::allowScriptExtension(WebFrame* frame, - const WebString& extension_name, - int extension_group) { - // NULL in unit tests. - if (!RenderThread::current()) - return true; - - // Note: we prefer the provisional URL here instead of the document URL - // because we might be currently loading an URL into a blank page. - // See http://code.google.com/p/chromium/issues/detail?id=10924 - WebDataSource* ds = frame->provisionalDataSource(); - if (!ds) - ds = frame->dataSource(); - return RenderThread::current()->AllowScriptExtension( - extension_name.utf8(), ds->request().url(), extension_group); -} - void RenderView::logCrossFramePropertyAccess(WebFrame* frame, WebFrame* target, bool cross_origin, diff --git a/content/renderer/render_view.h b/content/renderer/render_view.h index b99329c..4cdf0e2 100644 --- a/content/renderer/render_view.h +++ b/content/renderer/render_view.h @@ -524,23 +524,10 @@ class RenderView : public RenderWidget, WebKit::WebFrame* frame, const WebKit::WebSecurityOrigin& origin, const WebKit::WebURL& target); - - virtual bool allowImages(WebKit::WebFrame* frame, bool enabled_per_settings); - virtual bool allowPlugins(WebKit::WebFrame* frame, bool enabled_per_settings); - virtual bool allowScript(WebKit::WebFrame* frame, bool enabled_per_settings); - virtual bool allowDatabase(WebKit::WebFrame* frame, - const WebKit::WebString& name, - const WebKit::WebString& display_name, - unsigned long estimated_size); - virtual void didNotAllowScript(WebKit::WebFrame* frame); - virtual void didNotAllowPlugins(WebKit::WebFrame* frame); virtual void didExhaustMemoryAvailableForScript(WebKit::WebFrame* frame); virtual void didCreateScriptContext(WebKit::WebFrame* frame); virtual void didDestroyScriptContext(WebKit::WebFrame* frame); virtual void didCreateIsolatedScriptContext(WebKit::WebFrame* frame); - virtual bool allowScriptExtension(WebKit::WebFrame*, - const WebKit::WebString& extension_name, - int extensionGroup); virtual void logCrossFramePropertyAccess( WebKit::WebFrame* frame, WebKit::WebFrame* target, diff --git a/content/renderer/render_view_observer.cc b/content/renderer/render_view_observer.cc index e74c503..b733caf 100644 --- a/content/renderer/render_view_observer.cc +++ b/content/renderer/render_view_observer.cc @@ -36,18 +36,3 @@ bool RenderViewObserver::Send(IPC::Message* message) { delete message; return false; } - -bool RenderViewObserver::AllowImages(WebFrame* frame, - bool enabled_per_settings) { - return true; -} - -bool RenderViewObserver::AllowPlugins(WebFrame* frame, - bool enabled_per_settings) { - return true; -} - -bool RenderViewObserver::AllowScript(WebFrame* frame, - bool enabled_per_settings) { - return true; -} diff --git a/content/renderer/render_view_observer.h b/content/renderer/render_view_observer.h index 864c4fd..3fb5c7b 100644 --- a/content/renderer/render_view_observer.h +++ b/content/renderer/render_view_observer.h @@ -67,12 +67,6 @@ class RenderViewObserver : public IPC::Channel::Listener, const WebKit::WebString& property_name, unsigned long long event_id) {} virtual void FocusedNodeChanged(const WebKit::WebNode& node) {} - // If any observer returns false, then the request will be denied. - virtual bool AllowImages(WebKit::WebFrame* frame, bool enabled_per_settings); - virtual bool AllowPlugins(WebKit::WebFrame* frame, bool enabled_per_settings); - virtual bool AllowScript(WebKit::WebFrame* frame, bool enabled_per_settings); - virtual void DidNotAllowPlugins(WebKit::WebFrame* frame) {} - virtual void DidNotAllowScript(WebKit::WebFrame* frame) {} // These match the RenderView methods. virtual void DidHandleMouseEvent(const WebKit::WebMouseEvent& event) {} |