| 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/renderer/render_widget.h" | 5 #include "content/renderer/render_widget.h" |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 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 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 DCHECK(opener_id != MSG_ROUTING_NONE); | 442 DCHECK(opener_id != MSG_ROUTING_NONE); |
| 443 scoped_refptr<RenderWidget> widget( | 443 scoped_refptr<RenderWidget> widget( |
| 444 new RenderWidget(popup_type, screen_info, false, false, false)); | 444 new RenderWidget(popup_type, screen_info, false, false, false)); |
| 445 if (widget->Init(opener_id)) { // adds reference on success. | 445 if (widget->Init(opener_id)) { // adds reference on success. |
| 446 return widget.get(); | 446 return widget.get(); |
| 447 } | 447 } |
| 448 return NULL; | 448 return NULL; |
| 449 } | 449 } |
| 450 | 450 |
| 451 // static | 451 // static |
| 452 RenderWidget* RenderWidget::CreateForFrame( |
| 453 int routing_id, |
| 454 int surface_id, |
| 455 bool hidden, |
| 456 const blink::WebScreenInfo& screen_info) { |
| 457 DCHECK(routing_id != MSG_ROUTING_NONE); |
| 458 scoped_refptr<RenderWidget> widget( |
| 459 new RenderWidget(blink::WebPopupTypeNone, |
| 460 screen_info, |
| 461 false, |
| 462 hidden, |
| 463 false)); |
| 464 widget->routing_id_ = routing_id; |
| 465 widget->surface_id_ = surface_id; |
| 466 //TODO(kenrb): Change CreateWebWidget to CreateWebFrameWidget before landing! |
| 467 if (widget->DoInit(MSG_ROUTING_NONE, |
| 468 RenderWidget::CreateWebWidget(widget.get()), |
| 469 nullptr)) { |
| 470 return widget.get(); |
| 471 } |
| 472 return NULL; |
| 473 } |
| 474 |
| 475 // static |
| 452 WebWidget* RenderWidget::CreateWebWidget(RenderWidget* render_widget) { | 476 WebWidget* RenderWidget::CreateWebWidget(RenderWidget* render_widget) { |
| 453 switch (render_widget->popup_type_) { | 477 switch (render_widget->popup_type_) { |
| 454 case blink::WebPopupTypeNone: // Nothing to create. | 478 case blink::WebPopupTypeNone: // Nothing to create. |
| 455 break; | 479 break; |
| 456 case blink::WebPopupTypeSelect: | 480 case blink::WebPopupTypeSelect: |
| 457 case blink::WebPopupTypeSuggestion: | 481 case blink::WebPopupTypeSuggestion: |
| 458 return WebPopupMenu::create(render_widget); | 482 return WebPopupMenu::create(render_widget); |
| 459 case blink::WebPopupTypePage: | 483 case blink::WebPopupTypePage: |
| 460 return WebPagePopup::create(render_widget); | 484 return WebPagePopup::create(render_widget); |
| 461 default: | 485 default: |
| (...skipping 12 matching lines...) Expand all Loading... |
| 474 bool RenderWidget::DoInit(int32 opener_id, | 498 bool RenderWidget::DoInit(int32 opener_id, |
| 475 WebWidget* web_widget, | 499 WebWidget* web_widget, |
| 476 IPC::SyncMessage* create_widget_message) { | 500 IPC::SyncMessage* create_widget_message) { |
| 477 DCHECK(!webwidget_); | 501 DCHECK(!webwidget_); |
| 478 | 502 |
| 479 if (opener_id != MSG_ROUTING_NONE) | 503 if (opener_id != MSG_ROUTING_NONE) |
| 480 opener_id_ = opener_id; | 504 opener_id_ = opener_id; |
| 481 | 505 |
| 482 webwidget_ = web_widget; | 506 webwidget_ = web_widget; |
| 483 | 507 |
| 484 bool result = RenderThread::Get()->Send(create_widget_message); | 508 bool result = true; |
| 509 if (create_widget_message) |
| 510 result = RenderThread::Get()->Send(create_widget_message); |
| 511 |
| 485 if (result) { | 512 if (result) { |
| 486 RenderThread::Get()->AddRoute(routing_id_, this); | 513 RenderThread::Get()->AddRoute(routing_id_, this); |
| 487 // Take a reference on behalf of the RenderThread. This will be balanced | 514 // Take a reference on behalf of the RenderThread. This will be balanced |
| 488 // when we receive ViewMsg_Close. | 515 // when we receive ViewMsg_Close. |
| 489 AddRef(); | 516 AddRef(); |
| 490 if (RenderThreadImpl::current()) { | 517 if (RenderThreadImpl::current()) { |
| 491 RenderThreadImpl::current()->WidgetCreated(); | 518 RenderThreadImpl::current()->WidgetCreated(); |
| 492 if (is_hidden_) | 519 if (is_hidden_) |
| 493 RenderThreadImpl::current()->WidgetHidden(); | 520 RenderThreadImpl::current()->WidgetHidden(); |
| 494 } | 521 } |
| (...skipping 1700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2195 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { | 2222 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { |
| 2196 video_hole_frames_.AddObserver(frame); | 2223 video_hole_frames_.AddObserver(frame); |
| 2197 } | 2224 } |
| 2198 | 2225 |
| 2199 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { | 2226 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { |
| 2200 video_hole_frames_.RemoveObserver(frame); | 2227 video_hole_frames_.RemoveObserver(frame); |
| 2201 } | 2228 } |
| 2202 #endif // defined(VIDEO_HOLE) | 2229 #endif // defined(VIDEO_HOLE) |
| 2203 | 2230 |
| 2204 } // namespace content | 2231 } // namespace content |
| OLD | NEW |