diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-09 13:10:21 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-09 13:10:21 +0000 |
commit | 035545f333d5f508bee18782784b17c3d6889924 (patch) | |
tree | bc7f79bb0f9aeb52bceca75741f0e1e68cb3228d /chrome | |
parent | f16943a1cad260cdee0d20147ea947d9bff84d84 (diff) | |
download | chromium_src-035545f333d5f508bee18782784b17c3d6889924.zip chromium_src-035545f333d5f508bee18782784b17c3d6889924.tar.gz chromium_src-035545f333d5f508bee18782784b17c3d6889924.tar.bz2 |
Indicate in the tab UI if appcache creation was blocked by privacy settings.
TEST=manual
BUG=38362
Review URL: http://codereview.chromium.org/1600002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44079 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/appcache/appcache_frontend_proxy.cc | 6 | ||||
-rw-r--r-- | chrome/browser/appcache/appcache_frontend_proxy.h | 3 | ||||
-rwxr-xr-x | chrome/chrome_renderer.gypi | 2 | ||||
-rw-r--r-- | chrome/common/appcache/appcache_dispatcher.cc | 7 | ||||
-rw-r--r-- | chrome/common/appcache/appcache_dispatcher.h | 3 | ||||
-rw-r--r-- | chrome/common/render_messages_internal.h | 4 | ||||
-rw-r--r-- | chrome/renderer/render_view.cc | 11 | ||||
-rw-r--r-- | chrome/renderer/render_view.h | 4 | ||||
-rw-r--r-- | chrome/renderer/renderer_webapplicationcachehost_impl.cc | 32 | ||||
-rw-r--r-- | chrome/renderer/renderer_webapplicationcachehost_impl.h | 31 | ||||
-rw-r--r-- | chrome/renderer/renderer_webkitclient_impl.cc | 10 | ||||
-rw-r--r-- | chrome/renderer/renderer_webkitclient_impl.h | 2 |
12 files changed, 99 insertions, 16 deletions
diff --git a/chrome/browser/appcache/appcache_frontend_proxy.cc b/chrome/browser/appcache/appcache_frontend_proxy.cc index c0448592..d81244c 100644 --- a/chrome/browser/appcache/appcache_frontend_proxy.cc +++ b/chrome/browser/appcache/appcache_frontend_proxy.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 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. @@ -20,3 +20,7 @@ void AppCacheFrontendProxy::OnEventRaised(const std::vector<int>& host_ids, appcache::EventID event_id) { sender_->Send(new AppCacheMsg_EventRaised(host_ids, event_id)); } + +void AppCacheFrontendProxy::OnContentBlocked(int host_id) { + sender_->Send(new AppCacheMsg_ContentBlocked(host_id)); +} diff --git a/chrome/browser/appcache/appcache_frontend_proxy.h b/chrome/browser/appcache/appcache_frontend_proxy.h index 78865ab..234e36cf 100644 --- a/chrome/browser/appcache/appcache_frontend_proxy.h +++ b/chrome/browser/appcache/appcache_frontend_proxy.h @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 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. @@ -24,6 +24,7 @@ class AppCacheFrontendProxy : public appcache::AppCacheFrontend { appcache::Status status); virtual void OnEventRaised(const std::vector<int>& host_ids, appcache::EventID event_id); + virtual void OnContentBlocked(int host_id); private: IPC::Message::Sender* sender_; diff --git a/chrome/chrome_renderer.gypi b/chrome/chrome_renderer.gypi index 7598f35..774af6d 100755 --- a/chrome/chrome_renderer.gypi +++ b/chrome/chrome_renderer.gypi @@ -133,6 +133,8 @@ 'renderer/renderer_main_platform_delegate_win.cc', 'renderer/renderer_sandbox_support_linux.cc', 'renderer/renderer_sandbox_support_linux.h', + 'renderer/renderer_webapplicationcachehost_impl.cc', + 'renderer/renderer_webapplicationcachehost_impl.h', 'renderer/renderer_webcookiejar_impl.cc', 'renderer/renderer_webcookiejar_impl.h', 'renderer/renderer_webkitclient_impl.cc', diff --git a/chrome/common/appcache/appcache_dispatcher.cc b/chrome/common/appcache/appcache_dispatcher.cc index 71461ba..eabb690 100644 --- a/chrome/common/appcache/appcache_dispatcher.cc +++ b/chrome/common/appcache/appcache_dispatcher.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 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. @@ -13,6 +13,7 @@ bool AppCacheDispatcher::OnMessageReceived(const IPC::Message& msg) { IPC_MESSAGE_HANDLER(AppCacheMsg_CacheSelected, OnCacheSelected) IPC_MESSAGE_HANDLER(AppCacheMsg_StatusChanged, OnStatusChanged) IPC_MESSAGE_HANDLER(AppCacheMsg_EventRaised, OnEventRaised) + IPC_MESSAGE_HANDLER(AppCacheMsg_ContentBlocked, OnContentBlocked) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; @@ -32,3 +33,7 @@ void AppCacheDispatcher::OnEventRaised(const std::vector<int>& host_ids, appcache::EventID event_id) { frontend_impl_.OnEventRaised(host_ids, event_id); } + +void AppCacheDispatcher::OnContentBlocked(int host_id) { + frontend_impl_.OnContentBlocked(host_id); +} diff --git a/chrome/common/appcache/appcache_dispatcher.h b/chrome/common/appcache/appcache_dispatcher.h index 9eaef6a..4f3b50c 100644 --- a/chrome/common/appcache/appcache_dispatcher.h +++ b/chrome/common/appcache/appcache_dispatcher.h @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 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. @@ -31,6 +31,7 @@ class AppCacheDispatcher { appcache::Status status); void OnEventRaised(const std::vector<int>& host_ids, appcache::EventID event_id); + void OnContentBlocked(int host_id); AppCacheBackendProxy backend_proxy_; appcache::AppCacheFrontendImpl frontend_impl_; diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h index 17e5689..93b1a76 100644 --- a/chrome/common/render_messages_internal.h +++ b/chrome/common/render_messages_internal.h @@ -625,6 +625,10 @@ IPC_BEGIN_MESSAGES(View) std::vector<int> /* host_ids */, appcache::EventID) + // Notifies the renderer of the fact that AppCache access was blocked. + IPC_MESSAGE_CONTROL1(AppCacheMsg_ContentBlocked, + int /* host_id */) + // Reply to the ViewHostMsg_QueryFormFieldAutofill message with the // autofill suggestions. IPC_MESSAGE_ROUTED4(ViewMsg_AutoFillSuggestionsReturned, diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index a1353f7..9dc6442 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -22,6 +22,7 @@ #include "base/string_util.h" #include "base/time.h" #include "build/build_config.h" +#include "chrome/common/appcache/appcache_dispatcher.h" #include "chrome/common/bindings_policy.h" #include "chrome/common/child_process_logging.h" #include "chrome/common/chrome_switches.h" @@ -51,6 +52,7 @@ #include "chrome/renderer/print_web_view_helper.h" #include "chrome/renderer/render_process.h" #include "chrome/renderer/render_thread.h" +#include "chrome/renderer/renderer_webapplicationcachehost_impl.h" #include "chrome/renderer/renderer_webstoragenamespace_impl.h" #include "chrome/renderer/spellchecker/spellcheck.h" #include "chrome/renderer/user_script_slave.h" @@ -143,6 +145,8 @@ using webkit_glue::PasswordForm; using webkit_glue::PasswordFormDomManager; using WebKit::WebAccessibilityCache; using WebKit::WebAccessibilityObject; +using WebKit::WebApplicationCacheHost; +using WebKit::WebApplicationCacheHostClient; using WebKit::WebColor; using WebKit::WebColorName; using WebKit::WebConsoleMessage; @@ -2145,6 +2149,13 @@ WebMediaPlayer* RenderView::createMediaPlayer( return new webkit_glue::WebMediaPlayerImpl(client, factory, factory_factory); } +WebApplicationCacheHost* RenderView::createApplicationCacheHost( + WebFrame* frame, WebApplicationCacheHostClient* client) { + return new RendererWebApplicationCacheHostImpl( + FromWebView(frame->view()), client, + RenderThread::current()->appcache_dispatcher()->backend_proxy()); +} + WebCookieJar* RenderView::cookieJar() { return &cookie_jar_; } diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h index 3ef8732..6f67b4d 100644 --- a/chrome/renderer/render_view.h +++ b/chrome/renderer/render_view.h @@ -98,6 +98,8 @@ struct FileUploadData; namespace WebKit { class WebAccessibilityCache; +class WebApplicationCacheHost; +class WebApplicationCacheHostClient; class WebDataSource; class WebDragData; class WebGeolocationServiceInterface; @@ -301,6 +303,8 @@ class RenderView : public RenderWidget, const WebKit::WebString& name, unsigned long long documentId); virtual WebKit::WebMediaPlayer* createMediaPlayer( WebKit::WebFrame* frame, WebKit::WebMediaPlayerClient* client); + virtual WebKit::WebApplicationCacheHost* createApplicationCacheHost( + WebKit::WebFrame* frame, WebKit::WebApplicationCacheHostClient* client); virtual WebKit::WebCookieJar* cookieJar(); virtual void willClose(WebKit::WebFrame* frame); virtual bool allowPlugins(WebKit::WebFrame* frame, bool enabled_per_settings); diff --git a/chrome/renderer/renderer_webapplicationcachehost_impl.cc b/chrome/renderer/renderer_webapplicationcachehost_impl.cc new file mode 100644 index 0000000..88ffd2c --- /dev/null +++ b/chrome/renderer/renderer_webapplicationcachehost_impl.cc @@ -0,0 +1,32 @@ +// Copyright (c) 2010 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_webapplicationcachehost_impl.h" + +#include "chrome/common/content_settings_types.h" +#include "chrome/renderer/render_thread.h" +#include "chrome/renderer/render_view.h" + +using appcache::AppCacheBackend; +using WebKit::WebApplicationCacheHostClient; + +RendererWebApplicationCacheHostImpl::RendererWebApplicationCacheHostImpl( + RenderView* render_view, + WebApplicationCacheHostClient* client, + AppCacheBackend* backend) + : WebApplicationCacheHostImpl(client, backend), + content_blocked_(false), + routing_id_(render_view->routing_id()) { +} + +RendererWebApplicationCacheHostImpl::~RendererWebApplicationCacheHostImpl() { +} + +void RendererWebApplicationCacheHostImpl::OnContentBlocked() { + if (!content_blocked_) { + RenderThread::current()->Send(new ViewHostMsg_ContentBlocked( + routing_id_, CONTENT_SETTINGS_TYPE_COOKIES)); + content_blocked_ = true; + } +} diff --git a/chrome/renderer/renderer_webapplicationcachehost_impl.h b/chrome/renderer/renderer_webapplicationcachehost_impl.h new file mode 100644 index 0000000..8a00032 --- /dev/null +++ b/chrome/renderer/renderer_webapplicationcachehost_impl.h @@ -0,0 +1,31 @@ +// Copyright (c) 2010 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_WEBAPPLICATIONCACHEHOST_IMPL_H_ +#define CHROME_RENDERER_RENDERER_WEBAPPLICATIONCACHEHOST_IMPL_H_ + +#include "webkit/appcache/web_application_cache_host_impl.h" + +class RenderView; + +class RendererWebApplicationCacheHostImpl + : public appcache::WebApplicationCacheHostImpl { + public: + RendererWebApplicationCacheHostImpl( + RenderView* render_view, + WebKit::WebApplicationCacheHostClient* client, + appcache::AppCacheBackend* backend); + + virtual ~RendererWebApplicationCacheHostImpl(); + + // appcache::WebApplicationCacheHostImpl methods. + virtual void OnContentBlocked(); + + private: + bool content_blocked_; + + int routing_id_; +}; + +#endif // CHROME_RENDERER_RENDERER_WEBAPPLICATIONCACHEHOST_IMPL_H_ diff --git a/chrome/renderer/renderer_webkitclient_impl.cc b/chrome/renderer/renderer_webkitclient_impl.cc index 70bccc9..c5b042a 100644 --- a/chrome/renderer/renderer_webkitclient_impl.cc +++ b/chrome/renderer/renderer_webkitclient_impl.cc @@ -13,7 +13,6 @@ #include "base/command_line.h" #include "base/file_path.h" #include "base/platform_file.h" -#include "chrome/common/appcache/appcache_dispatcher.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/database_util.h" #include "chrome/common/render_messages.h" @@ -32,7 +31,6 @@ #include "third_party/WebKit/WebKit/chromium/public/WebString.h" #include "third_party/WebKit/WebKit/chromium/public/WebURL.h" #include "third_party/WebKit/WebKit/chromium/public/WebVector.h" -#include "webkit/appcache/web_application_cache_host_impl.h" #include "webkit/glue/webkit_glue.h" #if defined(OS_LINUX) @@ -43,8 +41,6 @@ #include "base/file_descriptor_posix.h" #endif -using WebKit::WebApplicationCacheHost; -using WebKit::WebApplicationCacheHostClient; using WebKit::WebFrame; using WebKit::WebKitClient; using WebKit::WebStorageArea; @@ -182,12 +178,6 @@ void RendererWebKitClientImpl::dispatchStorageEvent( url, is_local_storage); } -WebApplicationCacheHost* RendererWebKitClientImpl::createApplicationCacheHost( - WebApplicationCacheHostClient* client) { - return new appcache::WebApplicationCacheHostImpl(client, - RenderThread::current()->appcache_dispatcher()->backend_proxy()); -} - //------------------------------------------------------------------------------ WebString RendererWebKitClientImpl::MimeRegistry::mimeTypeForExtension( diff --git a/chrome/renderer/renderer_webkitclient_impl.h b/chrome/renderer/renderer_webkitclient_impl.h index b9232d2..3606eaa 100644 --- a/chrome/renderer/renderer_webkitclient_impl.h +++ b/chrome/renderer/renderer_webkitclient_impl.h @@ -64,8 +64,6 @@ class RendererWebKitClientImpl : public webkit_glue::WebKitClientImpl { unsigned key_size_index, const WebKit::WebString& challenge, const WebKit::WebURL& url); - virtual WebKit::WebApplicationCacheHost* createApplicationCacheHost( - WebKit::WebApplicationCacheHostClient*); virtual WebKit::WebSharedWorkerRepository* sharedWorkerRepository(); virtual WebKit::WebGraphicsContext3D* createGraphicsContext3D(); |