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

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

Issue 2410153005: Fix RenderView reuse issues when canceling a pending RenderFrameHost. (Closed)
Patch Set: Rebase Created 4 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
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/render_widget.h" 5 #include "content/renderer/render_widget.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 void RenderWidget::CloseForFrame() { 378 void RenderWidget::CloseForFrame() {
379 OnClose(); 379 OnClose();
380 } 380 }
381 381
382 void RenderWidget::SetRoutingID(int32_t routing_id) { 382 void RenderWidget::SetRoutingID(int32_t routing_id) {
383 routing_id_ = routing_id; 383 routing_id_ = routing_id;
384 input_handler_.reset(new RenderWidgetInputHandler( 384 input_handler_.reset(new RenderWidgetInputHandler(
385 GetRenderWidgetInputHandlerDelegate(this), this)); 385 GetRenderWidgetInputHandlerDelegate(this), this));
386 } 386 }
387 387
388 void RenderWidget::SetSwappedOut(bool is_swapped_out) {
389 // We should only toggle between states.
390 DCHECK(is_swapped_out_ != is_swapped_out);
391 is_swapped_out_ = is_swapped_out;
392
393 // If we are swapping out, we will call ReleaseProcess, allowing the process
394 // to exit if all of its RenderViews are swapped out. We wait until the
395 // WasSwappedOut call to do this, to allow the unload handler to finish.
396 // If we are swapping in, we call AddRefProcess to prevent the process from
397 // exiting.
398 if (!is_swapped_out_)
399 RenderProcess::current()->AddRefProcess();
400 }
401
388 bool RenderWidget::Init(int32_t opener_id) { 402 bool RenderWidget::Init(int32_t opener_id) {
389 bool success = DoInit( 403 bool success = DoInit(
390 opener_id, RenderWidget::CreateWebWidget(this), 404 opener_id, RenderWidget::CreateWebWidget(this),
391 new ViewHostMsg_CreateWidget(opener_id, popup_type_, &routing_id_)); 405 new ViewHostMsg_CreateWidget(opener_id, popup_type_, &routing_id_));
392 if (success) { 406 if (success) {
393 SetRoutingID(routing_id_); 407 SetRoutingID(routing_id_);
394 return true; 408 return true;
395 } 409 }
396 return false; 410 return false;
397 } 411 }
(...skipping 26 matching lines...) Expand all
424 RenderThreadImpl::current()->WidgetHidden(); 438 RenderThreadImpl::current()->WidgetHidden();
425 } 439 }
426 440
427 return true; 441 return true;
428 } else { 442 } else {
429 // The above Send can fail when the tab is closing. 443 // The above Send can fail when the tab is closing.
430 return false; 444 return false;
431 } 445 }
432 } 446 }
433 447
434 void RenderWidget::SetSwappedOut(bool is_swapped_out) {
435 // We should only toggle between states.
436 DCHECK(is_swapped_out_ != is_swapped_out);
437 is_swapped_out_ = is_swapped_out;
438
439 // If we are swapping out, we will call ReleaseProcess, allowing the process
440 // to exit if all of its RenderViews are swapped out. We wait until the
441 // WasSwappedOut call to do this, to allow the unload handler to finish.
442 // If we are swapping in, we call AddRefProcess to prevent the process from
443 // exiting.
444 if (!is_swapped_out_)
445 RenderProcess::current()->AddRefProcess();
446 }
447
448 void RenderWidget::WasSwappedOut() { 448 void RenderWidget::WasSwappedOut() {
449 // If we have been swapped out and no one else is using this process, 449 // If we have been swapped out and no one else is using this process,
450 // it's safe to exit now. 450 // it's safe to exit now.
451 CHECK(is_swapped_out_); 451 CHECK(is_swapped_out_);
452 RenderProcess::current()->ReleaseProcess(); 452 RenderProcess::current()->ReleaseProcess();
453 } 453 }
454 454
455 void RenderWidget::SetPopupOriginAdjustmentsForEmulation( 455 void RenderWidget::SetPopupOriginAdjustmentsForEmulation(
456 RenderWidgetScreenMetricsEmulator* emulator) { 456 RenderWidgetScreenMetricsEmulator* emulator) {
457 popup_origin_scale_for_emulation_ = emulator->scale(); 457 popup_origin_scale_for_emulation_ = emulator->scale();
(...skipping 1719 matching lines...) Expand 10 before | Expand all | Expand 10 after
2177 bool RenderWidget::isPointerLocked() { 2177 bool RenderWidget::isPointerLocked() {
2178 return mouse_lock_dispatcher_->IsMouseLockedTo( 2178 return mouse_lock_dispatcher_->IsMouseLockedTo(
2179 webwidget_mouse_lock_target_.get()); 2179 webwidget_mouse_lock_target_.get());
2180 } 2180 }
2181 2181
2182 blink::WebWidget* RenderWidget::GetWebWidget() const { 2182 blink::WebWidget* RenderWidget::GetWebWidget() const {
2183 return webwidget_internal_; 2183 return webwidget_internal_;
2184 } 2184 }
2185 2185
2186 } // namespace content 2186 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698