Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(821)

Unified Diff: content/browser/web_contents/touch_editable_impl_aura.h

Issue 1263703004: Revert of Implement Aura side of unified touch text selection for contents (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/web_contents/touch_editable_impl_aura.h
diff --git a/content/browser/web_contents/touch_editable_impl_aura.h b/content/browser/web_contents/touch_editable_impl_aura.h
new file mode 100644
index 0000000000000000000000000000000000000000..d7516f67b48aed9b261860ab65d56035c7b8eb34
--- /dev/null
+++ b/content/browser/web_contents/touch_editable_impl_aura.h
@@ -0,0 +1,116 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_WEB_CONTENTS_TOUCH_EDITABLE_IMPL_AURA_H_
+#define CONTENT_BROWSER_WEB_CONTENTS_TOUCH_EDITABLE_IMPL_AURA_H_
+
+#include <deque>
+#include <map>
+#include <queue>
+
+#include "content/browser/renderer_host/render_widget_host_view_aura.h"
+#include "ui/aura/window_observer.h"
+#include "ui/base/touch/touch_editing_controller.h"
+#include "ui/gfx/geometry/point.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/native_widget_types.h"
+
+namespace ui {
+class Accelerator;
+}
+
+namespace content {
+class TouchEditableImplAuraTest;
+
+// Aura specific implementation of ui::TouchEditable for a RenderWidgetHostView.
+class CONTENT_EXPORT TouchEditableImplAura
+ : public ui::TouchEditable,
+ public NON_EXPORTED_BASE(RenderWidgetHostViewAura::TouchEditingClient) {
+ public:
+ ~TouchEditableImplAura() override;
+
+ static TouchEditableImplAura* Create();
+
+ void AttachToView(RenderWidgetHostViewAura* view);
+
+ // Updates the |touch_selection_controller_| or ends touch editing session
+ // depending on the current selection and cursor state.
+ void UpdateEditingController();
+
+ virtual void OverscrollStarted();
+ virtual void OverscrollCompleted();
+
+ // Overridden from RenderWidgetHostViewAura::TouchEditingClient.
+ void StartTouchEditing() override;
+ void EndTouchEditing(bool quick) override;
+ void OnSelectionOrCursorChanged(const ui::SelectionBound& anchor,
+ const ui::SelectionBound& focus) override;
+ void OnTextInputTypeChanged(ui::TextInputType type) override;
+ bool HandleInputEvent(const ui::Event* event) override;
+ void GestureEventAck(int gesture_event_type) override;
+ void DidStopFlinging() override;
+ void OnViewDestroyed() override;
+
+ // Overridden from ui::TouchEditable:
+ void SelectRect(const gfx::Point& start, const gfx::Point& end) override;
+ void MoveCaretTo(const gfx::Point& point) override;
+ void GetSelectionEndPoints(ui::SelectionBound* anchor,
+ ui::SelectionBound* focus) override;
+ gfx::Rect GetBounds() override;
+ gfx::NativeView GetNativeView() const override;
+ void ConvertPointToScreen(gfx::Point* point) override;
+ void ConvertPointFromScreen(gfx::Point* point) override;
+ bool DrawsHandles() override;
+ void OpenContextMenu(const gfx::Point& anchor) override;
+ bool IsCommandIdChecked(int command_id) const override;
+ bool IsCommandIdEnabled(int command_id) const override;
+ bool GetAcceleratorForCommandId(int command_id,
+ ui::Accelerator* accelerator) override;
+ void ExecuteCommand(int command_id, int event_flags) override;
+ void DestroyTouchSelection() override;
+
+ protected:
+ TouchEditableImplAura();
+
+ private:
+ friend class TouchEditableImplAuraTest;
+
+ // A convenience function that is called after scroll/fling/overscroll ends to
+ // re-activate touch selection if necessary.
+ void StartTouchEditingIfNecessary();
+
+ void Cleanup();
+
+ // Bounds for the selection.
+ ui::SelectionBound selection_anchor_;
+ ui::SelectionBound selection_focus_;
+
+ // The current text input type.
+ ui::TextInputType text_input_type_;
+
+ RenderWidgetHostViewAura* rwhva_;
+ scoped_ptr<ui::TouchEditingControllerDeprecated> touch_selection_controller_;
+
+ // True if |rwhva_| is currently handling a gesture that could result in a
+ // change in selection (long press, double tap or triple tap).
+ bool selection_gesture_in_process_;
+
+ // Set to true if handles are hidden when user is scrolling. Used to determine
+ // whether to re-show handles after a scrolling session.
+ bool handles_hidden_due_to_scroll_;
+
+ // Keep track of scrolls/overscrolls in progress.
+ bool scroll_in_progress_;
+ bool overscroll_in_progress_;
+
+ // Used to track if a textfield was focused when the current tap gesture
+ // happened.
+ bool textfield_was_focused_on_tap_;
+
+ DISALLOW_COPY_AND_ASSIGN(TouchEditableImplAura);
+};
+
+} // namespace content
+
+#endif // CONTENT_BROWSER_WEB_CONTENTS_TOUCH_EDITABLE_IMPL_AURA_H_

Powered by Google App Engine
This is Rietveld 408576698