summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-12 04:00:01 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-12 04:00:01 +0000
commit71aaa7aa371e39947d951addfcdf32f2cda353ac (patch)
treeab138d9c44fde00390e5f5cc203f292d7aa80815 /chrome/browser
parent6cd36ac0c3138c5c3e741e32dd6f3e3e6dff9d45 (diff)
downloadchromium_src-71aaa7aa371e39947d951addfcdf32f2cda353ac.zip
chromium_src-71aaa7aa371e39947d951addfcdf32f2cda353ac.tar.gz
chromium_src-71aaa7aa371e39947d951addfcdf32f2cda353ac.tar.bz2
Pass notifications to the browser on access to the appcache main resource manifest.
BUG=45230 TEST=browser_tests Review URL: http://codereview.chromium.org/2808046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52072 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/appcache/appcache_frontend_proxy.cc5
-rw-r--r--chrome/browser/appcache/appcache_frontend_proxy.h3
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc10
-rw-r--r--chrome/browser/renderer_host/render_view_host.h1
-rw-r--r--chrome/browser/renderer_host/render_view_host_delegate.h7
-rw-r--r--chrome/browser/tab_contents/tab_specific_content_settings.cc10
-rw-r--r--chrome/browser/tab_contents/tab_specific_content_settings.h2
7 files changed, 35 insertions, 3 deletions
diff --git a/chrome/browser/appcache/appcache_frontend_proxy.cc b/chrome/browser/appcache/appcache_frontend_proxy.cc
index fe39029..ded44a1 100644
--- a/chrome/browser/appcache/appcache_frontend_proxy.cc
+++ b/chrome/browser/appcache/appcache_frontend_proxy.cc
@@ -35,6 +35,7 @@ void AppCacheFrontendProxy::OnLogMessage(int host_id,
sender_->Send(new AppCacheMsg_LogMessage(host_id, log_level, message));
}
-void AppCacheFrontendProxy::OnContentBlocked(int host_id) {
- sender_->Send(new AppCacheMsg_ContentBlocked(host_id));
+void AppCacheFrontendProxy::OnContentBlocked(int host_id,
+ const GURL& manifest_url) {
+ sender_->Send(new AppCacheMsg_ContentBlocked(host_id, manifest_url));
}
diff --git a/chrome/browser/appcache/appcache_frontend_proxy.h b/chrome/browser/appcache/appcache_frontend_proxy.h
index 90b9446..1476580 100644
--- a/chrome/browser/appcache/appcache_frontend_proxy.h
+++ b/chrome/browser/appcache/appcache_frontend_proxy.h
@@ -29,7 +29,8 @@ class AppCacheFrontendProxy : public appcache::AppCacheFrontend {
int num_total, int num_complete);
virtual void OnLogMessage(int host_id, appcache::LogLevel log_level,
const std::string& message);
- virtual void OnContentBlocked(int host_id);
+ virtual void OnContentBlocked(int host_id,
+ const GURL& manifest_url);
private:
IPC::Message::Sender* sender_;
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 4905ad5..92c2182 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -835,6 +835,7 @@ void RenderViewHost::OnMessageReceived(const IPC::Message& msg) {
IPC_MESSAGE_HANDLER(ViewHostMsg_PageContents, OnPageContents)
IPC_MESSAGE_HANDLER(ViewHostMsg_PageTranslated, OnPageTranslated)
IPC_MESSAGE_HANDLER(ViewHostMsg_ContentBlocked, OnContentBlocked)
+ IPC_MESSAGE_HANDLER(ViewHostMsg_AppCacheAccessed, OnAppCacheAccessed)
IPC_MESSAGE_HANDLER(ViewHostMsg_WebDatabaseAccessed, OnWebDatabaseAccessed)
IPC_MESSAGE_HANDLER(ViewHostMsg_AccessibilityTree, OnAccessibilityTree)
IPC_MESSAGE_HANDLER(ViewHostMsg_FocusedNodeChanged, OnMsgFocusedNodeChanged)
@@ -1931,6 +1932,15 @@ void RenderViewHost::OnContentBlocked(ContentSettingsType type) {
content_settings_delegate->OnContentBlocked(type);
}
+void RenderViewHost::OnAppCacheAccessed(const GURL& manifest_url,
+ bool blocked_by_policy) {
+ RenderViewHostDelegate::ContentSettings* content_settings_delegate =
+ delegate_->GetContentSettingsDelegate();
+ if (content_settings_delegate)
+ content_settings_delegate->OnAppCacheAccessed(manifest_url,
+ blocked_by_policy);
+}
+
void RenderViewHost::OnWebDatabaseAccessed(const GURL& url,
const string16& name,
const string16& display_name,
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index 25d3c15..c62f6ce 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -640,6 +640,7 @@ class RenderViewHost : public RenderWidgetHost {
const std::string& translated_lang,
TranslateErrors::Type error_type);
void OnContentBlocked(ContentSettingsType type);
+ void OnAppCacheAccessed(const GURL& manifest_url, bool blocked_by_policy);
void OnWebDatabaseAccessed(const GURL& url,
const string16& name,
const string16& display_name,
diff --git a/chrome/browser/renderer_host/render_view_host_delegate.h b/chrome/browser/renderer_host/render_view_host_delegate.h
index a0728a2..a5fca32 100644
--- a/chrome/browser/renderer_host/render_view_host_delegate.h
+++ b/chrome/browser/renderer_host/render_view_host_delegate.h
@@ -342,6 +342,13 @@ class RenderViewHostDelegate {
unsigned long estimated_size,
bool blocked_by_policy) = 0;
+ // Called when a specific appcache in the current page was accessed. If
+ // access was blocked due to the user's content settings,
+ // |blocked_by_policy| should eb true, and this function should invoke
+ // OnContentBlocked.
+ virtual void OnAppCacheAccessed(const GURL& manifest_url,
+ bool blocked_by_policy) = 0;
+
// Called when geolocation permission was set in a frame on the current
// page.
virtual void OnGeolocationPermissionSet(const GURL& requesting_frame,
diff --git a/chrome/browser/tab_contents/tab_specific_content_settings.cc b/chrome/browser/tab_contents/tab_specific_content_settings.cc
index 891debd..21aaa3f 100644
--- a/chrome/browser/tab_contents/tab_specific_content_settings.cc
+++ b/chrome/browser/tab_contents/tab_specific_content_settings.cc
@@ -73,6 +73,16 @@ void TabSpecificContentSettings::OnWebDatabaseAccessed(
}
}
+void TabSpecificContentSettings::OnAppCacheAccessed(
+ const GURL& manifest_url, bool blocked_by_policy) {
+ if (blocked_by_policy) {
+ blocked_local_shared_objects_.appcaches()->AddAppCache(manifest_url);
+ OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES);
+ } else {
+ allowed_local_shared_objects_.appcaches()->AddAppCache(manifest_url);
+ }
+}
+
void TabSpecificContentSettings::OnGeolocationPermissionSet(
const GURL& requesting_origin,
bool allowed) {
diff --git a/chrome/browser/tab_contents/tab_specific_content_settings.h b/chrome/browser/tab_contents/tab_specific_content_settings.h
index 8613b1a..648841e 100644
--- a/chrome/browser/tab_contents/tab_specific_content_settings.h
+++ b/chrome/browser/tab_contents/tab_specific_content_settings.h
@@ -65,6 +65,8 @@ class TabSpecificContentSettings
const string16& display_name,
unsigned long estimated_size,
bool blocked_by_policy);
+ virtual void OnAppCacheAccessed(const GURL& manifest_url,
+ bool blocked_by_policy);
virtual void OnGeolocationPermissionSet(const GURL& requesting_frame,
bool allowed);