Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Unified Diff: third_party/WebKit/Source/web/mac/WebSubstringUtil.mm

Issue 2278283002: Implement Mac Pop-up Dictionary for OOPIF. (Closed)
Patch Set: Rebased Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
« no previous file with comments | « third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp ('k') | third_party/WebKit/Source/web/tests/WebViewTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698