Index: content/renderer/text_input_client_observer.cc |
diff --git a/content/renderer/text_input_client_observer.cc b/content/renderer/text_input_client_observer.cc |
index 5ce95ff6093742ac828679019e22a9cbee097912..0211454c96ab62375d370672eccb16224c51b2fa 100644 |
--- a/content/renderer/text_input_client_observer.cc |
+++ b/content/renderer/text_input_client_observer.cc |
@@ -29,6 +29,8 @@ TextInputClientObserver::~TextInputClientObserver() { |
bool TextInputClientObserver::OnMessageReceived(const IPC::Message& message) { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(TextInputClientObserver, message) |
+ IPC_MESSAGE_HANDLER(TextInputClientMsg_StringAtPoint, |
+ OnStringAtPoint) |
IPC_MESSAGE_HANDLER(TextInputClientMsg_CharacterIndexForPoint, |
OnCharacterIndexForPoint) |
IPC_MESSAGE_HANDLER(TextInputClientMsg_FirstRectForCharacterRange, |
@@ -43,6 +45,21 @@ blink::WebView* TextInputClientObserver::webview() { |
return render_view()->GetWebView(); |
} |
+void TextInputClientObserver::OnStringAtPoint(gfx::Point point) { |
+#if defined(OS_MACOSX) |
+ blink::WebPoint baselinePoint; |
+ NSAttributedString* string = blink::WebSubstringUtil::attributedWordAtPoint( |
+ webview(), point, baselinePoint); |
+ |
+ scoped_ptr<const mac::AttributedStringCoder::EncodedString> encoded( |
+ mac::AttributedStringCoder::Encode(string)); |
+ Send(new TextInputClientReplyMsg_GotStringAtPoint( |
+ routing_id(), *encoded.get(), baselinePoint)); |
+#else |
+ NOTIMPLEMENTED(); |
+#endif |
+} |
+ |
void TextInputClientObserver::OnCharacterIndexForPoint(gfx::Point point) { |
blink::WebPoint web_point(point); |
size_t index = webview()->focusedFrame()->characterIndexForPoint(web_point); |