OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/renderer_host/render_view_host.h" | 5 #include "chrome/browser/renderer_host/render_view_host.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/i18n/rtl.h" | 11 #include "base/i18n/rtl.h" |
12 #include "base/json/json_reader.h" | 12 #include "base/json/json_reader.h" |
13 #include "base/stats_counters.h" | 13 #include "base/stats_counters.h" |
14 #include "base/string_util.h" | 14 #include "base/string_util.h" |
15 #include "base/time.h" | 15 #include "base/time.h" |
16 #include "chrome/browser/blocked_plugin_manager.h" | 16 #include "chrome/browser/blocked_plugin_manager.h" |
17 #include "chrome/browser/browser_list.h" | 17 #include "chrome/browser/browser_list.h" |
18 #include "chrome/browser/child_process_security_policy.h" | 18 #include "chrome/browser/child_process_security_policy.h" |
19 #include "chrome/browser/cross_site_request_manager.h" | 19 #include "chrome/browser/cross_site_request_manager.h" |
20 #include "chrome/browser/debugger/devtools_manager.h" | 20 #include "chrome/browser/debugger/devtools_manager.h" |
21 #include "chrome/browser/dom_operation_notification_details.h" | 21 #include "chrome/browser/dom_operation_notification_details.h" |
22 #include "chrome/browser/extensions/extension_message_service.h" | 22 #include "chrome/browser/extensions/extension_message_service.h" |
| 23 #include "chrome/browser/in_process_webkit/session_storage_namespace.h" |
23 #include "chrome/browser/metrics/user_metrics.h" | 24 #include "chrome/browser/metrics/user_metrics.h" |
24 #include "chrome/browser/net/predictor_api.h" | 25 #include "chrome/browser/net/predictor_api.h" |
25 #include "chrome/browser/notifications/desktop_notification_service.h" | 26 #include "chrome/browser/notifications/desktop_notification_service.h" |
26 #include "chrome/browser/profile.h" | 27 #include "chrome/browser/profile.h" |
27 #include "chrome/browser/renderer_host/render_process_host.h" | 28 #include "chrome/browser/renderer_host/render_process_host.h" |
28 #include "chrome/browser/renderer_host/render_view_host_delegate.h" | 29 #include "chrome/browser/renderer_host/render_view_host_delegate.h" |
29 #include "chrome/browser/renderer_host/render_widget_host.h" | 30 #include "chrome/browser/renderer_host/render_widget_host.h" |
30 #include "chrome/browser/renderer_host/render_widget_host_view.h" | 31 #include "chrome/browser/renderer_host/render_widget_host_view.h" |
31 #include "chrome/browser/renderer_host/site_instance.h" | 32 #include "chrome/browser/renderer_host/site_instance.h" |
32 #include "chrome/common/bindings_policy.h" | 33 #include "chrome/common/bindings_policy.h" |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 RenderWidgetHost* widget = static_cast<RenderWidgetHost*>( | 108 RenderWidgetHost* widget = static_cast<RenderWidgetHost*>( |
108 process->GetListenerByID(render_view_id)); | 109 process->GetListenerByID(render_view_id)); |
109 if (!widget || !widget->IsRenderView()) | 110 if (!widget || !widget->IsRenderView()) |
110 return NULL; | 111 return NULL; |
111 return static_cast<RenderViewHost*>(widget); | 112 return static_cast<RenderViewHost*>(widget); |
112 } | 113 } |
113 | 114 |
114 RenderViewHost::RenderViewHost(SiteInstance* instance, | 115 RenderViewHost::RenderViewHost(SiteInstance* instance, |
115 RenderViewHostDelegate* delegate, | 116 RenderViewHostDelegate* delegate, |
116 int routing_id, | 117 int routing_id, |
117 int64 session_storage_namespace_id) | 118 SessionStorageNamespace* session_storage) |
118 : RenderWidgetHost(instance->GetProcess(), routing_id), | 119 : RenderWidgetHost(instance->GetProcess(), routing_id), |
119 instance_(instance), | 120 instance_(instance), |
120 delegate_(delegate), | 121 delegate_(delegate), |
121 waiting_for_drag_context_response_(false), | 122 waiting_for_drag_context_response_(false), |
122 enabled_bindings_(0), | 123 enabled_bindings_(0), |
123 pending_request_id_(0), | 124 pending_request_id_(0), |
124 navigations_suspended_(false), | 125 navigations_suspended_(false), |
125 suspended_nav_message_(NULL), | 126 suspended_nav_message_(NULL), |
126 run_modal_reply_msg_(NULL), | 127 run_modal_reply_msg_(NULL), |
127 is_waiting_for_beforeunload_ack_(false), | 128 is_waiting_for_beforeunload_ack_(false), |
128 is_waiting_for_unload_ack_(false), | 129 is_waiting_for_unload_ack_(false), |
129 unload_ack_is_for_cross_site_transition_(false), | 130 unload_ack_is_for_cross_site_transition_(false), |
130 are_javascript_messages_suppressed_(false), | 131 are_javascript_messages_suppressed_(false), |
131 sudden_termination_allowed_(false), | 132 sudden_termination_allowed_(false), |
132 session_storage_namespace_id_(session_storage_namespace_id), | 133 session_storage_namespace_(session_storage), |
133 is_extension_process_(false), | 134 is_extension_process_(false), |
134 autofill_query_id_(0), | 135 autofill_query_id_(0), |
135 save_accessibility_tree_for_testing_(false) { | 136 save_accessibility_tree_for_testing_(false) { |
| 137 if (!session_storage_namespace_) { |
| 138 session_storage_namespace_ = |
| 139 new SessionStorageNamespace(process()->profile()); |
| 140 } |
| 141 |
136 DCHECK(instance_); | 142 DCHECK(instance_); |
137 DCHECK(delegate_); | 143 DCHECK(delegate_); |
138 } | 144 } |
139 | 145 |
140 RenderViewHost::~RenderViewHost() { | 146 RenderViewHost::~RenderViewHost() { |
141 delegate()->RenderViewDeleted(this); | 147 delegate()->RenderViewDeleted(this); |
142 | 148 |
143 // Be sure to clean up any leftover state from cross-site requests. | 149 // Be sure to clean up any leftover state from cross-site requests. |
144 Singleton<CrossSiteRequestManager>()->SetHasPendingCrossSiteRequest( | 150 Singleton<CrossSiteRequestManager>()->SetHasPendingCrossSiteRequest( |
145 process()->id(), routing_id(), false); | 151 process()->id(), routing_id(), false); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 webkit_prefs.local_storage_enabled = true; | 188 webkit_prefs.local_storage_enabled = true; |
183 webkit_prefs.databases_enabled = true; | 189 webkit_prefs.databases_enabled = true; |
184 } | 190 } |
185 | 191 |
186 ViewMsg_New_Params params; | 192 ViewMsg_New_Params params; |
187 params.parent_window = GetNativeViewId(); | 193 params.parent_window = GetNativeViewId(); |
188 params.renderer_preferences = | 194 params.renderer_preferences = |
189 delegate_->GetRendererPrefs(process()->profile()); | 195 delegate_->GetRendererPrefs(process()->profile()); |
190 params.web_preferences = webkit_prefs; | 196 params.web_preferences = webkit_prefs; |
191 params.view_id = routing_id(); | 197 params.view_id = routing_id(); |
192 params.session_storage_namespace_id = session_storage_namespace_id_; | 198 params.session_storage_namespace_id = session_storage_namespace_->id(); |
193 params.frame_name = frame_name; | 199 params.frame_name = frame_name; |
194 Send(new ViewMsg_New(params)); | 200 Send(new ViewMsg_New(params)); |
195 | 201 |
196 // Set the alternate error page, which is profile specific, in the renderer. | 202 // Set the alternate error page, which is profile specific, in the renderer. |
197 GURL url = delegate_->GetAlternateErrorPageURL(); | 203 GURL url = delegate_->GetAlternateErrorPageURL(); |
198 SetAlternateErrorPageURL(url); | 204 SetAlternateErrorPageURL(url); |
199 | 205 |
200 // If it's enabled, tell the renderer to set up the Javascript bindings for | 206 // If it's enabled, tell the renderer to set up the Javascript bindings for |
201 // sending messages back to the browser. | 207 // sending messages back to the browser. |
202 Send(new ViewMsg_AllowBindings(routing_id(), enabled_bindings_)); | 208 Send(new ViewMsg_AllowBindings(routing_id(), enabled_bindings_)); |
(...skipping 1871 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2074 } | 2080 } |
2075 | 2081 |
2076 void RenderViewHost::OnSetSuggestResult(int32 page_id, | 2082 void RenderViewHost::OnSetSuggestResult(int32 page_id, |
2077 const std::string& result) { | 2083 const std::string& result) { |
2078 RenderViewHostDelegate::BrowserIntegration* integration_delegate = | 2084 RenderViewHostDelegate::BrowserIntegration* integration_delegate = |
2079 delegate_->GetBrowserIntegrationDelegate(); | 2085 delegate_->GetBrowserIntegrationDelegate(); |
2080 if (!integration_delegate) | 2086 if (!integration_delegate) |
2081 return; | 2087 return; |
2082 integration_delegate->OnSetSuggestResult(page_id, result); | 2088 integration_delegate->OnSetSuggestResult(page_id, result); |
2083 } | 2089 } |
OLD | NEW |