touch_editable_impl_aura.h revision 0529e5d033099cbfc42635f6f6183833b09dff6e
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Copyright (c) 2013 The Chromium Authors. All rights reserved. 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Use of this source code is governed by a BSD-style license that can be 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// found in the LICENSE file. 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef CONTENT_BROWSER_WEB_CONTENTS_TOUCH_EDITABLE_IMPL_AURA_H_ 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define CONTENT_BROWSER_WEB_CONTENTS_TOUCH_EDITABLE_IMPL_AURA_H_ 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <deque> 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <map> 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <queue> 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "content/browser/renderer_host/render_widget_host_view_aura.h" 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "ui/aura/window_observer.h" 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "ui/base/touch/touch_editing_controller.h" 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "ui/gfx/native_widget_types.h" 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "ui/gfx/point.h" 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "ui/gfx/rect.h" 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace ui { 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Accelerator; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace content { 2446baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadlerclass TouchEditableImplAuraTest; 2546baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Aura specific implementation of ui::TouchEditable for a RenderWidgetHostView. 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass CONTENT_EXPORT TouchEditableImplAura 28825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown : public ui::TouchEditable, 29825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown public NON_EXPORTED_BASE(RenderWidgetHostViewAura::TouchEditingClient) { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public: 31825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown virtual ~TouchEditableImplAura(); 32825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown 33825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown static TouchEditableImplAura* Create(); 34825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void AttachToView(RenderWidgetHostViewAura* view); 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Updates the |touch_selection_controller_| or ends touch editing session 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // depending on the current selection and cursor state. 3946baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler void UpdateEditingController(); 407ce745248d4de0e6543a559c93423df899832100Jeff Brown 417ce745248d4de0e6543a559c93423df899832100Jeff Brown void OverscrollStarted(); 427ce745248d4de0e6543a559c93423df899832100Jeff Brown void OverscrollCompleted(); 4346baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler 4446baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler // Overridden from RenderWidgetHostViewAura::TouchEditingClient. 4546baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler virtual void StartTouchEditing() OVERRIDE; 4646baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler virtual void EndTouchEditing(bool quick) OVERRIDE; 4746baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler virtual void OnSelectionOrCursorChanged(const gfx::Rect& anchor, 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const gfx::Rect& focus) OVERRIDE; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void OnTextInputTypeChanged(ui::TextInputType type) OVERRIDE; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool HandleInputEvent(const ui::Event* event) OVERRIDE; 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GestureEventAck(int gesture_event_type) OVERRIDE; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void OnViewDestroyed() OVERRIDE; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Overridden from ui::TouchEditable: 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void SelectRect(const gfx::Point& start, 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const gfx::Point& end) OVERRIDE; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void MoveCaretTo(const gfx::Point& point) OVERRIDE; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GetSelectionEndPoints(gfx::Rect* p1, gfx::Rect* p2) OVERRIDE; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual gfx::Rect GetBounds() OVERRIDE; 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual gfx::NativeView GetNativeView() const OVERRIDE; 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void ConvertPointToScreen(gfx::Point* point) OVERRIDE; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void ConvertPointFromScreen(gfx::Point* point) OVERRIDE; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool DrawsHandles() OVERRIDE; 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void OpenContextMenu(const gfx::Point& anchor) OVERRIDE; 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool GetAcceleratorForCommandId( 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int command_id, 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ui::Accelerator* accelerator) OVERRIDE; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE; 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected: 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TouchEditableImplAura(); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private: 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project friend class TouchEditableImplAuraTest; 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void Cleanup(); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Rectangles for the selection anchor and focus. 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gfx::Rect selection_anchor_rect_; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gfx::Rect selection_focus_rect_; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // The current text input type. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ui::TextInputType text_input_type_; 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RenderWidgetHostViewAura* rwhva_; 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scoped_ptr<ui::TouchSelectionController> touch_selection_controller_; 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // True if |rwhva_| is currently handling a gesture that could result in a 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // change in selection (long press, double tap or triple tap). 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool selection_gesture_in_process_; 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Set to true if handles are hidden when user is scrolling. Used to determine 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // whether to re-show handles after a scrolling session. 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool handles_hidden_due_to_scroll_; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Keeps track of when the user is scrolling. 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool scroll_in_progress_; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Set to true when the page starts an overscroll. 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool overscroll_in_progress_; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Used to track if a textfield was focused when the current tap gesture 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // happened. 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool textfield_was_focused_on_tap_; 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DISALLOW_COPY_AND_ASSIGN(TouchEditableImplAura); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} // namespace content 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // CONTENT_BROWSER_WEB_CONTENTS_TOUCH_EDITABLE_IMPL_AURA_H_ 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project