<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[277352] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/277352">277352</a></dd>
<dt>Author</dt> <dd>wenson_hsieh@apple.com</dd>
<dt>Date</dt> <dd>2021-05-11 20:46:21 -0700 (Tue, 11 May 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS] Mail compose web view doesn't scroll to reveal the selection in certain configurations
https://bugs.webkit.org/show_bug.cgi?id=225675
rdar://77095886

Reviewed by Tim Horton.

Source/WebKit:

Currently when computing input view bounds upon receiving `UIKeyboardDidChangeFrameNotification`, we attempt to
map the on-screen bounds of the keyboard to the window's coordinate space, and save the result in an ivar in
`WKWebView`, `_inputViewBounds`. The keyboard frame (which corresponds to `UIKeyboardFrameEndUserInfoKey` in the
notification's userInfo dictionary) is given to us in screen coordinates, and we currently pass this through
`-convertRect:fromWindow:`, with a nil `UIWindow`.

However, this results in mapping the rect from the coordinate space of the window's `UIWindowScene` rather than
the window screen. In shipping Mail on iOS, this doesn't matter because the window containing the compose web
view shares the same coordinate space as the screen. In some other configurations of MobileMail, however, the
compose web view appears inside its own `UIWindow`. This causes the above coordinate conversion logic to fail,
since we attempt to map a rect given to us in screen coordinates from the compose web view's window scene's
coordinate space, instead of the screen's coordinate space.

We fix this by using `-convertRect:fromCoordinateSpace:` instead, and explicitly pass in
`self.window.screen.coordinateSpace`.

* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _updateScrollViewForTransaction:]):
(-[WKWebView _zoomToFocusRect:selectionRect:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
(-[WKWebView _contentRectForUserInteraction]):
(-[WKWebView _updateVisibleContentRects]):
(-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):

Rename `_inputViewBounds` to `_inputViewBoundsInWindow` for clarity.

* UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
* UIProcess/API/ios/WKWebViewTestingIOS.mm:
(-[WKWebView _inputViewBoundsInWindow]):
(-[WKWebView _inputViewBounds]): Deleted.

Tools:

Rename some testing SPI. See WebKit/ChangeLog for more information.

* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptControllerIOS::inputViewBounds const):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPICocoaWKWebViewInternalh">trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIiosWKWebViewIOSmm">trunk/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIiosWKWebViewPrivateForTestingIOSh">trunk/Source/WebKit/UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIiosWKWebViewTestingIOSmm">trunk/Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsWebKitTestRunneriosUIScriptControllerIOSmm">trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (277351 => 277352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog    2021-05-12 03:40:45 UTC (rev 277351)
+++ trunk/Source/WebKit/ChangeLog       2021-05-12 03:46:21 UTC (rev 277352)
</span><span class="lines">@@ -1,3 +1,42 @@
</span><ins>+2021-05-11  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        [iOS] Mail compose web view doesn't scroll to reveal the selection in certain configurations
+        https://bugs.webkit.org/show_bug.cgi?id=225675
+        rdar://77095886
+
+        Reviewed by Tim Horton.
+
+        Currently when computing input view bounds upon receiving `UIKeyboardDidChangeFrameNotification`, we attempt to
+        map the on-screen bounds of the keyboard to the window's coordinate space, and save the result in an ivar in
+        `WKWebView`, `_inputViewBounds`. The keyboard frame (which corresponds to `UIKeyboardFrameEndUserInfoKey` in the
+        notification's userInfo dictionary) is given to us in screen coordinates, and we currently pass this through
+        `-convertRect:fromWindow:`, with a nil `UIWindow`.
+
+        However, this results in mapping the rect from the coordinate space of the window's `UIWindowScene` rather than
+        the window screen. In shipping Mail on iOS, this doesn't matter because the window containing the compose web
+        view shares the same coordinate space as the screen. In some other configurations of MobileMail, however, the
+        compose web view appears inside its own `UIWindow`. This causes the above coordinate conversion logic to fail,
+        since we attempt to map a rect given to us in screen coordinates from the compose web view's window scene's
+        coordinate space, instead of the screen's coordinate space.
+
+        We fix this by using `-convertRect:fromCoordinateSpace:` instead, and explicitly pass in
+        `self.window.screen.coordinateSpace`.
+
+        * UIProcess/API/Cocoa/WKWebViewInternal.h:
+        * UIProcess/API/ios/WKWebViewIOS.mm:
+        (-[WKWebView _updateScrollViewForTransaction:]):
+        (-[WKWebView _zoomToFocusRect:selectionRect:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
+        (-[WKWebView _contentRectForUserInteraction]):
+        (-[WKWebView _updateVisibleContentRects]):
+        (-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):
+
+        Rename `_inputViewBounds` to `_inputViewBoundsInWindow` for clarity.
+
+        * UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
+        * UIProcess/API/ios/WKWebViewTestingIOS.mm:
+        (-[WKWebView _inputViewBoundsInWindow]):
+        (-[WKWebView _inputViewBounds]): Deleted.
+
</ins><span class="cx"> 2021-05-11  Simon Fraser  <simon.fraser@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Crash in DisplayLink::incrementFullSpeedRequestClientCount()
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessAPICocoaWKWebViewInternalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h (277351 => 277352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h      2021-05-12 03:40:45 UTC (rev 277351)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h 2021-05-12 03:46:21 UTC (rev 277352)
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx">     Optional<WebCore::FloatSize> _lastSentViewLayoutSize;
</span><span class="cx">     Optional<CGSize> _maximumUnobscuredSizeOverride;
</span><span class="cx">     Optional<WebCore::FloatSize> _lastSentMaximumUnobscuredSize;
</span><del>-    CGRect _inputViewBounds;
</del><ins>+    CGRect _inputViewBoundsInWindow;
</ins><span class="cx"> 
</span><span class="cx">     CGFloat _viewportMetaTagWidth;
</span><span class="cx">     BOOL _viewportMetaTagWidthWasExplicit;
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessAPIiosWKWebViewIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm (277351 => 277352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm    2021-05-12 03:40:45 UTC (rev 277351)
+++ trunk/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm       2021-05-12 03:46:21 UTC (rev 277352)
</span><span class="lines">@@ -807,7 +807,7 @@
</span><span class="cx">     [_scrollView setMaximumZoomScale:layerTreeTransaction.maximumScaleFactor()];
</span><span class="cx">     [_scrollView _setZoomEnabledInternal:layerTreeTransaction.allowsUserScaling()];
</span><span class="cx"> 
</span><del>-    bool hasDockedInputView = !CGRectIsEmpty(_inputViewBounds);
</del><ins>+    bool hasDockedInputView = !CGRectIsEmpty(_inputViewBoundsInWindow);
</ins><span class="cx">     bool isZoomed = layerTreeTransaction.pageScaleFactor() > layerTreeTransaction.initialScaleFactor();
</span><span class="cx"> 
</span><span class="cx">     bool scrollingNeededToRevealUI = false;
</span><span class="lines">@@ -1242,7 +1242,7 @@
</span><span class="cx"> 
</span><span class="cx">     CGRect unobscuredScrollViewRectInWebViewCoordinates = UIEdgeInsetsInsetRect([self bounds], _obscuredInsets);
</span><span class="cx">     CGRect visibleScrollViewBoundsInWebViewCoordinates = CGRectIntersection(unobscuredScrollViewRectInWebViewCoordinates, [fullScreenView convertRect:[fullScreenView bounds] toView:self]);
</span><del>-    CGRect formAssistantFrameInWebViewCoordinates = [window convertRect:_inputViewBounds toView:self];
</del><ins>+    CGRect formAssistantFrameInWebViewCoordinates = [window convertRect:_inputViewBoundsInWindow toView:self];
</ins><span class="cx">     CGRect intersectionBetweenScrollViewAndFormAssistant = CGRectIntersection(visibleScrollViewBoundsInWebViewCoordinates, formAssistantFrameInWebViewCoordinates);
</span><span class="cx">     CGSize visibleSize = visibleScrollViewBoundsInWebViewCoordinates.size;
</span><span class="cx"> 
</span><span class="lines">@@ -1881,7 +1881,7 @@
</span><span class="cx"> {
</span><span class="cx">     // FIXME: handle split keyboard.
</span><span class="cx">     UIEdgeInsets obscuredInsets = _obscuredInsets;
</span><del>-    obscuredInsets.bottom = std::max(_obscuredInsets.bottom, _inputViewBounds.size.height);
</del><ins>+    obscuredInsets.bottom = std::max(_obscuredInsets.bottom, _inputViewBoundsInWindow.size.height);
</ins><span class="cx">     CGRect unobscuredRect = UIEdgeInsetsInsetRect(self.bounds, obscuredInsets);
</span><span class="cx">     return [self convertRect:unobscuredRect toView:self._currentContentView];
</span><span class="cx"> }
</span><span class="lines">@@ -2141,7 +2141,7 @@
</span><span class="cx">         unobscuredRectInScrollViewCoordinates:unobscuredRect
</span><span class="cx">         obscuredInsets:_obscuredInsets
</span><span class="cx">         unobscuredSafeAreaInsets:[self _computedUnobscuredSafeAreaInset]
</span><del>-        inputViewBounds:_inputViewBounds
</del><ins>+        inputViewBounds:_inputViewBoundsInWindow
</ins><span class="cx">         scale:scaleFactor minimumScale:[_scrollView minimumZoomScale]
</span><span class="cx">         viewStability:viewStability
</span><span class="cx">         enclosedInScrollableAncestorView:scrollViewCanScroll([self _scroller])
</span><span class="lines">@@ -2298,20 +2298,23 @@
</span><span class="cx">     if (!endFrameValue)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    auto previousInputViewBounds = _inputViewBounds;
</del><ins>+    auto previousInputViewBounds = _inputViewBoundsInWindow;
</ins><span class="cx">     BOOL selectionWasVisible = self._selectionRectIsFullyVisibleAndNonEmpty;
</span><span class="cx"> 
</span><del>-    // The keyboard rect is always in screen coordinates. In the view services case the window does not
-    // have the interface orientation rotation transformation; its host does. So, it makes no sense to
-    // clip the keyboard rect against its screen.
-    if ([[self window] _isHostedInAnotherProcess])
-        _inputViewBounds = [self.window convertRect:[endFrameValue CGRectValue] fromWindow:nil];
-    else
-        _inputViewBounds = [self.window convertRect:CGRectIntersection([endFrameValue CGRectValue], self.window.screen.bounds) fromWindow:nil];
</del><ins>+    _inputViewBoundsInWindow = ([&] {
+        if (UIPeripheralHost.sharedInstance.isUndocked)
+            return CGRectZero;
</ins><span class="cx"> 
</span><del>-    if ([[UIPeripheralHost sharedInstance] isUndocked])
-        _inputViewBounds = CGRectZero;
</del><ins>+        auto keyboardFrameInScreen = endFrameValue.CGRectValue;
+        // The keyboard rect is always in screen coordinates. In the view services case the window does not
+        // have the interface orientation rotation transformation; its host does. So, it makes no sense to
+        // clip the keyboard rect against its screen.
+        if (!self.window._isHostedInAnotherProcess)
+            keyboardFrameInScreen = CGRectIntersection(keyboardFrameInScreen, self.window.screen.bounds);
</ins><span class="cx"> 
</span><ins>+        return [self.window convertRect:keyboardFrameInScreen fromCoordinateSpace:self.window.screen.coordinateSpace];
+    })();
+
</ins><span class="cx">     if (adjustScrollView) {
</span><span class="cx">         CGFloat bottomInsetBeforeAdjustment = [_scrollView contentInset].bottom;
</span><span class="cx">         SetForScope<BOOL> insetAdjustmentGuard(_currentlyAdjustingScrollViewInsetsForKeyboard, YES);
</span><span class="lines">@@ -2324,7 +2327,7 @@
</span><span class="cx">             _totalScrollViewBottomInsetAdjustmentForKeyboard += bottomInsetAfterAdjustment - bottomInsetBeforeAdjustment;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (selectionWasVisible && [_contentView _hasFocusedElement] && !CGRectIsEmpty(previousInputViewBounds) && !CGRectIsEmpty(_inputViewBounds) && !CGRectEqualToRect(previousInputViewBounds, _inputViewBounds))
</del><ins>+    if (selectionWasVisible && [_contentView _hasFocusedElement] && !CGRectIsEmpty(previousInputViewBounds) && !CGRectIsEmpty(_inputViewBoundsInWindow) && !CGRectEqualToRect(previousInputViewBounds, _inputViewBoundsInWindow))
</ins><span class="cx">         [self _scrollToAndRevealSelectionIfNeeded];
</span><span class="cx"> 
</span><span class="cx">     [self _scheduleVisibleContentRectUpdate];
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessAPIiosWKWebViewPrivateForTestingIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h (277351 => 277352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h    2021-05-12 03:40:45 UTC (rev 277351)
+++ trunk/Source/WebKit/UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h       2021-05-12 03:46:21 UTC (rev 277352)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> @property (nonatomic, readonly) NSString *selectFormPopoverTitle;
</span><span class="cx"> @property (nonatomic, readonly) NSString *formInputLabel;
</span><span class="cx"> @property (nonatomic, readonly) NSArray<NSValue *> *_uiTextSelectionRects;
</span><del>-@property (nonatomic, readonly) CGRect _inputViewBounds;
</del><ins>+@property (nonatomic, readonly) CGRect _inputViewBoundsInWindow;
</ins><span class="cx"> @property (nonatomic, readonly) NSString *_scrollingTreeAsText;
</span><span class="cx"> @property (nonatomic, readonly) NSNumber *_stableStateOverride;
</span><span class="cx"> @property (nonatomic, readonly) CGRect _dragCaretRect;
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessAPIiosWKWebViewTestingIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm (277351 => 277352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm     2021-05-12 03:40:45 UTC (rev 277351)
+++ trunk/Source/WebKit/UIProcess/API/ios/WKWebViewTestingIOS.mm        2021-05-12 03:46:21 UTC (rev 277352)
</span><span class="lines">@@ -203,9 +203,9 @@
</span><span class="cx">     return [_contentView formInputLabel];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (CGRect)_inputViewBounds
</del><ins>+- (CGRect)_inputViewBoundsInWindow
</ins><span class="cx"> {
</span><del>-    return _inputViewBounds;
</del><ins>+    return _inputViewBoundsInWindow;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (NSArray<NSValue *> *)_uiTextSelectionRects
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (277351 => 277352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog    2021-05-12 03:40:45 UTC (rev 277351)
+++ trunk/Tools/ChangeLog       2021-05-12 03:46:21 UTC (rev 277352)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2021-05-11  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        [iOS] Mail compose web view doesn't scroll to reveal the selection in certain configurations
+        https://bugs.webkit.org/show_bug.cgi?id=225675
+        rdar://77095886
+
+        Reviewed by Tim Horton.
+
+        Rename some testing SPI. See WebKit/ChangeLog for more information.
+
+        * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
+        (WTR::UIScriptControllerIOS::inputViewBounds const):
+
</ins><span class="cx"> 2021-05-11  Commit Queue  <commit-queue@webkit.org>
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, reverting r277319.
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunneriosUIScriptControllerIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm (277351 => 277352)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm        2021-05-12 03:40:45 UTC (rev 277351)
+++ trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm   2021-05-12 03:46:21 UTC (rev 277352)
</span><span class="lines">@@ -849,7 +849,7 @@
</span><span class="cx"> 
</span><span class="cx"> JSObjectRef UIScriptControllerIOS::inputViewBounds() const
</span><span class="cx"> {
</span><del>-    return JSValueToObject(m_context->jsContext(), [JSValue valueWithObject:toNSDictionary(webView()._inputViewBounds) inContext:[JSContext contextWithJSGlobalContextRef:m_context->jsContext()]].JSValueRef, nullptr);
</del><ins>+    return JSValueToObject(m_context->jsContext(), [JSValue valueWithObject:toNSDictionary(webView()._inputViewBoundsInWindow) inContext:[JSContext contextWithJSGlobalContextRef:m_context->jsContext()]].JSValueRef, nullptr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSRetainPtr<JSStringRef> UIScriptControllerIOS::scrollingTreeAsText() const
</span></span></pre>
</div>
</div>

</body>
</html>