summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-10 22:18:27 +0000
committerjcivelli@chromium.org <jcivelli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-10 22:18:27 +0000
commitb556c2ea563365710107e788eea58d09239b9b50 (patch)
tree9069761166905b0bb2f7abc1002d81d61897fd84
parentf78087aa2c43bb7298d027078b7c353b77ad6e98 (diff)
downloadchromium_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
-rw-r--r--content/browser/renderer_host/render_view_host_impl.cc10
-rw-r--r--content/browser/renderer_host/render_view_host_impl.h4
-rw-r--r--content/browser/renderer_host/render_widget_host_view_aura.cc4
-rw-r--r--content/browser/renderer_host/render_widget_host_view_aura.h7
-rw-r--r--content/browser/renderer_host/render_widget_host_view_gtk.cc4
-rw-r--r--content/browser/renderer_host/render_widget_host_view_gtk.h7
-rw-r--r--content/browser/renderer_host/render_widget_host_view_mac.h7
-rw-r--r--content/browser/renderer_host/render_widget_host_view_mac.mm4
-rw-r--r--content/browser/renderer_host/render_widget_host_view_mac_unittest.mm14
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.cc4
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.h7
-rw-r--r--content/common/view_messages.h6
-rw-r--r--content/port/browser/render_widget_host_view_port.h8
-rw-r--r--content/renderer/render_widget.cc7
-rw-r--r--content/renderer/webplugin_delegate_proxy.cc4
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