Index: chrome/renderer/content_settings_observer.cc |
diff --git a/chrome/renderer/content_settings_observer.cc b/chrome/renderer/content_settings_observer.cc |
index 3769a85cce7d56ff343fd4b4d6e9e4a73460401f..332e29a7e99507e220d8fe1000637ae9826d3649 100644 |
--- a/chrome/renderer/content_settings_observer.cc |
+++ b/chrome/renderer/content_settings_observer.cc |
@@ -170,11 +170,15 @@ ContentSettingsObserver::ContentSettingsObserver( |
ClearBlockedContentSettings(); |
render_frame->GetWebFrame()->setContentSettingsClient(this); |
- if (render_frame->GetRenderView()->GetMainRenderFrame() != render_frame) { |
+ content::RenderFrame* main_frame = |
+ render_frame->GetRenderView()->GetMainRenderFrame(); |
+ // TODO(nasko): The main frame is not guaranteed to be in the same process |
+ // with this frame with --site-per-process. This code needs to be updated |
+ // to handle this case. See https://crbug.com/496670. |
+ if (main_frame && main_frame != render_frame) { |
// Copy all the settings from the main render frame to avoid race conditions |
- // when initializing this data. See http://crbug.com/333308. |
- ContentSettingsObserver* parent = ContentSettingsObserver::Get( |
- render_frame->GetRenderView()->GetMainRenderFrame()); |
+ // when initializing this data. See https://crbug.com/333308. |
+ ContentSettingsObserver* parent = ContentSettingsObserver::Get(main_frame); |
allow_displaying_insecure_content_ = |
parent->allow_displaying_insecure_content_; |
allow_running_insecure_content_ = parent->allow_running_insecure_content_; |