Home | History | Annotate | Download | only in frame_host
      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.
      4 
      5 #ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_WIDGET_HOST_VIEW_CHILD_FRAME_H_
      6 #define CONTENT_BROWSER_FRAME_HOST_RENDER_WIDGET_HOST_VIEW_CHILD_FRAME_H_
      7 
      8 #include "base/memory/scoped_ptr.h"
      9 #include "content/browser/renderer_host/render_widget_host_view_base.h"
     10 #include "content/common/content_export.h"
     11 #include "ui/gfx/native_widget_types.h"
     12 #include "ui/gfx/rect.h"
     13 
     14 namespace content {
     15 class CrossProcessFrameConnector;
     16 class RenderWidgetHost;
     17 class RenderWidgetHostImpl;
     18 
     19 // RenderWidgetHostViewChildFrame implements the view for a RenderWidgetHost
     20 // associated with content being rendered in a separate process from
     21 // content that is embedding it. This is not a platform-specific class; rather,
     22 // the embedding renderer process implements the platform containing the
     23 // widget, and the top-level frame's RenderWidgetHostView will ultimately
     24 // manage all native widget interaction.
     25 //
     26 // See comments in render_widget_host_view.h about this class and its members.
     27 class CONTENT_EXPORT RenderWidgetHostViewChildFrame
     28     : public RenderWidgetHostViewBase {
     29  public:
     30   explicit RenderWidgetHostViewChildFrame(RenderWidgetHost* widget);
     31   virtual ~RenderWidgetHostViewChildFrame();
     32 
     33   void set_cross_process_frame_connector(
     34       CrossProcessFrameConnector* frame_connector) {
     35     frame_connector_ = frame_connector;
     36   }
     37 
     38   // RenderWidgetHostView implementation.
     39   virtual void InitAsChild(gfx::NativeView parent_view) OVERRIDE;
     40   virtual RenderWidgetHost* GetRenderWidgetHost() const OVERRIDE;
     41   virtual void SetSize(const gfx::Size& size) OVERRIDE;
     42   virtual void SetBounds(const gfx::Rect& rect) OVERRIDE;
     43   virtual void Focus() OVERRIDE;
     44   virtual bool HasFocus() const OVERRIDE;
     45   virtual bool IsSurfaceAvailableForCopy() const OVERRIDE;
     46   virtual void Show() OVERRIDE;
     47   virtual void Hide() OVERRIDE;
     48   virtual bool IsShowing() OVERRIDE;
     49   virtual gfx::Rect GetViewBounds() const OVERRIDE;
     50   virtual gfx::Vector2dF GetLastScrollOffset() const OVERRIDE;
     51   virtual gfx::NativeView GetNativeView() const OVERRIDE;
     52   virtual gfx::NativeViewId GetNativeViewId() const OVERRIDE;
     53   virtual gfx::NativeViewAccessible GetNativeViewAccessible() OVERRIDE;
     54   virtual void SetBackgroundOpaque(bool opaque) OVERRIDE;
     55   virtual gfx::Size GetPhysicalBackingSize() const OVERRIDE;
     56 
     57   // RenderWidgetHostViewBase implementation.
     58   virtual void InitAsPopup(RenderWidgetHostView* parent_host_view,
     59                            const gfx::Rect& pos) OVERRIDE;
     60   virtual void InitAsFullscreen(
     61       RenderWidgetHostView* reference_host_view) OVERRIDE;
     62   virtual void WasShown() OVERRIDE;
     63   virtual void WasHidden() OVERRIDE;
     64   virtual void MovePluginWindows(
     65       const std::vector<WebPluginGeometry>& moves) OVERRIDE;
     66   virtual void Blur() OVERRIDE;
     67   virtual void UpdateCursor(const WebCursor& cursor) OVERRIDE;
     68   virtual void SetIsLoading(bool is_loading) OVERRIDE;
     69   virtual void TextInputTypeChanged(ui::TextInputType type,
     70                                     ui::TextInputMode input_mode,
     71                                     bool can_compose_inline) OVERRIDE;
     72   virtual void ImeCancelComposition() OVERRIDE;
     73 #if defined(OS_MACOSX) || defined(USE_AURA)
     74   virtual void ImeCompositionRangeChanged(
     75       const gfx::Range& range,
     76       const std::vector<gfx::Rect>& character_bounds) OVERRIDE;
     77 #endif
     78   virtual void RenderProcessGone(base::TerminationStatus status,
     79                                  int error_code) OVERRIDE;
     80   virtual void Destroy() OVERRIDE;
     81   virtual void SetTooltipText(const base::string16& tooltip_text) OVERRIDE;
     82   virtual void SelectionChanged(const base::string16& text,
     83                                 size_t offset,
     84                                 const gfx::Range& range) OVERRIDE;
     85   virtual void SelectionBoundsChanged(
     86       const ViewHostMsg_SelectionBounds_Params& params) OVERRIDE;
     87   virtual void CopyFromCompositingSurface(
     88       const gfx::Rect& src_subrect,
     89       const gfx::Size& dst_size,
     90       const base::Callback<void(bool, const SkBitmap&)>& callback,
     91       const SkColorType color_type) OVERRIDE;
     92   virtual void CopyFromCompositingSurfaceToVideoFrame(
     93       const gfx::Rect& src_subrect,
     94       const scoped_refptr<media::VideoFrame>& target,
     95       const base::Callback<void(bool)>& callback) OVERRIDE;
     96   virtual bool CanCopyToVideoFrame() const OVERRIDE;
     97   virtual void AcceleratedSurfaceInitialized(int host_id,
     98                                              int route_id) OVERRIDE;
     99   virtual void AcceleratedSurfaceBuffersSwapped(
    100       const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params,
    101       int gpu_host_id) OVERRIDE;
    102   virtual void AcceleratedSurfacePostSubBuffer(
    103       const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params,
    104       int gpu_host_id) OVERRIDE;
    105   virtual void AcceleratedSurfaceSuspend() OVERRIDE;
    106   virtual void AcceleratedSurfaceRelease() OVERRIDE;
    107   virtual bool HasAcceleratedSurface(const gfx::Size& desired_size) OVERRIDE;
    108   virtual void OnSwapCompositorFrame(
    109       uint32 output_surface_id,
    110       scoped_ptr<cc::CompositorFrame> frame) OVERRIDE;
    111   virtual void GetScreenInfo(blink::WebScreenInfo* results) OVERRIDE;
    112   virtual gfx::Rect GetBoundsInRootWindow() OVERRIDE;
    113   virtual gfx::GLSurfaceHandle GetCompositingSurface() OVERRIDE;
    114 #if defined(USE_AURA)
    115   virtual void ProcessAckedTouchEvent(
    116       const TouchEventWithLatencyInfo& touch,
    117       InputEventAckState ack_result) OVERRIDE;
    118 #endif  // defined(USE_AURA)
    119   virtual bool LockMouse() OVERRIDE;
    120   virtual void UnlockMouse() OVERRIDE;
    121 
    122 #if defined(OS_MACOSX)
    123   // RenderWidgetHostView implementation.
    124   virtual void SetActive(bool active) OVERRIDE;
    125   virtual void SetTakesFocusOnlyOnMouseDown(bool flag) OVERRIDE;
    126   virtual void SetWindowVisibility(bool visible) OVERRIDE;
    127   virtual void WindowFrameChanged() OVERRIDE;
    128   virtual void ShowDefinitionForSelection() OVERRIDE;
    129   virtual bool SupportsSpeech() const OVERRIDE;
    130   virtual void SpeakSelection() OVERRIDE;
    131   virtual bool IsSpeaking() const OVERRIDE;
    132   virtual void StopSpeaking() OVERRIDE;
    133 
    134   // RenderWidgetHostViewBase implementation.
    135   virtual bool PostProcessEventForPluginIme(
    136       const NativeWebKeyboardEvent& event) OVERRIDE;
    137 #endif  // defined(OS_MACOSX)
    138 
    139 #if defined(OS_ANDROID) || defined(TOOLKIT_VIEWS) || defined(USE_AURA)
    140   // RenderWidgetHostViewBase implementation.
    141   virtual void ShowDisambiguationPopup(
    142       const gfx::Rect& rect_pixels,
    143       const SkBitmap& zoomed_bitmap) OVERRIDE;
    144 #endif  // defined(OS_ANDROID) || defined(TOOLKIT_VIEWS)
    145 
    146 #if defined(OS_ANDROID)
    147   virtual void LockCompositingSurface() OVERRIDE;
    148   virtual void UnlockCompositingSurface() OVERRIDE;
    149 #endif  // defined(OS_ANDROID)
    150 
    151 #if defined(OS_WIN)
    152   virtual void SetParentNativeViewAccessible(
    153       gfx::NativeViewAccessible accessible_parent) OVERRIDE;
    154   virtual gfx::NativeViewId GetParentForWindowlessPlugin() const OVERRIDE;
    155 #endif
    156   virtual BrowserAccessibilityManager* CreateBrowserAccessibilityManager(
    157       BrowserAccessibilityDelegate* delegate) OVERRIDE;
    158 
    159   virtual SkColorType PreferredReadbackFormat() OVERRIDE;
    160 
    161  protected:
    162   friend class RenderWidgetHostView;
    163 
    164   // The last scroll offset of the view.
    165   gfx::Vector2dF last_scroll_offset_;
    166 
    167   // Members will become private when RenderWidgetHostViewGuest is removed.
    168   // The model object.
    169   RenderWidgetHostImpl* host_;
    170 
    171   // frame_connector_ provides a platform abstraction. Messages
    172   // sent through it are routed to the embedding renderer process.
    173   CrossProcessFrameConnector* frame_connector_;
    174 
    175  private:
    176   DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewChildFrame);
    177 };
    178 
    179 }  // namespace content
    180 
    181 #endif  // CONTENT_BROWSER_FRAME_HOST_RENDER_WIDGET_HOST_VIEW_CHILD_FRAME_H_
    182