OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 | 173 |
174 const char kDotGoogleDotCom[] = ".google.com"; | 174 const char kDotGoogleDotCom[] = ".google.com"; |
175 | 175 |
176 #if defined(OS_ANDROID) | 176 #if defined(OS_ANDROID) |
177 const char kWebContentsAndroidKey[] = "web_contents_android"; | 177 const char kWebContentsAndroidKey[] = "web_contents_android"; |
178 #endif // OS_ANDROID | 178 #endif // OS_ANDROID |
179 | 179 |
180 base::LazyInstance<std::vector<WebContentsImpl::CreatedCallback> > | 180 base::LazyInstance<std::vector<WebContentsImpl::CreatedCallback> > |
181 g_created_callbacks = LAZY_INSTANCE_INITIALIZER; | 181 g_created_callbacks = LAZY_INSTANCE_INITIALIZER; |
182 | 182 |
| 183 bool HasInsecureContent(const net::CertStatus status) { |
| 184 return net::IsCertStatusError(status) && !net::IsCertStatusMinorError(status); |
| 185 } |
| 186 |
183 static int StartDownload(RenderFrameHost* rfh, | 187 static int StartDownload(RenderFrameHost* rfh, |
184 const GURL& url, | 188 const GURL& url, |
185 bool is_favicon, | 189 bool is_favicon, |
186 uint32_t max_bitmap_size) { | 190 uint32_t max_bitmap_size) { |
187 static int g_next_image_download_id = 0; | 191 static int g_next_image_download_id = 0; |
188 rfh->Send(new ImageMsg_DownloadImage(rfh->GetRoutingID(), | 192 rfh->Send(new ImageMsg_DownloadImage(rfh->GetRoutingID(), |
189 ++g_next_image_download_id, | 193 ++g_next_image_download_id, |
190 url, | 194 url, |
191 is_favicon, | 195 is_favicon, |
192 max_bitmap_size)); | 196 max_bitmap_size)); |
(...skipping 2040 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2233 if (browser_plugin_embedder_.get()) | 2237 if (browser_plugin_embedder_.get()) |
2234 browser_plugin_embedder_->DragSourceEndedAt(client_x, client_y, | 2238 browser_plugin_embedder_->DragSourceEndedAt(client_x, client_y, |
2235 screen_x, screen_y, operation); | 2239 screen_x, screen_y, operation); |
2236 if (GetRenderViewHost()) | 2240 if (GetRenderViewHost()) |
2237 GetRenderViewHostImpl()->DragSourceEndedAt(client_x, client_y, | 2241 GetRenderViewHostImpl()->DragSourceEndedAt(client_x, client_y, |
2238 screen_x, screen_y, operation); | 2242 screen_x, screen_y, operation); |
2239 } | 2243 } |
2240 | 2244 |
2241 void WebContentsImpl::DidGetResourceResponseStart( | 2245 void WebContentsImpl::DidGetResourceResponseStart( |
2242 const ResourceRequestDetails& details) { | 2246 const ResourceRequestDetails& details) { |
| 2247 |
| 2248 // If inline resource has invalid certificate, set the insecure content flag. |
| 2249 // For all the intended notifications to be sent, we need to call |
| 2250 // SSLManager::NotifySSLInternalStateChanged() after setting the flag. |
| 2251 // In "standard" insecure content scenario (i.e. http resource in https |
| 2252 // context) the flag is set and SSLManager gets notified in |
| 2253 // OnDidDisplayInsecureContent() (Webkit notification handler). |
| 2254 // When, however, the certificate for the inline is invalid, Webkit will not |
| 2255 // tell us about it and we need to set the flag & notify SSLManager manually. |
| 2256 // Note: the call to SSLManager::NotifySSLInternalStateChanged() will be done |
| 2257 // from SSLManager::DidStartResourceResponse(). |
| 2258 if (details.resource_type != RESOURCE_TYPE_FAVICON && |
| 2259 HasInsecureContent(details.ssl_cert_status)) |
| 2260 displayed_insecure_content_ = true; |
| 2261 |
2243 controller_.ssl_manager()->DidStartResourceResponse(details); | 2262 controller_.ssl_manager()->DidStartResourceResponse(details); |
2244 | 2263 |
2245 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 2264 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
2246 DidGetResourceResponseStart(details)); | 2265 DidGetResourceResponseStart(details)); |
2247 | 2266 |
2248 // TODO(avi): Remove. http://crbug.com/170921 | 2267 // TODO(avi): Remove. http://crbug.com/170921 |
2249 NotificationService::current()->Notify( | 2268 NotificationService::current()->Notify( |
2250 NOTIFICATION_RESOURCE_RESPONSE_STARTED, | 2269 NOTIFICATION_RESOURCE_RESPONSE_STARTED, |
2251 Source<WebContents>(this), | 2270 Source<WebContents>(this), |
2252 Details<const ResourceRequestDetails>(&details)); | 2271 Details<const ResourceRequestDetails>(&details)); |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2621 int connection_status = 0; | 2640 int connection_status = 0; |
2622 SignedCertificateTimestampIDStatusList signed_certificate_timestamp_ids; | 2641 SignedCertificateTimestampIDStatusList signed_certificate_timestamp_ids; |
2623 DeserializeSecurityInfo(security_info, &cert_id, &cert_status, | 2642 DeserializeSecurityInfo(security_info, &cert_id, &cert_status, |
2624 &security_bits, &connection_status, | 2643 &security_bits, &connection_status, |
2625 &signed_certificate_timestamp_ids); | 2644 &signed_certificate_timestamp_ids); |
2626 // TODO(alcutter,eranm): Pass signed_certificate_timestamp_ids into details | 2645 // TODO(alcutter,eranm): Pass signed_certificate_timestamp_ids into details |
2627 LoadFromMemoryCacheDetails details( | 2646 LoadFromMemoryCacheDetails details( |
2628 url, GetRenderProcessHost()->GetID(), cert_id, cert_status, http_method, | 2647 url, GetRenderProcessHost()->GetID(), cert_id, cert_status, http_method, |
2629 mime_type, resource_type); | 2648 mime_type, resource_type); |
2630 | 2649 |
| 2650 // See WebContentsImpl::DidGetResourceResponseStart for an explanation of why |
| 2651 // displayed_insecure_content_ is set here. |
| 2652 if (details.resource_type != RESOURCE_TYPE_FAVICON && |
| 2653 HasInsecureContent(cert_status)) |
| 2654 displayed_insecure_content_ = true; |
| 2655 |
2631 controller_.ssl_manager()->DidLoadFromMemoryCache(details); | 2656 controller_.ssl_manager()->DidLoadFromMemoryCache(details); |
2632 | 2657 |
2633 FOR_EACH_OBSERVER(WebContentsObserver, observers_, | 2658 FOR_EACH_OBSERVER(WebContentsObserver, observers_, |
2634 DidLoadResourceFromMemoryCache(details)); | 2659 DidLoadResourceFromMemoryCache(details)); |
2635 | 2660 |
2636 if (url.is_valid() && url.SchemeIsHTTPOrHTTPS()) { | 2661 if (url.is_valid() && url.SchemeIsHTTPOrHTTPS()) { |
2637 scoped_refptr<net::URLRequestContextGetter> request_context( | 2662 scoped_refptr<net::URLRequestContextGetter> request_context( |
2638 resource_type == RESOURCE_TYPE_MEDIA ? | 2663 resource_type == RESOURCE_TYPE_MEDIA ? |
2639 GetBrowserContext()->GetMediaRequestContextForRenderProcess( | 2664 GetBrowserContext()->GetMediaRequestContextForRenderProcess( |
2640 GetRenderProcessHost()->GetID()) : | 2665 GetRenderProcessHost()->GetID()) : |
(...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4246 node->render_manager()->ResumeResponseDeferredAtStart(); | 4271 node->render_manager()->ResumeResponseDeferredAtStart(); |
4247 } | 4272 } |
4248 | 4273 |
4249 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { | 4274 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { |
4250 force_disable_overscroll_content_ = force_disable; | 4275 force_disable_overscroll_content_ = force_disable; |
4251 if (view_) | 4276 if (view_) |
4252 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); | 4277 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
4253 } | 4278 } |
4254 | 4279 |
4255 } // namespace content | 4280 } // namespace content |
OLD | NEW |