diff options
author | jcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-10 22:18:27 +0000 |
---|---|---|
committer | jcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-10 22:18:27 +0000 |
commit | b556c2ea563365710107e788eea58d09239b9b50 (patch) | |
tree | 9069761166905b0bb2f7abc1002d81d61897fd84 | |
parent | f78087aa2c43bb7298d027078b7c353b77ad6e98 (diff) | |
download | chromium_src-b556c2ea563365710107e788eea58d09239b9b50.zip chromium_src-b556c2ea563365710107e788eea58d09239b9b50.tar.gz chromium_src-b556c2ea563365710107e788eea58d09239b9b50.tar.bz2 |
Adding selection text direction to SelectionBoundsChanged.
Adding the selection text direction to the notification that the selection
bounds have changed. This is used with touch UI.
BUG=138944
TEST=All tests should pass.
Review URL: https://chromiumcodereview.appspot.com/10855036
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151137 0039d316-1c4b-4281-b951-d872f2087c98
15 files changed, 70 insertions, 27 deletions
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc index 0fdcb4d..17b1885 100644 --- a/content/browser/renderer_host/render_view_host_impl.cc +++ b/content/browser/renderer_host/render_view_host_impl.cc @@ -1299,9 +1299,13 @@ void RenderViewHostImpl::OnMsgSelectionChanged(const string16& text, void RenderViewHostImpl::OnMsgSelectionBoundsChanged( const gfx::Rect& start_rect, - const gfx::Rect& end_rect) { - if (view_) - view_->SelectionBoundsChanged(start_rect, end_rect); + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) { + if (view_) { + view_->SelectionBoundsChanged(start_rect, start_direction, + end_rect, end_direction); + } } void RenderViewHostImpl::OnMsgRouteCloseEvent() { diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h index 5495984..d6d9ce9 100644 --- a/content/browser/renderer_host/render_view_host_impl.h +++ b/content/browser/renderer_host/render_view_host_impl.h @@ -497,7 +497,9 @@ class CONTENT_EXPORT RenderViewHostImpl size_t offset, const ui::Range& range); void OnMsgSelectionBoundsChanged(const gfx::Rect& start_rect, - const gfx::Rect& end_rect); + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction); void OnMsgPasteFromSelectionClipboard(); void OnMsgRouteCloseEvent(); void OnMsgRouteMessageEvent(const ViewMsg_PostMessage_Params& params); diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index 37bb8ef..309bb9f 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -458,7 +458,9 @@ void RenderWidgetHostViewAura::SetTooltipText(const string16& tooltip_text) { void RenderWidgetHostViewAura::SelectionBoundsChanged( const gfx::Rect& start_rect, - const gfx::Rect& end_rect) { + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) { if (selection_start_rect_ == start_rect && selection_end_rect_ == end_rect) return; diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h index 63f86d94..6d940e8 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.h +++ b/content/browser/renderer_host/render_widget_host_view_aura.h @@ -95,8 +95,11 @@ class RenderWidgetHostViewAura int error_code) OVERRIDE; virtual void Destroy() OVERRIDE; virtual void SetTooltipText(const string16& tooltip_text) OVERRIDE; - virtual void SelectionBoundsChanged(const gfx::Rect& start_rect, - const gfx::Rect& end_rect) OVERRIDE; + virtual void SelectionBoundsChanged( + const gfx::Rect& start_rect, + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) OVERRIDE; virtual BackingStore* AllocBackingStore(const gfx::Size& size) OVERRIDE; virtual void CopyFromCompositingSurface( const gfx::Rect& src_subrect, diff --git a/content/browser/renderer_host/render_widget_host_view_gtk.cc b/content/browser/renderer_host/render_widget_host_view_gtk.cc index eaafc1a..a27e41d 100644 --- a/content/browser/renderer_host/render_widget_host_view_gtk.cc +++ b/content/browser/renderer_host/render_widget_host_view_gtk.cc @@ -965,7 +965,9 @@ void RenderWidgetHostViewGtk::SelectionChanged(const string16& text, void RenderWidgetHostViewGtk::SelectionBoundsChanged( const gfx::Rect& start_rect, - const gfx::Rect& end_rect) { + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) { im_context_->UpdateCaretBounds(start_rect.Union(end_rect)); } diff --git a/content/browser/renderer_host/render_widget_host_view_gtk.h b/content/browser/renderer_host/render_widget_host_view_gtk.h index dd631b6..4752b9a 100644 --- a/content/browser/renderer_host/render_widget_host_view_gtk.h +++ b/content/browser/renderer_host/render_widget_host_view_gtk.h @@ -93,8 +93,11 @@ class CONTENT_EXPORT RenderWidgetHostViewGtk virtual void SelectionChanged(const string16& text, size_t offset, const ui::Range& range) OVERRIDE; - virtual void SelectionBoundsChanged(const gfx::Rect& start_rect, - const gfx::Rect& end_rect) OVERRIDE; + virtual void SelectionBoundsChanged( + const gfx::Rect& start_rect, + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) OVERRIDE; virtual BackingStore* AllocBackingStore(const gfx::Size& size) OVERRIDE; virtual void CopyFromCompositingSurface( const gfx::Rect& src_subrect, diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h index 7b83ad4..388fe1b 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.h +++ b/content/browser/renderer_host/render_widget_host_view_mac.h @@ -234,8 +234,11 @@ class RenderWidgetHostViewMac : public RenderWidgetHostViewBase { virtual void SetIsLoading(bool is_loading) OVERRIDE; virtual void TextInputStateChanged(ui::TextInputType state, bool can_compose_inline) OVERRIDE; - virtual void SelectionBoundsChanged(const gfx::Rect& start_rect, - const gfx::Rect& end_rect) OVERRIDE; + virtual void SelectionBoundsChanged( + const gfx::Rect& start_rect, + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) OVERRIDE; virtual void ImeCancelComposition() OVERRIDE; virtual void ImeCompositionRangeChanged( const ui::Range& range, diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm index 850fce3..90a7fea 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm @@ -603,7 +603,9 @@ void RenderWidgetHostViewMac::TextInputStateChanged( void RenderWidgetHostViewMac::SelectionBoundsChanged( const gfx::Rect& start_rect, - const gfx::Rect& end_rect) { + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) { if (start_rect == end_rect) caret_rect_ = start_rect; } diff --git a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm index 5ad0070..59ac443 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm @@ -251,7 +251,7 @@ TEST_F(RenderWidgetHostViewMacTest, Fullscreen) { EXPECT_TRUE(rwhv_mac_->pepper_fullscreen_window()); } -TEST_F(RenderWidgetHostViewMacTest, GetFirstRectForCharaacterRangeCaretCase) { +TEST_F(RenderWidgetHostViewMacTest, GetFirstRectForCharacterRangeCaretCase) { const string16 kDummyString = UTF8ToUTF16("hogehoge"); const size_t kDummyOffset = 0; @@ -261,7 +261,9 @@ TEST_F(RenderWidgetHostViewMacTest, GetFirstRectForCharaacterRangeCaretCase) { NSRect rect; NSRange actual_range; rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range); - rwhv_mac_->SelectionBoundsChanged(caret_rect, caret_rect); + rwhv_mac_->SelectionBoundsChanged( + caret_rect, WebKit::WebTextDirectionLeftToRight, + caret_rect, WebKit::WebTextDirectionLeftToRight); EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( caret_range.ToNSRange(), &rect, @@ -286,7 +288,9 @@ TEST_F(RenderWidgetHostViewMacTest, GetFirstRectForCharaacterRangeCaretCase) { caret_rect = gfx::Rect(20, 11, 0, 10); caret_range = ui::Range(1, 1); rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range); - rwhv_mac_->SelectionBoundsChanged(caret_rect, caret_rect); + rwhv_mac_->SelectionBoundsChanged( + caret_rect, WebKit::WebTextDirectionLeftToRight, + caret_rect, WebKit::WebTextDirectionLeftToRight); EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( caret_range.ToNSRange(), &rect, @@ -310,7 +314,9 @@ TEST_F(RenderWidgetHostViewMacTest, GetFirstRectForCharaacterRangeCaretCase) { // No caret. caret_range = ui::Range(1, 2); rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range); - rwhv_mac_->SelectionBoundsChanged(caret_rect, gfx::Rect(30, 11, 0, 10)); + rwhv_mac_->SelectionBoundsChanged( + caret_rect, WebKit::WebTextDirectionLeftToRight, + gfx::Rect(30, 11, 0, 10), WebKit::WebTextDirectionLeftToRight); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( ui::Range(0, 0).ToNSRange(), &rect, diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc index 5e60762..9b185b9 100644 --- a/content/browser/renderer_host/render_widget_host_view_win.cc +++ b/content/browser/renderer_host/render_widget_host_view_win.cc @@ -952,7 +952,9 @@ void RenderWidgetHostViewWin::TextInputStateChanged( void RenderWidgetHostViewWin::SelectionBoundsChanged( const gfx::Rect& start_rect, - const gfx::Rect& end_rect) { + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) { bool is_enabled = (text_input_type_ != ui::TEXT_INPUT_TYPE_NONE && text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD); // Only update caret position if the input method is enabled. diff --git a/content/browser/renderer_host/render_widget_host_view_win.h b/content/browser/renderer_host/render_widget_host_view_win.h index 1d88762..4cad1b3 100644 --- a/content/browser/renderer_host/render_widget_host_view_win.h +++ b/content/browser/renderer_host/render_widget_host_view_win.h @@ -174,8 +174,11 @@ class RenderWidgetHostViewWin virtual void SetIsLoading(bool is_loading) OVERRIDE; virtual void TextInputStateChanged(ui::TextInputType type, bool can_compose_inline) OVERRIDE; - virtual void SelectionBoundsChanged(const gfx::Rect& start_rect, - const gfx::Rect& end_rect) OVERRIDE; + virtual void SelectionBoundsChanged( + const gfx::Rect& start_rect, + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) OVERRIDE; virtual void ImeCancelComposition() OVERRIDE; virtual void ImeCompositionRangeChanged( const ui::Range& range, diff --git a/content/common/view_messages.h b/content/common/view_messages.h index 14aaf3e5..71c730a 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h @@ -1856,9 +1856,11 @@ IPC_MESSAGE_ROUTED3(ViewHostMsg_SelectionChanged, ui::Range /* selection range in the document */) // Notification that the selection bounds have changed. -IPC_MESSAGE_ROUTED2(ViewHostMsg_SelectionBoundsChanged, +IPC_MESSAGE_ROUTED4(ViewHostMsg_SelectionBoundsChanged, gfx::Rect /* start rect */, - gfx::Rect /* end rect */) + WebKit::WebTextDirection /* start text dir */, + gfx::Rect /* end rect */, + WebKit::WebTextDirection /* end text dir */) // Asks the browser to open the color chooser. IPC_MESSAGE_ROUTED2(ViewHostMsg_OpenColorChooser, diff --git a/content/port/browser/render_widget_host_view_port.h b/content/port/browser/render_widget_host_view_port.h index 761126e..bad0f8b 100644 --- a/content/port/browser/render_widget_host_view_port.h +++ b/content/port/browser/render_widget_host_view_port.h @@ -11,6 +11,7 @@ #include "content/common/content_export.h" #include "content/public/browser/render_widget_host_view.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebPopupType.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebTextDirection.h" #include "ui/base/ime/text_input_type.h" #include "ui/base/range/range.h" #include "ui/surface/transport_dib.h" @@ -135,9 +136,12 @@ class CONTENT_EXPORT RenderWidgetHostViewPort : public RenderWidgetHostView { // Notifies the View that the renderer selection bounds has changed. // |start_rect| and |end_rect| are the bounds end of the selection in the - // coordinate system of the render view. + // coordinate system of the render view. |start_direction| and |end_direction| + // indicates the direction at which the selection was made on touch devices. virtual void SelectionBoundsChanged(const gfx::Rect& start_rect, - const gfx::Rect& end_rect) {} + WebKit::WebTextDirection start_direction, + const gfx::Rect& end_rect, + WebKit::WebTextDirection end_direction) {} // Allocate a backing store for this view. virtual BackingStore* AllocBackingStore(const gfx::Size& size) = 0; diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc index 12b90a9..76a9540 100644 --- a/content/renderer/render_widget.cc +++ b/content/renderer/render_widget.cc @@ -1652,8 +1652,11 @@ void RenderWidget::UpdateSelectionBounds() { if (selection_start_rect_ != start_rect || selection_end_rect_ != end_rect) { selection_start_rect_ = start_rect; selection_end_rect_ = end_rect; - Send(new ViewHostMsg_SelectionBoundsChanged( - routing_id_, selection_start_rect_, selection_end_rect_)); + WebTextDirection start_dir = WebKit::WebTextDirectionLeftToRight; + WebTextDirection end_dir = WebKit::WebTextDirectionLeftToRight; + webwidget_->selectionTextDirection(start_dir, end_dir); + Send(new ViewHostMsg_SelectionBoundsChanged(routing_id_, + selection_start_rect_, start_dir, selection_end_rect_, end_dir)); } std::vector<gfx::Rect> character_bounds; diff --git a/content/renderer/webplugin_delegate_proxy.cc b/content/renderer/webplugin_delegate_proxy.cc index 2bf8dbd..8772324 100644 --- a/content/renderer/webplugin_delegate_proxy.cc +++ b/content/renderer/webplugin_delegate_proxy.cc @@ -1125,7 +1125,9 @@ void WebPluginDelegateProxy::OnNotifyIMEStatus(int input_type, true)); render_view_->Send(new ViewHostMsg_SelectionBoundsChanged( - render_view_->routing_id(), caret_rect, caret_rect)); + render_view_->routing_id(), + caret_rect, WebKit::WebTextDirectionLeftToRight, + caret_rect, WebKit::WebTextDirectionLeftToRight)); } #endif |