| 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/logging.h" |    10 #include "base/logging.h" | 
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   461 gfx::Rect RenderWidget::ScreenMetricsEmulator::AdjustValidationMessageAnchor( |   461 gfx::Rect RenderWidget::ScreenMetricsEmulator::AdjustValidationMessageAnchor( | 
|   462     const gfx::Rect& anchor) { |   462     const gfx::Rect& anchor) { | 
|   463   gfx::Rect scaled = gfx::ToEnclosedRect(gfx::ScaleRect(anchor, scale_)); |   463   gfx::Rect scaled = gfx::ToEnclosedRect(gfx::ScaleRect(anchor, scale_)); | 
|   464   scaled.set_x(scaled.x() + offset_.x()); |   464   scaled.set_x(scaled.x() + offset_.x()); | 
|   465   scaled.set_y(scaled.y() + offset_.y()); |   465   scaled.set_y(scaled.y() + offset_.y()); | 
|   466   return scaled; |   466   return scaled; | 
|   467 } |   467 } | 
|   468  |   468  | 
|   469 // RenderWidget --------------------------------------------------------------- |   469 // RenderWidget --------------------------------------------------------------- | 
|   470  |   470  | 
|   471 RenderWidget::RenderWidget(blink::WebPopupType popup_type, |   471 RenderWidget::RenderWidget(CompositorDependencies* compositor_deps, | 
 |   472                            blink::WebPopupType popup_type, | 
|   472                            const blink::WebScreenInfo& screen_info, |   473                            const blink::WebScreenInfo& screen_info, | 
|   473                            bool swapped_out, |   474                            bool swapped_out, | 
|   474                            bool hidden, |   475                            bool hidden, | 
|   475                            bool never_visible) |   476                            bool never_visible) | 
|   476     : routing_id_(MSG_ROUTING_NONE), |   477     : routing_id_(MSG_ROUTING_NONE), | 
|   477       surface_id_(0), |   478       surface_id_(0), | 
|   478       compositor_deps_(nullptr), |   479       compositor_deps_(compositor_deps), | 
|   479       webwidget_(nullptr), |   480       webwidget_(nullptr), | 
|   480       opener_id_(MSG_ROUTING_NONE), |   481       opener_id_(MSG_ROUTING_NONE), | 
|   481       init_complete_(false), |   482       init_complete_(false), | 
|   482       top_controls_shrink_blink_size_(false), |   483       top_controls_shrink_blink_size_(false), | 
|   483       top_controls_height_(0.f), |   484       top_controls_height_(0.f), | 
|   484       next_paint_flags_(0), |   485       next_paint_flags_(0), | 
|   485       auto_resize_mode_(false), |   486       auto_resize_mode_(false), | 
|   486       need_update_rect_for_auto_resize_(false), |   487       need_update_rect_for_auto_resize_(false), | 
|   487       did_show_(false), |   488       did_show_(false), | 
|   488       is_hidden_(hidden), |   489       is_hidden_(hidden), | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   533   if (!is_swapped_out_ && RenderProcess::current()) |   534   if (!is_swapped_out_ && RenderProcess::current()) | 
|   534     RenderProcess::current()->ReleaseProcess(); |   535     RenderProcess::current()->ReleaseProcess(); | 
|   535 } |   536 } | 
|   536  |   537  | 
|   537 // static |   538 // static | 
|   538 RenderWidget* RenderWidget::Create(int32 opener_id, |   539 RenderWidget* RenderWidget::Create(int32 opener_id, | 
|   539                                    CompositorDependencies* compositor_deps, |   540                                    CompositorDependencies* compositor_deps, | 
|   540                                    blink::WebPopupType popup_type, |   541                                    blink::WebPopupType popup_type, | 
|   541                                    const blink::WebScreenInfo& screen_info) { |   542                                    const blink::WebScreenInfo& screen_info) { | 
|   542   DCHECK(opener_id != MSG_ROUTING_NONE); |   543   DCHECK(opener_id != MSG_ROUTING_NONE); | 
|   543   scoped_refptr<RenderWidget> widget( |   544   scoped_refptr<RenderWidget> widget(new RenderWidget( | 
|   544       new RenderWidget(popup_type, screen_info, false, false, false)); |   545       compositor_deps, popup_type, screen_info, false, false, false)); | 
|   545   if (widget->Init(opener_id, compositor_deps)) {  // adds reference on success. |   546   if (widget->Init(opener_id)) {  // adds reference on success. | 
|   546     return widget.get(); |   547     return widget.get(); | 
|   547   } |   548   } | 
|   548   return NULL; |   549   return NULL; | 
|   549 } |   550 } | 
|   550  |   551  | 
|   551 // static |   552 // static | 
|   552 RenderWidget* RenderWidget::CreateForFrame( |   553 RenderWidget* RenderWidget::CreateForFrame( | 
|   553     int routing_id, |   554     int routing_id, | 
|   554     int surface_id, |   555     int surface_id, | 
|   555     bool hidden, |   556     bool hidden, | 
|   556     const blink::WebScreenInfo& screen_info, |   557     const blink::WebScreenInfo& screen_info, | 
|   557     CompositorDependencies* compositor_deps, |   558     CompositorDependencies* compositor_deps, | 
|   558     blink::WebLocalFrame* frame) { |   559     blink::WebLocalFrame* frame) { | 
|   559   CHECK_NE(routing_id, MSG_ROUTING_NONE); |   560   CHECK_NE(routing_id, MSG_ROUTING_NONE); | 
|   560   scoped_refptr<RenderWidget> widget(new RenderWidget( |   561   scoped_refptr<RenderWidget> widget( | 
|   561       blink::WebPopupTypeNone, screen_info, false, hidden, false)); |   562       new RenderWidget(compositor_deps, blink::WebPopupTypeNone, screen_info, | 
 |   563                        false, hidden, false)); | 
|   562   widget->routing_id_ = routing_id; |   564   widget->routing_id_ = routing_id; | 
|   563   widget->surface_id_ = surface_id; |   565   widget->surface_id_ = surface_id; | 
|   564   widget->compositor_deps_ = compositor_deps; |  | 
|   565   widget->for_oopif_ = true; |   566   widget->for_oopif_ = true; | 
|   566   // DoInit increments the reference count on |widget|, keeping it alive after |   567   // DoInit increments the reference count on |widget|, keeping it alive after | 
|   567   // this function returns. |   568   // this function returns. | 
|   568   if (widget->DoInit(MSG_ROUTING_NONE, compositor_deps, |   569   if (widget->DoInit(MSG_ROUTING_NONE, | 
|   569                      RenderWidget::CreateWebFrameWidget(widget.get(), frame), |   570                      RenderWidget::CreateWebFrameWidget(widget.get(), frame), | 
|   570                      nullptr)) { |   571                      nullptr)) { | 
|   571     widget->CompleteInit(); |   572     widget->CompleteInit(); | 
|   572     return widget.get(); |   573     return widget.get(); | 
|   573   } |   574   } | 
|   574   return nullptr; |   575   return nullptr; | 
|   575 } |   576 } | 
|   576  |   577  | 
|   577 // static |   578 // static | 
|   578 blink::WebWidget* RenderWidget::CreateWebFrameWidget( |   579 blink::WebWidget* RenderWidget::CreateWebFrameWidget( | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
|   595 } |   596 } | 
|   596  |   597  | 
|   597 void RenderWidget::CloseForFrame() { |   598 void RenderWidget::CloseForFrame() { | 
|   598   // Close() must be called synchronously, since Blink objects are already in |   599   // Close() must be called synchronously, since Blink objects are already in | 
|   599   // the process of being torn down. Deferring Close() to the message loop like |   600   // the process of being torn down. Deferring Close() to the message loop like | 
|   600   // the normal case means that Close() will end up getting called when various |   601   // the normal case means that Close() will end up getting called when various | 
|   601   // pointers, etc. are already nulled out or freed. |   602   // pointers, etc. are already nulled out or freed. | 
|   602   CloseInternal(true); |   603   CloseInternal(true); | 
|   603 } |   604 } | 
|   604  |   605  | 
|   605 bool RenderWidget::Init(int32 opener_id, |   606 bool RenderWidget::Init(int32 opener_id) { | 
|   606                         CompositorDependencies* compositor_deps) { |   607   return DoInit(opener_id, RenderWidget::CreateWebWidget(this), | 
|   607   return DoInit(opener_id, compositor_deps, RenderWidget::CreateWebWidget(this), |  | 
|   608                 new ViewHostMsg_CreateWidget(opener_id, popup_type_, |   608                 new ViewHostMsg_CreateWidget(opener_id, popup_type_, | 
|   609                                              &routing_id_, &surface_id_)); |   609                                              &routing_id_, &surface_id_)); | 
|   610 } |   610 } | 
|   611  |   611  | 
|   612 bool RenderWidget::DoInit(int32 opener_id, |   612 bool RenderWidget::DoInit(int32 opener_id, | 
|   613                           CompositorDependencies* compositor_deps, |  | 
|   614                           WebWidget* web_widget, |   613                           WebWidget* web_widget, | 
|   615                           IPC::SyncMessage* create_widget_message) { |   614                           IPC::SyncMessage* create_widget_message) { | 
|   616   DCHECK(!webwidget_); |   615   DCHECK(!webwidget_); | 
|   617  |   616  | 
|   618   if (opener_id != MSG_ROUTING_NONE) |   617   if (opener_id != MSG_ROUTING_NONE) | 
|   619     opener_id_ = opener_id; |   618     opener_id_ = opener_id; | 
|   620  |   619  | 
|   621   compositor_deps_ = compositor_deps; |  | 
|   622   webwidget_ = web_widget; |   620   webwidget_ = web_widget; | 
|   623  |   621  | 
|   624   bool result = true; |   622   bool result = true; | 
|   625   if (create_widget_message) |   623   if (create_widget_message) | 
|   626     result = RenderThread::Get()->Send(create_widget_message); |   624     result = RenderThread::Get()->Send(create_widget_message); | 
|   627  |   625  | 
|   628   if (result) { |   626   if (result) { | 
|   629     RenderThread::Get()->AddRoute(routing_id_, this); |   627     RenderThread::Get()->AddRoute(routing_id_, this); | 
|   630     // Take a reference on behalf of the RenderThread.  This will be balanced |   628     // Take a reference on behalf of the RenderThread.  This will be balanced | 
|   631     // when we receive ViewMsg_Close. |   629     // when we receive ViewMsg_Close. | 
| (...skipping 1829 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2461 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { |  2459 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { | 
|  2462   video_hole_frames_.AddObserver(frame); |  2460   video_hole_frames_.AddObserver(frame); | 
|  2463 } |  2461 } | 
|  2464  |  2462  | 
|  2465 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { |  2463 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { | 
|  2466   video_hole_frames_.RemoveObserver(frame); |  2464   video_hole_frames_.RemoveObserver(frame); | 
|  2467 } |  2465 } | 
|  2468 #endif  // defined(VIDEO_HOLE) |  2466 #endif  // defined(VIDEO_HOLE) | 
|  2469  |  2467  | 
|  2470 }  // namespace content |  2468 }  // namespace content | 
| OLD | NEW |