1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/browser/frame_host/render_widget_host_view_child_frame.h"
7 #include "content/browser/frame_host/cross_process_frame_connector.h"
8 #include "content/browser/renderer_host/render_widget_host_impl.h"
9 #include "content/common/gpu/gpu_messages.h"
10 #include "content/common/view_messages.h"
11 #include "content/public/browser/render_process_host.h"
15 RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame(
16 RenderWidgetHost
* widget_host
)
17 : host_(RenderWidgetHostImpl::From(widget_host
)),
18 frame_connector_(NULL
) {
22 RenderWidgetHostViewChildFrame::~RenderWidgetHostViewChildFrame() {
25 void RenderWidgetHostViewChildFrame::InitAsChild(
26 gfx::NativeView parent_view
) {
30 RenderWidgetHost
* RenderWidgetHostViewChildFrame::GetRenderWidgetHost() const {
34 void RenderWidgetHostViewChildFrame::SetSize(const gfx::Size
& size
) {
38 void RenderWidgetHostViewChildFrame::SetBounds(const gfx::Rect
& rect
) {
42 void RenderWidgetHostViewChildFrame::Focus() {
45 bool RenderWidgetHostViewChildFrame::HasFocus() const {
49 bool RenderWidgetHostViewChildFrame::IsSurfaceAvailableForCopy() const {
54 void RenderWidgetHostViewChildFrame::Show() {
58 void RenderWidgetHostViewChildFrame::Hide() {
62 bool RenderWidgetHostViewChildFrame::IsShowing() {
63 return !host_
->is_hidden();
66 gfx::Rect
RenderWidgetHostViewChildFrame::GetViewBounds() const {
69 rect
= frame_connector_
->ChildFrameRect();
73 gfx::NativeView
RenderWidgetHostViewChildFrame::GetNativeView() const {
78 gfx::NativeViewId
RenderWidgetHostViewChildFrame::GetNativeViewId() const {
83 gfx::NativeViewAccessible
84 RenderWidgetHostViewChildFrame::GetNativeViewAccessible() {
89 void RenderWidgetHostViewChildFrame::SetBackground(
90 const SkBitmap
& background
) {
93 gfx::Size
RenderWidgetHostViewChildFrame::GetPhysicalBackingSize() const {
96 size
= frame_connector_
->ChildFrameRect().size();
100 void RenderWidgetHostViewChildFrame::InitAsPopup(
101 RenderWidgetHostView
* parent_host_view
,
102 const gfx::Rect
& pos
) {
106 void RenderWidgetHostViewChildFrame::InitAsFullscreen(
107 RenderWidgetHostView
* reference_host_view
) {
111 void RenderWidgetHostViewChildFrame::ImeCancelComposition() {
115 #if defined(OS_MACOSX) || defined(USE_AURA)
116 void RenderWidgetHostViewChildFrame::ImeCompositionRangeChanged(
117 const gfx::Range
& range
,
118 const std::vector
<gfx::Rect
>& character_bounds
) {
123 void RenderWidgetHostViewChildFrame::WasShown() {
124 if (!host_
->is_hidden())
129 void RenderWidgetHostViewChildFrame::WasHidden() {
130 if (host_
->is_hidden())
135 void RenderWidgetHostViewChildFrame::MovePluginWindows(
136 const std::vector
<WebPluginGeometry
>& moves
) {
139 void RenderWidgetHostViewChildFrame::Blur() {
142 void RenderWidgetHostViewChildFrame::UpdateCursor(const WebCursor
& cursor
) {
145 void RenderWidgetHostViewChildFrame::SetIsLoading(bool is_loading
) {
149 void RenderWidgetHostViewChildFrame::TextInputTypeChanged(
150 ui::TextInputType type
,
151 ui::TextInputMode input_mode
,
152 bool can_compose_inline
) {
156 void RenderWidgetHostViewChildFrame::RenderProcessGone(
157 base::TerminationStatus status
,
159 if (frame_connector_
)
160 frame_connector_
->RenderProcessGone();
164 void RenderWidgetHostViewChildFrame::Destroy() {
165 if (frame_connector_
) {
166 frame_connector_
->set_view(NULL
);
167 frame_connector_
= NULL
;
170 host_
->SetView(NULL
);
172 base::MessageLoop::current()->DeleteSoon(FROM_HERE
, this);
175 void RenderWidgetHostViewChildFrame::SetTooltipText(
176 const base::string16
& tooltip_text
) {
179 void RenderWidgetHostViewChildFrame::SelectionChanged(
180 const base::string16
& text
,
182 const gfx::Range
& range
) {
185 void RenderWidgetHostViewChildFrame::SelectionBoundsChanged(
186 const ViewHostMsg_SelectionBounds_Params
& params
) {
189 #if defined(OS_ANDROID)
190 void RenderWidgetHostViewChildFrame::ShowDisambiguationPopup(
191 const gfx::Rect
& target_rect
,
192 const SkBitmap
& zoomed_bitmap
) {
195 void RenderWidgetHostViewChildFrame::SelectionRootBoundsChanged(
196 const gfx::Rect
& bounds
) {
199 void RenderWidgetHostViewChildFrame::LockCompositingSurface() {
202 void RenderWidgetHostViewChildFrame::UnlockCompositingSurface() {
206 void RenderWidgetHostViewChildFrame::ScrollOffsetChanged() {
209 void RenderWidgetHostViewChildFrame::OnAcceleratedCompositingStateChange() {
212 void RenderWidgetHostViewChildFrame::AcceleratedSurfaceInitialized(int host_id
,
216 void RenderWidgetHostViewChildFrame::AcceleratedSurfaceBuffersSwapped(
217 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params
& params
,
219 if (frame_connector_
)
220 frame_connector_
->ChildFrameBuffersSwapped(params
, gpu_host_id
);
223 void RenderWidgetHostViewChildFrame::AcceleratedSurfacePostSubBuffer(
224 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params
& params
,
228 void RenderWidgetHostViewChildFrame::OnSwapCompositorFrame(
229 uint32 output_surface_id
,
230 scoped_ptr
<cc::CompositorFrame
> frame
) {
231 if (frame_connector_
) {
232 frame_connector_
->ChildFrameCompositorFrameSwapped(
234 host_
->GetProcess()->GetID(),
235 host_
->GetRoutingID(),
240 void RenderWidgetHostViewChildFrame::GetScreenInfo(
241 blink::WebScreenInfo
* results
) {
244 gfx::Rect
RenderWidgetHostViewChildFrame::GetBoundsInRootWindow() {
245 // We do not have any root window specific parts in this view.
246 return GetViewBounds();
249 #if defined(USE_AURA)
250 void RenderWidgetHostViewChildFrame::ProcessAckedTouchEvent(
251 const TouchEventWithLatencyInfo
& touch
,
252 InputEventAckState ack_result
) {
254 #endif // defined(USE_AURA)
256 bool RenderWidgetHostViewChildFrame::LockMouse() {
260 void RenderWidgetHostViewChildFrame::UnlockMouse() {
263 #if defined(OS_MACOSX)
264 void RenderWidgetHostViewChildFrame::SetActive(bool active
) {
267 void RenderWidgetHostViewChildFrame::SetTakesFocusOnlyOnMouseDown(bool flag
) {
270 void RenderWidgetHostViewChildFrame::SetWindowVisibility(bool visible
) {
273 void RenderWidgetHostViewChildFrame::WindowFrameChanged() {
276 void RenderWidgetHostViewChildFrame::ShowDefinitionForSelection() {
279 bool RenderWidgetHostViewChildFrame::SupportsSpeech() const {
283 void RenderWidgetHostViewChildFrame::SpeakSelection() {
286 bool RenderWidgetHostViewChildFrame::IsSpeaking() const {
290 void RenderWidgetHostViewChildFrame::StopSpeaking() {
293 bool RenderWidgetHostViewChildFrame::PostProcessEventForPluginIme(
294 const NativeWebKeyboardEvent
& event
) {
297 #endif // defined(OS_MACOSX)
299 void RenderWidgetHostViewChildFrame::CopyFromCompositingSurface(
300 const gfx::Rect
& src_subrect
,
301 const gfx::Size
& /* dst_size */,
302 const base::Callback
<void(bool, const SkBitmap
&)>& callback
,
303 const SkBitmap::Config config
) {
304 callback
.Run(false, SkBitmap());
307 void RenderWidgetHostViewChildFrame::CopyFromCompositingSurfaceToVideoFrame(
308 const gfx::Rect
& src_subrect
,
309 const scoped_refptr
<media::VideoFrame
>& target
,
310 const base::Callback
<void(bool)>& callback
) {
315 bool RenderWidgetHostViewChildFrame::CanCopyToVideoFrame() const {
319 void RenderWidgetHostViewChildFrame::AcceleratedSurfaceSuspend() {
323 void RenderWidgetHostViewChildFrame::AcceleratedSurfaceRelease() {
326 bool RenderWidgetHostViewChildFrame::HasAcceleratedSurface(
327 const gfx::Size
& desired_size
) {
331 gfx::GLSurfaceHandle
RenderWidgetHostViewChildFrame::GetCompositingSurface() {
332 return gfx::GLSurfaceHandle(gfx::kNullPluginWindow
, gfx::TEXTURE_TRANSPORT
);
335 void RenderWidgetHostViewChildFrame::SetScrollOffsetPinning(
336 bool is_pinned_to_left
, bool is_pinned_to_right
) {
340 void RenderWidgetHostViewChildFrame::SetParentNativeViewAccessible(
341 gfx::NativeViewAccessible accessible_parent
) {
344 gfx::NativeViewId
RenderWidgetHostViewChildFrame::GetParentForWindowlessPlugin()
348 #endif // defined(OS_WIN)
350 SkBitmap::Config
RenderWidgetHostViewChildFrame::PreferredReadbackFormat() {
351 return SkBitmap::kARGB_8888_Config
;
354 } // namespace content