summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-09 13:10:21 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-09 13:10:21 +0000
commit035545f333d5f508bee18782784b17c3d6889924 (patch)
treebc7f79bb0f9aeb52bceca75741f0e1e68cb3228d /chrome
parentf16943a1cad260cdee0d20147ea947d9bff84d84 (diff)
downloadchromium_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.cc6
-rw-r--r--chrome/browser/appcache/appcache_frontend_proxy.h3
-rwxr-xr-xchrome/chrome_renderer.gypi2
-rw-r--r--chrome/common/appcache/appcache_dispatcher.cc7
-rw-r--r--chrome/common/appcache/appcache_dispatcher.h3
-rw-r--r--chrome/common/render_messages_internal.h4
-rw-r--r--chrome/renderer/render_view.cc11
-rw-r--r--chrome/renderer/render_view.h4
-rw-r--r--chrome/renderer/renderer_webapplicationcachehost_impl.cc32
-rw-r--r--chrome/renderer/renderer_webapplicationcachehost_impl.h31
-rw-r--r--chrome/renderer/renderer_webkitclient_impl.cc10
-rw-r--r--chrome/renderer/renderer_webkitclient_impl.h2
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();