render_widget_host_view_aura.h revision 116680a4aac90f2aa7413d9095a592090648e557
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_AURA_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_AURA_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map>
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <set>
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/gtest_prod_util.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/linked_ptr.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h"
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/browser/accessibility/browser_accessibility_manager.h"
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/browser/compositor/delegated_frame_host.h"
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/browser/compositor/image_transport_factory.h"
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/browser/compositor/owned_mailbox.h"
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_widget_host_view_base.h"
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "content/common/cursors/webcursor.h"
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "third_party/skia/include/core/SkRegion.h"
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/aura/client/cursor_client_observer.h"
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/aura/client/focus_change_observer.h"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/window_delegate.h"
30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/aura/window_tree_host_observer.h"
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/ime/text_input_client.h"
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/display_observer.h"
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/gfx/insets.h"
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h"
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ui/wm/public/activation_change_observer.h"
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ui/wm/public/activation_delegate.h"
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)struct ViewHostMsg_TextInputState_Params;
39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WindowTracker;
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace client {
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ScopedTooltipDisabler;
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class CopyOutputRequest;
497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass CopyOutputResult;
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DelegatedFrameData;
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Canvas;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Display;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace gpu {
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct Mailbox;
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui {
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CompositorLock;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InputMethod;
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class LocatedEvent;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Texture;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN)
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class LegacyRenderWidgetHostHWND;
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
7446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class OverscrollController;
75effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass RenderFrameHostImpl;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHostImpl;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHostView;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderWidgetHostView class hierarchy described in render_widget_host_view.h.
80d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)class CONTENT_EXPORT RenderWidgetHostViewAura
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : public RenderWidgetHostViewBase,
82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      public DelegatedFrameHostClient,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public ui::TextInputClient,
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      public gfx::DisplayObserver,
85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      public aura::WindowTreeHostObserver,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public aura::WindowDelegate,
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public aura::client::ActivationDelegate,
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      public aura::client::ActivationChangeObserver,
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      public aura::client::FocusChangeObserver,
90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      public aura::client::CursorClientObserver,
91010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      public base::SupportsWeakPtr<RenderWidgetHostViewAura> {
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Displays and controls touch editing elements such as selection handles.
94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  class TouchEditingClient {
95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   public:
96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    TouchEditingClient() {}
97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // Tells the client to start showing touch editing handles.
99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    virtual void StartTouchEditing() = 0;
100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    // Notifies the client that touch editing is no longer needed. |quick|
1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    // determines whether the handles should fade out quickly or slowly.
1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    virtual void EndTouchEditing(bool quick) = 0;
104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // Notifies the client that the selection bounds need to be updated.
106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    virtual void OnSelectionOrCursorChanged(const gfx::Rect& anchor,
107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                            const gfx::Rect& focus) = 0;
108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // Notifies the client that the current text input type as changed.
110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    virtual void OnTextInputTypeChanged(ui::TextInputType type) = 0;
111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // Notifies the client that an input event is about to be sent to the
113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // renderer. Returns true if the client wants to stop event propagation.
114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    virtual bool HandleInputEvent(const ui::Event* event) = 0;
115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // Notifies the client that a gesture event ack was received.
117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    virtual void GestureEventAck(int gesture_event_type) = 0;
118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // This is called when the view is destroyed, so that the client can
120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // perform any necessary clean-up.
121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    virtual void OnViewDestroyed() = 0;
122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   protected:
124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    virtual ~TouchEditingClient() {}
125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  };
126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void set_touch_editing_client(TouchEditingClient* client) {
128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    touch_editing_client_ = client;
129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
131010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  explicit RenderWidgetHostViewAura(RenderWidgetHost* host);
132010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderWidgetHostView implementation.
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitAsChild(gfx::NativeView parent_view) OVERRIDE;
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual RenderWidgetHost* GetRenderWidgetHost() const OVERRIDE;
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetSize(const gfx::Size& size) OVERRIDE;
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetBounds(const gfx::Rect& rect) OVERRIDE;
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::NativeView GetNativeView() const OVERRIDE;
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::NativeViewId GetNativeViewId() const OVERRIDE;
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::NativeViewAccessible GetNativeViewAccessible() OVERRIDE;
141010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual ui::TextInputClient* GetTextInputClient() OVERRIDE;
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HasFocus() const OVERRIDE;
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsSurfaceAvailableForCopy() const OVERRIDE;
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Show() OVERRIDE;
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Hide() OVERRIDE;
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsShowing() OVERRIDE;
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Rect GetViewBounds() const OVERRIDE;
148cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void SetBackgroundOpaque(bool opaque) OVERRIDE;
1495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual gfx::Size GetVisibleViewportSize() const OVERRIDE;
1505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual void SetInsets(const gfx::Insets& insets) OVERRIDE;
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
152010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Overridden from RenderWidgetHostViewBase:
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitAsPopup(RenderWidgetHostView* parent_host_view,
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const gfx::Rect& pos) OVERRIDE;
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitAsFullscreen(
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderWidgetHostView* reference_host_view) OVERRIDE;
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WasShown() OVERRIDE;
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WasHidden() OVERRIDE;
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void MovePluginWindows(
160ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      const std::vector<WebPluginGeometry>& moves) OVERRIDE;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Focus() OVERRIDE;
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Blur() OVERRIDE;
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateCursor(const WebCursor& cursor) OVERRIDE;
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetIsLoading(bool is_loading) OVERRIDE;
165f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual void TextInputStateChanged(
166f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      const ViewHostMsg_TextInputState_Params& params) OVERRIDE;
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ImeCancelComposition() OVERRIDE;
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ImeCompositionRangeChanged(
16958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const gfx::Range& range,
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<gfx::Rect>& character_bounds) OVERRIDE;
1717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void RenderProcessGone(base::TerminationStatus status,
1727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                 int error_code) OVERRIDE;
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Destroy() OVERRIDE;
174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void SetTooltipText(const base::string16& tooltip_text) OVERRIDE;
175a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void SelectionChanged(const base::string16& text,
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                size_t offset,
17758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                const gfx::Range& range) OVERRIDE;
178cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual gfx::Size GetRequestedRendererSize() const OVERRIDE;
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SelectionBoundsChanged(
1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const ViewHostMsg_SelectionBounds_Params& params) OVERRIDE;
1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ScrollOffsetChanged() OVERRIDE;
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CopyFromCompositingSurface(
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Rect& src_subrect,
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Size& dst_size,
1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const base::Callback<void(bool, const SkBitmap&)>& callback,
186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const SkColorType color_type) OVERRIDE;
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void CopyFromCompositingSurfaceToVideoFrame(
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const gfx::Rect& src_subrect,
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const scoped_refptr<media::VideoFrame>& target,
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::Callback<void(bool)>& callback) OVERRIDE;
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool CanCopyToVideoFrame() const OVERRIDE;
192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool CanSubscribeFrame() const OVERRIDE;
193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void BeginFrameSubscription(
194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      scoped_ptr<RenderWidgetHostViewFrameSubscriber> subscriber) OVERRIDE;
195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void EndFrameSubscription() OVERRIDE;
196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void AcceleratedSurfaceInitialized(int host_id,
197f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                             int route_id) OVERRIDE;
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AcceleratedSurfaceBuffersSwapped(
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params_in_pixel,
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int gpu_host_id) OVERRIDE;
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AcceleratedSurfacePostSubBuffer(
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params_in_pixel,
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int gpu_host_id) OVERRIDE;
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AcceleratedSurfaceSuspend() OVERRIDE;
2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void AcceleratedSurfaceRelease() OVERRIDE;
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HasAcceleratedSurface(const gfx::Size& desired_size) OVERRIDE;
207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void GetScreenInfo(blink::WebScreenInfo* results) OVERRIDE;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Rect GetBoundsInRootWindow() OVERRIDE;
20946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void WheelEventAck(const blink::WebMouseWheelEvent& event,
21046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             InputEventAckState ack_result) OVERRIDE;
2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void GestureEventAck(const blink::WebGestureEvent& event,
212a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                               InputEventAckState ack_result) OVERRIDE;
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ProcessAckedTouchEvent(
2147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      const TouchEventWithLatencyInfo& touch,
2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      InputEventAckState ack_result) OVERRIDE;
216f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual scoped_ptr<SyntheticGestureTarget> CreateSyntheticGestureTarget()
217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      OVERRIDE;
21846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual InputEventAckState FilterInputEvent(
21946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      const blink::WebInputEvent& input_event) OVERRIDE;
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::GLSurfaceHandle GetCompositingSurface() OVERRIDE;
221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual BrowserAccessibilityManager* CreateBrowserAccessibilityManager(
222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      BrowserAccessibilityDelegate* delegate) OVERRIDE;
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool LockMouse() OVERRIDE;
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UnlockMouse() OVERRIDE;
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnSwapCompositorFrame(
226ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      uint32 output_surface_id,
2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      scoped_ptr<cc::CompositorFrame> frame) OVERRIDE;
2285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
22990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#if defined(OS_WIN)
23090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void SetParentNativeViewAccessible(
23190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      gfx::NativeViewAccessible accessible_parent) OVERRIDE;
232f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual gfx::NativeViewId GetParentForWindowlessPlugin() const OVERRIDE;
23390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from ui::TextInputClient:
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetCompositionText(
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ui::CompositionText& composition) OVERRIDE;
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ConfirmCompositionText() OVERRIDE;
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ClearCompositionText() OVERRIDE;
240a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void InsertText(const base::string16& text) OVERRIDE;
2415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void InsertChar(base::char16 ch, int flags) OVERRIDE;
242868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE;
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ui::TextInputType GetTextInputType() const OVERRIDE;
244ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual ui::TextInputMode GetTextInputMode() const OVERRIDE;
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CanComposeInline() const OVERRIDE;
2468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  virtual gfx::Rect GetCaretBounds() const OVERRIDE;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetCompositionCharacterBounds(uint32 index,
2488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                                             gfx::Rect* rect) const OVERRIDE;
2498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  virtual bool HasCompositionText() const OVERRIDE;
2508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  virtual bool GetTextRange(gfx::Range* range) const OVERRIDE;
2518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  virtual bool GetCompositionTextRange(gfx::Range* range) const OVERRIDE;
2528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  virtual bool GetSelectionRange(gfx::Range* range) const OVERRIDE;
25358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool SetSelectionRange(const gfx::Range& range) OVERRIDE;
25458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool DeleteRange(const gfx::Range& range) OVERRIDE;
25558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool GetTextFromRange(const gfx::Range& range,
256a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                base::string16* text) const OVERRIDE;
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnInputMethodChanged() OVERRIDE;
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ChangeTextDirectionAndLayoutAlignment(
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::i18n::TextDirection direction) OVERRIDE;
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ExtendSelectionAndDelete(size_t before, size_t after) OVERRIDE;
261c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void EnsureCaretInRect(const gfx::Rect& rect) OVERRIDE;
262f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void OnCandidateWindowShown() OVERRIDE;
263f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void OnCandidateWindowUpdated() OVERRIDE;
264f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void OnCandidateWindowHidden() OVERRIDE;
26546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual bool IsEditingCommandEnabled(int command_id) OVERRIDE;
26646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void ExecuteEditingCommand(int command_id) OVERRIDE;
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Overridden from gfx::DisplayObserver:
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE;
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE;
271cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void OnDisplayMetricsChanged(const gfx::Display& display,
272cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                       uint32_t metrics) OVERRIDE;
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from aura::WindowDelegate:
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Size GetMinimumSize() const OVERRIDE;
2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual gfx::Size GetMaximumSize() const OVERRIDE;
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnBoundsChanged(const gfx::Rect& old_bounds,
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const gfx::Rect& new_bounds) OVERRIDE;
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::NativeCursor GetCursor(const gfx::Point& point) OVERRIDE;
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetNonClientComponent(const gfx::Point& point) const OVERRIDE;
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShouldDescendIntoChildForEventHandling(
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      aura::Window* child,
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Point& location) OVERRIDE;
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CanFocus() OVERRIDE;
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnCaptureLost() OVERRIDE;
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE;
288a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void OnWindowDestroying(aura::Window* window) OVERRIDE;
289a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void OnWindowDestroyed(aura::Window* window) OVERRIDE;
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnWindowTargetVisibilityChanged(bool visible) OVERRIDE;
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HasHitTestMask() const OVERRIDE;
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE;
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from ui::EventHandler:
2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE;
2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE;
2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnScrollEvent(ui::ScrollEvent* event) OVERRIDE;
2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE;
2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from aura::client::ActivationDelegate:
3022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool ShouldActivate() const OVERRIDE;
3032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Overridden from aura::client::ActivationChangeObserver:
3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnWindowActivated(aura::Window* gained_activation,
3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                 aura::Window* lost_activation) OVERRIDE;
3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Overridden from aura::client::CursorClientObserver:
309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void OnCursorVisibilityChanged(bool is_visible) OVERRIDE;
310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
3112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Overridden from aura::client::FocusChangeObserver:
3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnWindowFocused(aura::Window* gained_focus,
3132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               aura::Window* lost_focus) OVERRIDE;
3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
315a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Overridden from aura::WindowTreeHostObserver:
316a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void OnHostMoved(const aura::WindowTreeHost* host,
317a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                           const gfx::Point& new_origin) OVERRIDE;
3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_WIN)
3202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Sets the cutout rects from constrained windows. These are rectangles that
3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // windowed NPAPI plugins shouldn't paint in. Overwrites any previous cutout
3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // rects.
3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void UpdateConstrainedWindowRects(const std::vector<gfx::Rect>& rects);
324effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
325effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // Updates the cursor clip region. Used for mouse locking.
326effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void UpdateMouseLockRegion();
327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Notification that the LegacyRenderWidgetHostHWND was destroyed.
329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void OnLegacyWindowDestroyed();
3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Method to indicate if this instance is shutting down or closing.
3338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // TODO(shrikant): Discuss around to see if it makes sense to add this method
3348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // as part of RenderWidgetHostView.
3355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  bool IsClosing() const { return in_shutdown_; }
3368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
33746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Sets whether the overscroll controller should be enabled for this page.
33846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void SetOverscrollControllerEnabled(bool enabled);
33946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void SnapToPhysicalPixelBoundary();
341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
34246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  OverscrollController* overscroll_controller() const {
34346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    return overscroll_controller_.get();
34446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
34546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
347d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual ~RenderWidgetHostViewAura();
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
349d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  // Exposed for tests.
350d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  aura::Window* window() { return window_; }
351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual SkColorType PreferredReadbackFormat() OVERRIDE;
352010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual DelegatedFrameHost* GetDelegatedFrameHost() const OVERRIDE;
353effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
354d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) private:
355d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, SetCompositionText);
356d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, TouchEventState);
357f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest,
358f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                           TouchEventPositionsArentRounded);
359d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, TouchEventSyncAsync);
360d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, SwapNotifiesWindow);
361d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest,
362d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                           SkippedDelegatedFrames);
3634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange);
3641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest,
3651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                           DiscardDelegatedFrames);
3665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest,
3675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                           DiscardDelegatedFramesWithLocking);
368a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, SoftwareDPIChange);
3695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest,
3705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                           UpdateCursorIfOverSelf);
3715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraCopyRequestTest,
3725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                           DestroyedAfterCopyRequest);
3735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest,
3745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                           VisibleViewportTest);
37546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest,
37646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                           OverscrollResetsOnBlur);
377d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
378d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  class WindowObserver;
379d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  friend class WindowObserver;
380d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateCursorIfOverSelf();
382c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
3831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Set the bounds of the window and handle size changes.  Assumes the caller
3841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // has already adjusted the origin of |rect| to conform to whatever coordinate
3851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // space is required by the aura::Window.
3861e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  void InternalSetBounds(const gfx::Rect& rect);
3871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
388010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_WIN)
389010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  bool UsesNativeWindowFrame() const;
390010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif
391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui::InputMethod* GetInputMethod() const;
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns whether the widget needs an input grab to work properly.
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool NeedsInputGrab();
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Confirm existing composition text in the webpage and ask the input method
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to cancel its ongoing composition session.
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void FinishImeCompositionSession();
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This method computes movementX/Y and keeps track of mouse location for
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // mouse lock on all mouse move events.
403f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void ModifyEventMovementAndCoords(blink::WebMouseEvent* event);
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Sends an IPC to the renderer process to communicate whether or not
406c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // the mouse cursor is visible anywhere on the screen.
407c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void NotifyRendererOfCursorVisibilityState(bool is_visible);
408c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If |clip| is non-empty and and doesn't contain |rect| or |clip| is empty
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // SchedulePaint() is invoked for |rect|.
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SchedulePaintIfNotInClip(const gfx::Rect& rect, const gfx::Rect& clip);
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper method to determine if, in mouse locked mode, the cursor should be
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // moved to center.
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool ShouldMoveToCenter();
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
417a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Called after |window_| is parented to a WindowEventDispatcher.
4182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void AddedToRootWindow();
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
420a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Called prior to removing |window_| from a WindowEventDispatcher.
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RemovingFromRootWindow();
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
423010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // DelegatedFrameHostClient implementation.
424010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual ui::Compositor* GetCompositor() const OVERRIDE;
425010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual ui::Layer* GetLayer() OVERRIDE;
426010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual RenderWidgetHostImpl* GetHost() OVERRIDE;
427010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual void SchedulePaintInRect(
428010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      const gfx::Rect& damage_rect_in_dip) OVERRIDE;
429010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual bool IsVisible() OVERRIDE;
430010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual scoped_ptr<ResizeLock> CreateResizeLock(
431010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      bool defer_compositor_lock) OVERRIDE;
432010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual gfx::Size DesiredFrameSize() OVERRIDE;
433010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual float CurrentDeviceScaleFactor() OVERRIDE;
434010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual gfx::Size ConvertViewSizeToPixel(const gfx::Size& size) OVERRIDE;
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Detaches |this| from the input method object.
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void DetachFromInputMethod();
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
439e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  // Before calling RenderWidgetHost::ForwardKeyboardEvent(), this method
440e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  // calls our keybindings handler against the event and send matched
441e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  // edit commands to renderer instead.
442e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  void ForwardKeyboardEvent(const NativeWebKeyboardEvent& event);
443e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch
4445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Dismisses a Web Popup on a mouse or touch press outside the popup and its
4455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // parent.
4465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void ApplyEventFilterForPopupExit(ui::LocatedEvent* event);
4472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Converts |rect| from window coordinate to screen coordinate.
4498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  gfx::Rect ConvertRectToScreen(const gfx::Rect& rect) const;
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
451c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Converts |rect| from screen coordinate to window coordinate.
4528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  gfx::Rect ConvertRectFromScreen(const gfx::Rect& rect) const;
453c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
454f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Helper function to set keyboard focus to the main window.
455f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void SetKeyboardFocus();
4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
457effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  RenderFrameHostImpl* GetFocusedFrame();
458effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The model object.
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderWidgetHostImpl* host_;
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  aura::Window* window_;
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
464010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  scoped_ptr<DelegatedFrameHost> delegated_frame_host_;
465010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<WindowObserver> window_observer_;
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Are we in the process of closing?  Tracked so fullscreen views can avoid
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // sending a second shutdown request to the host when they lose the focus
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // after requesting shutdown for another reason (e.g. Escape key).
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool in_shutdown_;
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
473a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // True if in the process of handling a window bounds changed notification.
474a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  bool in_bounds_changed_;
475a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Is this a fullscreen view?
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_fullscreen_;
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Our parent host view, if this is a popup.  NULL otherwise.
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderWidgetHostViewAura* popup_parent_host_view_;
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Our child popup host. NULL if we do not have a child popup.
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderWidgetHostViewAura* popup_child_host_view_;
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  class EventFilterForPopupExit;
4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  friend class EventFilterForPopupExit;
4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<ui::EventHandler> event_filter_for_popup_exit_;
4882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True when content is being loaded. Used to show an hourglass cursor.
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_loading_;
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The cursor for the page. This is passed up from the renderer.
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebCursor current_cursor_;
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The touch-event. Its touch-points are updated as necessary. A new
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // touch-point is added from an ET_TOUCH_PRESSED event, and a touch-point is
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // removed from the list on an ET_TOUCH_RELEASED event.
498f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  blink::WebTouchEvent touch_event_;
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The current text input type.
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui::TextInputType text_input_type_;
50258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // The current text input mode corresponding to HTML5 inputmode attribute.
50358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  ui::TextInputMode text_input_mode_;
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool can_compose_inline_;
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Rectangles for the selection anchor and focus.
5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  gfx::Rect selection_anchor_rect_;
5082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  gfx::Rect selection_focus_rect_;
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The current composition character bounds.
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<gfx::Rect> composition_character_bounds_;
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Indicates if there is onging composition text.
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool has_composition_text_;
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
516f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Whether return characters should be passed on to the RenderWidgetHostImpl.
517f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool accept_return_character_;
518f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Current tooltip text.
520a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 tooltip_;
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
522c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // The size and scale of the last software compositing frame that was swapped.
523c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  gfx::Size last_swapped_software_frame_size_;
524c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  float last_swapped_software_frame_scale_factor_;
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If non-NULL we're in OnPaint() and this is the supplied canvas.
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Canvas* paint_canvas_;
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to record the last position of the mouse.
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // While the mouse is locked, they store the last known position just as mouse
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // lock was entered.
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Relative to the upper-left corner of the view.
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Point unlocked_mouse_position_;
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Relative to the upper-left corner of the screen.
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Point unlocked_global_mouse_position_;
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Last cursor position relative to screen. Used to compute movementX/Y.
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Point global_mouse_position_;
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // In mouse locked mode, we syntheticaly move the mouse cursor to the center
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // of the window when it reaches the window borders to avoid it going outside.
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This flag is used to differentiate between these synthetic mouse move
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // events vs. normal mouse move events.
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool synthetic_move_sent_;
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to track the state of the window we're created from. Only used when
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // created fullscreen.
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<aura::WindowTracker> host_tracker_;
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
548c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Used to track the last cursor visibility update that was sent to the
549c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // renderer via NotifyRendererOfCursorVisibilityState().
550c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  enum CursorVisibilityState {
551c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    UNKNOWN,
552c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    VISIBLE,
553c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    NOT_VISIBLE,
554c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  };
555c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CursorVisibilityState cursor_visibility_state_in_renderer_;
556c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_WIN)
558f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // The list of rectangles from constrained windows over this view. Windowed
559f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // NPAPI plugins shouldn't draw over them.
5602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::vector<gfx::Rect> constrained_rects_;
5612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
562ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  typedef std::map<HWND, WebPluginGeometry> PluginWindowMoves;
5632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Contains information about each windowed plugin's clip and cutout rects (
5642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // from the renderer). This is needed because when the transient windoiws
5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // over this view changes, we need this information in order to create a new
5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // region for the HWND.
5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PluginWindowMoves plugin_window_moves_;
568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // The LegacyRenderWidgetHostHWND class provides a dummy HWND which is used
570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // for accessibility, as the container for windowless plugins like
571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Flash/Silverlight, etc and for legacy drivers for trackpoints/trackpads,
572116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // etc.
573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // The LegacyRenderWidgetHostHWND instance is created during the first call
574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // to RenderWidgetHostViewAura::InternalSetBounds. The instance is destroyed
575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // when the LegacyRenderWidgetHostHWND hwnd is destroyed.
576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  content::LegacyRenderWidgetHostHWND* legacy_render_widget_host_HWND_;
577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Set to true if the legacy_render_widget_host_HWND_ instance was destroyed
579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // by Windows. This could happen if the browser window was destroyed by
580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // DestroyWindow for e.g. This flag helps ensure that we don't try to create
581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // the LegacyRenderWidgetHostHWND instance again as that would be a futile
582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // exercise.
583116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool legacy_window_destroyed_;
5842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
5852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
586c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  TouchEditingClient* touch_editing_client_;
5872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
58846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  scoped_ptr<OverscrollController> overscroll_controller_;
58946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  gfx::Insets insets_;
591868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
592010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  std::vector<ui::LatencyInfo> software_latency_info_;
593d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
5945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<aura::client::ScopedTooltipDisabler> tooltip_disabler_;
5955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
5961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  base::WeakPtrFactory<RenderWidgetHostViewAura> weak_ptr_factory_;
597f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewAura);
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_AURA_H_
604