| Index: chrome/renderer/text_input_client_observer.cc
|
| diff --git a/chrome/renderer/text_input_client_observer.cc b/chrome/renderer/text_input_client_observer.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2b54b788bda0668514d5d6330ea712d568ec3a9b
|
| --- /dev/null
|
| +++ b/chrome/renderer/text_input_client_observer.cc
|
| @@ -0,0 +1,58 @@
|
| +// Copyright (c) 2011 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.
|
| +
|
| +#include "chrome/renderer/text_input_client_observer.h"
|
| +
|
| +#include "chrome/common/text_input_client_messages.h"
|
| +#include "chrome/renderer/render_view.h"
|
| +#include "ipc/ipc_message_macros.h"
|
| +#include "third_party/WebKit/Source/WebKit/chromium/public/mac/WebTextHelper.h"
|
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h"
|
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
|
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
|
| +#include "ui/gfx/rect.h"
|
| +
|
| +TextInputClientObserver::TextInputClientObserver(RenderView* render_view)
|
| + : RenderViewObserver(render_view) {
|
| +}
|
| +
|
| +TextInputClientObserver::~TextInputClientObserver() {
|
| +}
|
| +
|
| +bool TextInputClientObserver::OnMessageReceived(const IPC::Message& message) {
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP(TextInputClientObserver, message)
|
| + IPC_MESSAGE_HANDLER(TextInputClientMsg_CharacterIndexForPoint,
|
| + OnCharacterIndexForPoint)
|
| + IPC_MESSAGE_HANDLER(TextInputClientMsg_FirstRectForCharacterRange,
|
| + OnFirstRectForCharacterRange)
|
| + IPC_MESSAGE_HANDLER(TextInputClientMsg_StringForRange, OnStringForRange)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP()
|
| + return handled;
|
| +}
|
| +
|
| +WebKit::WebView* TextInputClientObserver::webview() {
|
| + return render_view()->webview();
|
| +}
|
| +
|
| +void TextInputClientObserver::OnCharacterIndexForPoint(gfx::Point point) {
|
| + WebKit::WebTextHelper helper(webview()->mainFrame());
|
| + uint index = helper.characterIndexForPoint(point.x(), point.y());
|
| + Send(new TextInputClientReplyMsg_GotCharacterIndexForPoint(routing_id(),
|
| + index));
|
| +}
|
| +
|
| +void TextInputClientObserver::OnFirstRectForCharacterRange(uint location,
|
| + uint length) {
|
| + WebKit::WebTextHelper helper(webview()->mainFrame());
|
| + gfx::Rect rect(helper.firstRectForRange(location, length));
|
| + Send(new TextInputClientReplyMsg_GotFirstRectForRange(routing_id(), rect));
|
| +}
|
| +
|
| +void TextInputClientObserver::OnStringForRange(uint location, uint length) {
|
| + WebKit::WebTextHelper helper(webview()->mainFrame());
|
| + WebKit::WebString webstring(helper.substringInRange(location, length));
|
| + Send(new TextInputClientReplyMsg_GotStringForRange(routing_id(), webstring));
|
| +}
|
|
|