Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Side by Side Diff: content/renderer/browser_plugin/browser_plugin.cc

Issue 11094080: Browser Plugin: More robust recovery from guest crash (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/renderer/browser_plugin/browser_plugin.h" 5 #include "content/renderer/browser_plugin/browser_plugin.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #if defined (OS_WIN) 9 #if defined (OS_WIN)
10 #include "base/sys_info.h" 10 #include "base/sys_info.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 // such a message, subsequent SetSrcAttribute() calls must always send 130 // such a message, subsequent SetSrcAttribute() calls must always send
131 // NavigateGuest messages to the embedder (even if |src| is empty), so 131 // NavigateGuest messages to the embedder (even if |src| is empty), so
132 // resize works correctly for all cases (e.g. The embedder can reset the 132 // resize works correctly for all cases (e.g. The embedder can reset the
133 // guest's |src| to empty value, resize and then set the |src| to a 133 // guest's |src| to empty value, resize and then set the |src| to a
134 // non-empty value). 134 // non-empty value).
135 // Additionally, once this instance has navigated, the storage partition 135 // Additionally, once this instance has navigated, the storage partition
136 // cannot be changed, so this value is used for enforcing this. 136 // cannot be changed, so this value is used for enforcing this.
137 navigate_src_sent_ = true; 137 navigate_src_sent_ = true;
138 } 138 }
139 src_ = src; 139 src_ = src;
140 guest_crashed_ = false;
141 } 140 }
142 141
143 std::string BrowserPlugin::GetPartitionAttribute() const { 142 std::string BrowserPlugin::GetPartitionAttribute() const {
144 std::string value; 143 std::string value;
145 if (persist_storage_) 144 if (persist_storage_)
146 value.append(kPersistPrefix); 145 value.append(kPersistPrefix);
147 146
148 value.append(storage_partition_id_); 147 value.append(storage_partition_id_);
149 return value; 148 return value;
150 } 149 }
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 if (!navigate_src_sent_) 258 if (!navigate_src_sent_)
260 return; 259 return;
261 BrowserPluginManager::Get()->Send( 260 BrowserPluginManager::Get()->Send(
262 new BrowserPluginHostMsg_Stop(render_view_->GetRoutingID(), 261 new BrowserPluginHostMsg_Stop(render_view_->GetRoutingID(),
263 instance_id_)); 262 instance_id_));
264 } 263 }
265 264
266 void BrowserPlugin::Reload() { 265 void BrowserPlugin::Reload() {
267 if (!navigate_src_sent_) 266 if (!navigate_src_sent_)
268 return; 267 return;
269 guest_crashed_ = false;
270 BrowserPluginManager::Get()->Send( 268 BrowserPluginManager::Get()->Send(
271 new BrowserPluginHostMsg_Reload(render_view_->GetRoutingID(), 269 new BrowserPluginHostMsg_Reload(render_view_->GetRoutingID(),
272 instance_id_)); 270 instance_id_));
273 } 271 }
274 272
275 void BrowserPlugin::UpdateRect( 273 void BrowserPlugin::UpdateRect(
276 int message_id, 274 int message_id,
277 const BrowserPluginMsg_UpdateRect_Params& params) { 275 const BrowserPluginMsg_UpdateRect_Params& params) {
278 if (width() != params.view_size.width() || 276 if (width() != params.view_size.width() ||
279 height() != params.view_size.height()) { 277 height() != params.view_size.height()) {
280 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_UpdateRect_ACK( 278 BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_UpdateRect_ACK(
281 render_view_->GetRoutingID(), 279 render_view_->GetRoutingID(),
282 instance_id_, 280 instance_id_,
283 message_id, 281 message_id,
284 gfx::Size(width(), height()))); 282 gfx::Size(width(), height())));
285 return; 283 return;
286 } 284 }
287 285
286 // If we're getting new pixels then a guest is available again.
287 guest_crashed_ = false;
Charlie Reis 2012/10/12 04:10:25 Wouldn't DidNavigate/LoadCommit be a better place
Fady Samuel 2012/10/12 17:33:06 Done.
288 float backing_store_scale_factor = 288 float backing_store_scale_factor =
289 backing_store_.get() ? backing_store_->GetScaleFactor() : 1.0f; 289 backing_store_.get() ? backing_store_->GetScaleFactor() : 1.0f;
290 290
291 if (params.is_resize_ack || 291 if (params.is_resize_ack ||
292 backing_store_scale_factor != params.scale_factor) { 292 backing_store_scale_factor != params.scale_factor) {
293 resize_pending_ = !params.is_resize_ack; 293 resize_pending_ = !params.is_resize_ack;
294 backing_store_.reset( 294 backing_store_.reset(
295 new BrowserPluginBackingStore(gfx::Size(width(), height()), 295 new BrowserPluginBackingStore(gfx::Size(width(), height()),
296 params.scale_factor)); 296 params.scale_factor));
297 } 297 }
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 void* notify_data) { 757 void* notify_data) {
758 } 758 }
759 759
760 void BrowserPlugin::didFailLoadingFrameRequest( 760 void BrowserPlugin::didFailLoadingFrameRequest(
761 const WebKit::WebURL& url, 761 const WebKit::WebURL& url,
762 void* notify_data, 762 void* notify_data,
763 const WebKit::WebURLError& error) { 763 const WebKit::WebURLError& error) {
764 } 764 }
765 765
766 } // namespace content 766 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698