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

Unified Diff: Source/web/WebViewImpl.cpp

Issue 177903010: Expose the selection root bounds in WebView. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: apply Tim's comments Created 6 years, 9 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: Source/web/WebViewImpl.cpp
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp
index 8836341267581ea88fede135a0af516a7b3bfb95..84bf1280003174f64e65eada81cd86d4a4fac294 100644
--- a/Source/web/WebViewImpl.cpp
+++ b/Source/web/WebViewImpl.cpp
@@ -2144,6 +2144,34 @@ bool WebViewImpl::selectionBounds(WebRect& anchor, WebRect& focus) const
return true;
}
+bool WebViewImpl::selectionRootBounds(WebRect& bounds) const
+{
+ const LocalFrame* frame = focusedWebCoreFrame();
+ if (!frame)
+ return false;
+
+ Element* root = frame->selection().rootEditableElementOrDocumentElement();
+ if (!root)
+ return false;
+
+ // If the selection is inside a form control, the root will be a <div> that
+ // behaves as the editor but we want to return the actual element's bounds.
+ // In practice, that means <textarea> and <input> controls that behave like
+ // a text field.
+ if (root->shadowHost()
+ && (root->shadowHost()->hasTagName(HTMLNames::textareaTag)
+ || (root->shadowHost()->hasTagName(HTMLNames::inputTag)
+ && toHTMLInputElement(root->shadowHost())->isText())))
+ root = root->shadowHost();
+
+ IntRect boundingBox = root->pixelSnappedBoundingBox();
+ boundingBox = root->document().frame()->view()->contentsToWindow(boundingBox);
+ boundingBox.scale(pageScaleFactor());
+ bounds = boundingBox;
+
+ return true;
+}
+
InputMethodContext* WebViewImpl::inputMethodContext()
{
if (!m_imeAcceptEvents)
« no previous file with comments | « Source/web/WebViewImpl.h ('k') | public/web/WebWidget.h » ('j') | public/web/WebWidget.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698