Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/plugins/renderer/webview_plugin.h" | 5 #include "components/plugins/renderer/webview_plugin.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 88 } | 88 } |
| 89 | 89 |
| 90 WebViewPlugin::~WebViewPlugin() { | 90 WebViewPlugin::~WebViewPlugin() { |
| 91 DCHECK(!weak_factory_.HasWeakPtrs()); | 91 DCHECK(!weak_factory_.HasWeakPtrs()); |
| 92 web_frame_widget_->close(); | 92 web_frame_widget_->close(); |
| 93 web_view_->close(); | 93 web_view_->close(); |
| 94 web_frame_->close(); | 94 web_frame_->close(); |
| 95 } | 95 } |
| 96 | 96 |
| 97 void WebViewPlugin::ReplayReceivedData(WebPlugin* plugin) { | 97 void WebViewPlugin::ReplayReceivedData(WebPlugin* plugin) { |
| 98 const WebURLResponse& response = web_frame_->dataSource()->response(); | 98 if (!response_.isNull()) { |
| 99 if (!response.isNull()) { | 99 plugin->didReceiveResponse(response_); |
| 100 plugin->didReceiveResponse(response); | |
| 101 size_t total_bytes = 0; | 100 size_t total_bytes = 0; |
| 102 for (std::list<std::string>::iterator it = data_.begin(); it != data_.end(); | 101 for (std::list<std::string>::iterator it = data_.begin(); it != data_.end(); |
| 103 ++it) { | 102 ++it) { |
| 104 plugin->didReceiveData( | 103 plugin->didReceiveData( |
| 105 it->c_str(), base::checked_cast<int, size_t>(it->length())); | 104 it->c_str(), base::checked_cast<int, size_t>(it->length())); |
| 106 total_bytes += it->length(); | 105 total_bytes += it->length(); |
| 107 } | 106 } |
| 108 UMA_HISTOGRAM_MEMORY_KB( | 107 UMA_HISTOGRAM_MEMORY_KB( |
| 109 "PluginDocument.Memory", | 108 "PluginDocument.Memory", |
| 110 (base::checked_cast<int, size_t>(total_bytes / 1024))); | 109 (base::checked_cast<int, size_t>(total_bytes / 1024))); |
| 111 UMA_HISTOGRAM_COUNTS( | 110 UMA_HISTOGRAM_COUNTS( |
| 112 "PluginDocument.NumChunks", | 111 "PluginDocument.NumChunks", |
| 113 (base::checked_cast<int, size_t>(data_.size()))); | 112 (base::checked_cast<int, size_t>(data_.size()))); |
| 114 } | 113 } |
| 115 // We need to transfer the |focused_| to new plugin after it loaded. | 114 // We need to transfer the |focused_| to new plugin after it loaded. |
| 116 if (focused_) { | 115 if (focused_) { |
| 117 plugin->updateFocus(true, blink::WebFocusTypeNone); | 116 plugin->updateFocus(true, blink::WebFocusTypeNone); |
| 118 } | 117 } |
| 119 if (finished_loading_) { | 118 if (finished_loading_) { |
| 120 plugin->didFinishLoading(); | 119 plugin->didFinishLoading(); |
| 121 } | 120 } |
| 122 if (error_) { | 121 if (error_) { |
| 123 plugin->didFailLoading(*error_); | 122 plugin->didFailLoading(*error_); |
| 124 } | 123 } |
| 125 } | 124 } |
| 126 | 125 |
| 126 void WebViewPlugin::didReceiveResponse(const WebURLResponse& response) { | |
| 127 if (!response_.isNull()) | |
|
tommycli
2016/09/15 23:53:35
This line used to be DCHECK(response_.isNull());
tommycli
2016/09/16 00:01:38
Restoring the old DCHECK crashes, so I'm guessing
Bernhard Bauer
2016/09/16 10:28:01
Huh, that's strange. Where would the non-null valu
Nate Chapin
2016/09/16 17:17:54
Yeah this patchset only works accidentally: I inve
| |
| 128 response_ = response; | |
| 129 } | |
| 130 | |
| 127 void WebViewPlugin::RestoreTitleText() { | 131 void WebViewPlugin::RestoreTitleText() { |
| 128 if (container_) | 132 if (container_) |
| 129 container_->element().setAttribute("title", old_title_); | 133 container_->element().setAttribute("title", old_title_); |
| 130 } | 134 } |
| 131 | 135 |
| 132 WebPluginContainer* WebViewPlugin::container() const { return container_; } | 136 WebPluginContainer* WebViewPlugin::container() const { return container_; } |
| 133 | 137 |
| 134 bool WebViewPlugin::initialize(WebPluginContainer* container) { | 138 bool WebViewPlugin::initialize(WebPluginContainer* container) { |
| 135 DCHECK(container); | 139 DCHECK(container); |
| 136 DCHECK_EQ(this, container->plugin()); | 140 DCHECK_EQ(this, container->plugin()); |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 349 if (!delegate_) | 353 if (!delegate_) |
| 350 return; | 354 return; |
| 351 | 355 |
| 352 // The delegate may instantiate a new plugin. | 356 // The delegate may instantiate a new plugin. |
| 353 delegate_->OnUnobscuredRectUpdate(gfx::Rect(unobscured_rect)); | 357 delegate_->OnUnobscuredRectUpdate(gfx::Rect(unobscured_rect)); |
| 354 // The delegate may have dirtied style and layout of the WebView. | 358 // The delegate may have dirtied style and layout of the WebView. |
| 355 // See for example the resizePoster function in plugin_poster.html. | 359 // See for example the resizePoster function in plugin_poster.html. |
| 356 // Run the lifecycle now so that it is clean. | 360 // Run the lifecycle now so that it is clean. |
| 357 web_view_->updateAllLifecyclePhases(); | 361 web_view_->updateAllLifecyclePhases(); |
| 358 } | 362 } |
| OLD | NEW |