Index: content/browser/renderer_host/text_input_manager.h |
diff --git a/content/browser/renderer_host/text_input_manager.h b/content/browser/renderer_host/text_input_manager.h |
index 7f50d089887d2555c85fd5e32562c2e2eb96d9a9..b09ae5069420f5c96af8b022c118a5a5e52fc008 100644 |
--- a/content/browser/renderer_host/text_input_manager.h |
+++ b/content/browser/renderer_host/text_input_manager.h |
@@ -9,17 +9,15 @@ |
#include <utility> |
#include "base/observer_list.h" |
+#include "base/strings/string16.h" |
#include "content/common/content_export.h" |
#include "content/common/text_input_state.h" |
#include "ui/gfx/geometry/rect.h" |
+#include "ui/gfx/range/range.h" |
#include "ui/gfx/selection_bound.h" |
struct ViewHostMsg_SelectionBounds_Params; |
-namespace gfx { |
-class Range; |
-} |
- |
namespace content { |
class RenderWidgetHostImpl; |
@@ -58,6 +56,27 @@ class CONTENT_EXPORT TextInputManager { |
virtual void OnImeCompositionRangeChanged( |
TextInputManager* text_input_manager, |
RenderWidgetHostViewBase* updated_view) {} |
+ // Called when the text selection for the |updated_view_| has changed. |
+ virtual void OnTextSelectionChanged( |
+ TextInputManager* text_input_manager, |
+ RenderWidgetHostViewBase* updated_view) {} |
+ }; |
+ |
+ // This struct is used to store text selection related information for views. |
+ struct TextSelection { |
+ TextSelection(); |
+ TextSelection(const TextSelection& other); |
+ ~TextSelection(); |
+ |
+ // The offset of the text stored in |text| relative to the start of the web |
+ // page. |
+ size_t offset; |
+ |
+ // The current selection range relative to the start of the web page. |
+ gfx::Range range; |
+ |
+ // The text inside and around the current selection range. |
+ base::string16 text; |
}; |
TextInputManager(); |
@@ -84,6 +103,12 @@ class CONTENT_EXPORT TextInputManager { |
// Returns a vector of rects representing the character bounds. |
const std::vector<gfx::Rect>* GetCompositionCharacterBounds() const; |
+ // The following method returns the text selection state for the given |view|. |
+ // If |view| == nullptr, it will assume |active_view_| and return its state. |
+ // In the case of |active_view_| == nullptr, the method will return nullptr. |
+ const TextSelection* GetTextSelection( |
+ RenderWidgetHostViewBase* view = nullptr) const; |
+ |
// --------------------------------------------------------------------------- |
// The following methods are called by RWHVs on the tab to update their IME- |
// related state. |
@@ -108,6 +133,12 @@ class CONTENT_EXPORT TextInputManager { |
const gfx::Range& range, |
const std::vector<gfx::Rect>& character_bounds); |
+ // Updates the new text selection information for the |view|. |
+ void SelectionChanged(RenderWidgetHostViewBase* view, |
+ const base::string16& text, |
+ size_t offset, |
+ const gfx::Range& range); |
+ |
// Registers the given |view| for tracking its TextInputState. This is called |
// by any view which has updates in its TextInputState (whether tab's RWHV or |
// that of a child frame). The |view| must unregister itself before being |
@@ -177,6 +208,7 @@ class CONTENT_EXPORT TextInputManager { |
ViewMap<TextInputState> text_input_state_map_; |
ViewMap<SelectionRegion> selection_region_map_; |
ViewMap<CompositionRangeInfo> composition_range_info_map_; |
+ ViewMap<TextSelection> text_selection_map_; |
base::ObserverList<Observer> observer_list_; |