| 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 c18d1273294100df05dd1827ba804b91051524ba..94086f76a8494cfaa2f53ba15838956a59a7d021 100644
|
| --- a/content/renderer/text_input_client_observer.cc
|
| +++ b/content/renderer/text_input_client_observer.cc
|
| @@ -11,7 +11,10 @@
|
| #include "build/build_config.h"
|
| #include "content/common/text_input_client_messages.h"
|
| #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
|
| +#include "content/renderer/render_frame_impl.h"
|
| #include "content/renderer/render_view_impl.h"
|
| +#include "content/renderer/render_widget.h"
|
| +#include "ipc/ipc_message.h"
|
| #include "third_party/WebKit/public/platform/WebPoint.h"
|
| #include "third_party/WebKit/public/platform/WebRect.h"
|
| #include "third_party/WebKit/public/platform/WebString.h"
|
| @@ -22,13 +25,8 @@
|
|
|
| namespace content {
|
|
|
| -TextInputClientObserver::TextInputClientObserver(RenderViewImpl* render_view)
|
| -#if defined(ENABLE_PLUGINS)
|
| - : RenderViewObserver(render_view), render_view_impl_(render_view) {
|
| -#else
|
| - : RenderViewObserver(render_view) {
|
| -#endif
|
| -}
|
| +TextInputClientObserver::TextInputClientObserver(RenderFrameImpl* render_frame)
|
| + : render_frame_(render_frame) {}
|
|
|
| TextInputClientObserver::~TextInputClientObserver() {
|
| }
|
| @@ -48,24 +46,32 @@ bool TextInputClientObserver::OnMessageReceived(const IPC::Message& message) {
|
| return handled;
|
| }
|
|
|
| -void TextInputClientObserver::OnDestruct() {
|
| - delete this;
|
| +bool TextInputClientObserver::Send(IPC::Message* message) {
|
| + return GetRenderWidget()->Send(message);
|
| +}
|
| +
|
| +RenderWidget* TextInputClientObserver::GetRenderWidget() {
|
| + return render_frame_->GetRenderWidget();
|
| +}
|
| +
|
| +blink::WebView* TextInputClientObserver::GetWebView() {
|
| + return render_frame_->render_view()->webview();
|
| }
|
|
|
| -blink::WebView* TextInputClientObserver::webview() {
|
| - return render_view()->GetWebView();
|
| +int32_t TextInputClientObserver::GetRoutingID() {
|
| + return GetRenderWidget() ? GetRenderWidget()->routing_id() : MSG_ROUTING_NONE;
|
| }
|
|
|
| void TextInputClientObserver::OnStringAtPoint(gfx::Point point) {
|
| #if defined(OS_MACOSX)
|
| blink::WebPoint baselinePoint;
|
| NSAttributedString* string = blink::WebSubstringUtil::attributedWordAtPoint(
|
| - webview(), point, baselinePoint);
|
| + GetWebView(), GetRenderWidget()->webwidget(), point, baselinePoint);
|
|
|
| std::unique_ptr<const mac::AttributedStringCoder::EncodedString> encoded(
|
| mac::AttributedStringCoder::Encode(string));
|
| Send(new TextInputClientReplyMsg_GotStringAtPoint(
|
| - routing_id(), *encoded.get(), baselinePoint));
|
| + GetRoutingID(), *encoded.get(), baselinePoint));
|
| #else
|
| NOTIMPLEMENTED();
|
| #endif
|
| @@ -74,20 +80,22 @@ void TextInputClientObserver::OnStringAtPoint(gfx::Point point) {
|
| void TextInputClientObserver::OnCharacterIndexForPoint(gfx::Point point) {
|
| blink::WebPoint web_point(point);
|
| uint32_t index = static_cast<uint32_t>(
|
| - webview()->focusedFrame()->characterIndexForPoint(web_point));
|
| - Send(new TextInputClientReplyMsg_GotCharacterIndexForPoint(routing_id(),
|
| - index));
|
| + GetWebView()->focusedFrame()->characterIndexForPoint(web_point));
|
| + Send(new TextInputClientReplyMsg_GotCharacterIndexForPoint(GetRoutingID(),
|
| + index));
|
| }
|
|
|
| void TextInputClientObserver::OnFirstRectForCharacterRange(gfx::Range range) {
|
| gfx::Rect rect;
|
| #if defined(ENABLE_PLUGINS)
|
| - if (render_view_impl_->GetFocusedPepperPlugin()) {
|
| - rect = render_view_impl_->GetFocusedPepperPlugin()->GetCaretBounds();
|
| + PepperPluginInstanceImpl* focused_plugin =
|
| + render_frame_->render_view()->GetFocusedPepperPlugin();
|
| + if (focused_plugin) {
|
| + rect = focused_plugin->GetCaretBounds();
|
| } else
|
| #endif
|
| {
|
| - blink::WebLocalFrame* frame = webview()->focusedFrame();
|
| + blink::WebLocalFrame* frame = GetWebView()->focusedFrame();
|
| // TODO(yabinh): Null check should not be necessary.
|
| // See crbug.com/304341
|
| if (frame) {
|
| @@ -97,14 +105,14 @@ void TextInputClientObserver::OnFirstRectForCharacterRange(gfx::Range range) {
|
| rect = web_rect;
|
| }
|
| }
|
| - Send(new TextInputClientReplyMsg_GotFirstRectForRange(routing_id(), rect));
|
| + Send(new TextInputClientReplyMsg_GotFirstRectForRange(GetRoutingID(), rect));
|
| }
|
|
|
| void TextInputClientObserver::OnStringForRange(gfx::Range range) {
|
| #if defined(OS_MACOSX)
|
| blink::WebPoint baselinePoint;
|
| NSAttributedString* string = nil;
|
| - blink::WebLocalFrame* frame = webview()->focusedFrame();
|
| + blink::WebLocalFrame* frame = GetWebView()->focusedFrame();
|
| // TODO(yabinh): Null check should not be necessary.
|
| // See crbug.com/304341
|
| if (frame) {
|
| @@ -113,8 +121,8 @@ void TextInputClientObserver::OnStringForRange(gfx::Range range) {
|
| }
|
| std::unique_ptr<const mac::AttributedStringCoder::EncodedString> encoded(
|
| mac::AttributedStringCoder::Encode(string));
|
| - Send(new TextInputClientReplyMsg_GotStringForRange(routing_id(),
|
| - *encoded.get(), baselinePoint));
|
| + Send(new TextInputClientReplyMsg_GotStringForRange(
|
| + GetRoutingID(), *encoded.get(), baselinePoint));
|
| #else
|
| NOTIMPLEMENTED();
|
| #endif
|
|
|