summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc')
-rw-r--r--chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc25
1 files changed, 23 insertions, 2 deletions
diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
index d047bb5..5bc48c2 100644
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
@@ -6,18 +6,22 @@
#include "base/logging.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/content_settings/host_content_settings_map.h"
#include "chrome/browser/external_protocol/external_protocol_handler.h"
#include "chrome/browser/net/load_timing_observer.h"
#include "chrome/browser/prerender/prerender_manager.h"
#include "chrome/browser/prerender/prerender_tracker.h"
+#include "chrome/browser/profiles/profile_io_data.h"
#include "chrome/browser/renderer_host/safe_browsing_resource_handler.h"
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
#include "chrome/browser/ui/login/login_prompt.h"
#include "chrome/common/extensions/user_script.h"
+#include "chrome/common/render_messages.h"
#include "content/browser/browser_thread.h"
#include "content/browser/resource_context.h"
#include "content/browser/renderer_host/resource_dispatcher_host.h"
#include "content/browser/renderer_host/resource_dispatcher_host_request_info.h"
+#include "content/browser/renderer_host/resource_message_filter.h"
#include "content/common/resource_messages.h"
#include "net/base/load_flags.h"
@@ -200,11 +204,28 @@ bool ChromeResourceDispatcherHostDelegate::ShouldForceDownloadResource(
}
void ChromeResourceDispatcherHostDelegate::OnResponseStarted(
- net::URLRequest* request, ResourceResponse* response) {
+ net::URLRequest* request,
+ ResourceResponse* response,
+ ResourceMessageFilter* filter) {
LoadTimingObserver::PopulateTimingInfo(request, response);
+
+ // We must send the content settings for the URL before sending response
+ // headers to the renderer.
+ const content::ResourceContext& resource_context = filter->resource_context();
+ ProfileIOData* io_data =
+ reinterpret_cast<ProfileIOData*>(resource_context.GetUserData(NULL));
+ HostContentSettingsMap* map = io_data->GetHostContentSettingsMap();
+
+ ResourceDispatcherHostRequestInfo* info =
+ resource_dispatcher_host_->InfoForRequest(request);
+ filter->Send(new ViewMsg_SetContentSettingsForLoadingURL(
+ info->route_id(), request->url(),
+ map->GetContentSettings(request->url(), request->url())));
}
void ChromeResourceDispatcherHostDelegate::OnRequestRedirected(
- net::URLRequest* request, ResourceResponse* response) {
+ net::URLRequest* request,
+ ResourceResponse* response,
+ ResourceMessageFilter* filter) {
LoadTimingObserver::PopulateTimingInfo(request, response);
}