Chromium Code Reviews| Index: third_party/WebKit/Source/web/mac/WebSubstringUtil.mm |
| diff --git a/third_party/WebKit/Source/web/mac/WebSubstringUtil.mm b/third_party/WebKit/Source/web/mac/WebSubstringUtil.mm |
| index c32db74669ef2c763a1399629e7f4166298cc9fb..a8fbc592b78a1835244ab48cde3bd5ebede1b584 100644 |
| --- a/third_party/WebKit/Source/web/mac/WebSubstringUtil.mm |
| +++ b/third_party/WebKit/Source/web/mac/WebSubstringUtil.mm |
| @@ -53,6 +53,9 @@ |
| #include "public/web/WebHitTestResult.h" |
| #include "public/web/WebRange.h" |
| #include "public/web/WebView.h" |
| +#include "public/web/WebWidget.h" |
| +#include "web/WebFrameWidgetBase.h" |
| +#include "web/WebFrameWidgetImpl.h" |
| #include "web/WebLocalFrameImpl.h" |
| #include "web/WebViewImpl.h" |
| @@ -136,9 +139,17 @@ WebPoint getBaselinePoint(FrameView* frameView, const EphemeralRange& range, NSA |
| namespace blink { |
| -NSAttributedString* WebSubstringUtil::attributedWordAtPoint(WebView* view, WebPoint point, WebPoint& baselinePoint) |
| +NSAttributedString* WebSubstringUtil::attributedWordAtPoint(WebView* view, WebWidget* widget, WebPoint point, WebPoint& baselinePoint) |
| { |
| - HitTestResult result = static_cast<WebViewImpl*>(view)->coreHitTestResultAt(point); |
| + WebViewImpl* viewImpl = static_cast<WebViewImpl*>(view); |
| + |
| + // Either this call is for a main frame's WebView or a local roots WebFrameWidgetImpl. |
| + if (!viewImpl->mainFrameImpl() && !widget) |
| + return nil; |
| + |
| + // Either we are in the main frame, where |widget| is a WebViewImpl equal to |view|, or, |widget| is a WebFrameWidget. |
| + HitTestResult result = widget->isWebView() ? viewImpl->coreHitTestResultAt(point) : static_cast<WebFrameWidgetImpl*>(widget)->coreHitTestResultAt(point); |
|
kenrb
2016/09/12 17:28:13
It looks like you dereference widget without first
EhsanK
2016/09/13 18:52:15
I believe neither |view| nor (specifically) |widge
|
| + |
| if (!result.innerNode()) |
| return nil; |
| LocalFrame* frame = result.innerNode()->document().frame(); |