Skip to content
This repository was archived by the owner on Jun 24, 2022. It is now read-only.

Commit 379cd11

Browse files
[iPadOS] Unable to change focus between Google Docs windows by tapping
https://bugs.webkit.org/show_bug.cgi?id=213985 <rdar://problem/57083267> Reviewed by Darin Adler. Source/WebKit: When putting two Google Docs windows side-by-side on iPad, it's currently not possible to change the window to which keyboard input is routed. In native views (e.g. two side-by-side Notes windows), this is normally handled by `UITextMultiTapRecognizer`, which is part of the `UITextSelectionInteraction`; tapping to place the text selection calls into `-[UITextInteractionAssistant setFirstResponderIfNecessaryActivatingSelection:]`, which updates the key window if needed. This doesn't apply to Google Docs because they instead use touch events to drive their own "text interaction"-like behaviors instead of relying on system gesture recognizers, which we suppress due to the fact that the selection is within a hidden contenteditable. But even in non-hidden editable areas, the initial tap to focus an editable element still doesn't automatically make the window key, since the editable text interaction gestures are still inactive when tapping to focus an editable element. This means two taps are currently required to change the key window when focusing two Safari windows side-by-side: the first tap to focus the element (via the synthetic click gesture), and the second tap to trigger the editable text interaction tap gesture that is used to set the selection. To fix both of these issues, make some minor adjustments to call `-makeKeyWindow` from WebKit when focusing editable elements. See below for more details. Test: editing/selection/ios/become-key-window-when-focusing-editable-area.html * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _webTouchEventsRecognized:]): For the case in Google Docs where a hidden editable element is used and tapping in the page does not result in the element being refocused, we additionally need to make sure that we make our window key anyways. Limit this hack to tap gestures, and only when there is a hidden focused editable element to emulate platform behavior of updating the key window based on the text tap gesture. (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]): Make the content view's window key when focusing an editable element. (-[WKContentView hasHiddenContentEditable]): Consider the selection to be inside a hidden editable area if the `WebKit::FocusedElementIsTooSmall` flag is set as well. While this doesn't affect Google Docs, it does affect some other custom editors, such as Quip. (-[WKContentView mouseGestureRecognizerChanged:]): Additionally make the current window key when clicking in a hidden editable area with a trackpad on iOS. Tools: Add WebKitTestRunner support for being able to verify that a web view's window has become the key window. * DumpRenderTree/CMakeLists.txt: * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: * DumpRenderTree/UIScriptController.cpp: Added. (WTR::UIScriptController::setWindowIsKey): (WTR::UIScriptController::windowIsKey const): * TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl: * TestRunnerShared/UIScriptContext/UIScriptController.h: * TestRunnerShared/UIScriptContext/UIScriptControllerShared.cpp: Renamed from Tools/TestRunnerShared/UIScriptContext/UIScriptController.cpp. Rename `UIScriptController.cpp` (in TestRunnerShared) to `UIScriptControllerShared.cpp`, and introduce new DumpRenderTree and WebKitTestRunner versions of `UIScriptController.cpp` to house DumpRenderTree and WebKitTestRunner-specific UIScriptController method implementations. For now, these are just `windowIsKey` and `setWindowIsKey` below, which plumb into their respective platform- agnostic `PlatformWebView` methods in WebKitTestRunner. * WebKitTestRunner/UIScriptController.cpp: Added. (WTR::UIScriptController::windowIsKey const): (WTR::UIScriptController::setWindowIsKey): * WebKitTestRunner/CMakeLists.txt: * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: * WebKitTestRunner/ios/PlatformWebViewIOS.mm: (-[WebKitTestRunnerWindow becomeKeyWindow]): (-[WebKitTestRunnerWindow resignKeyWindow]): Update these two methods to update `m_windowIsKey` when the test runner's `UIWindow` becomes the key window (or stops being the key window). This is invoked when `-[UIWindow makeKeyWindow]` is called (e.g. from within WebKit code when tapping on an editable element). (WTR::PlatformWebView::setWindowIsKey): Avoid infinitely looping when setting windowIsKey to `true`, due to `-becomeKeyWindow` calling back into `setWindowIsKey`. LayoutTests: Add a new layout test to verify that tapping to focus a plain textarea causes the web view's window to become the key window, as well as tapping to focus a hidden contenteditable area, over a touch handler that prevents default. * editing/selection/ios/become-key-window-when-focusing-editable-area-expected.txt: Added. * editing/selection/ios/become-key-window-when-focusing-editable-area.html: Added. * resources/ui-helper.js: (window.UIHelper.setWindowIsKey): (window.UIHelper.windowIsKey): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@263979 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 2928fe5 commit 379cd11

File tree

17 files changed

+346
-21
lines changed

17 files changed

+346
-21
lines changed

LayoutTests/ChangeLog

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
2020-07-06 Wenson Hsieh <[email protected]>
2+
3+
[iPadOS] Unable to change focus between Google Docs windows by tapping
4+
https://bugs.webkit.org/show_bug.cgi?id=213985
5+
<rdar://problem/57083267>
6+
7+
Reviewed by Darin Adler.
8+
9+
Add a new layout test to verify that tapping to focus a plain textarea causes the web view's window to become
10+
the key window, as well as tapping to focus a hidden contenteditable area, over a touch handler that prevents
11+
default.
12+
13+
* editing/selection/ios/become-key-window-when-focusing-editable-area-expected.txt: Added.
14+
* editing/selection/ios/become-key-window-when-focusing-editable-area.html: Added.
15+
* resources/ui-helper.js:
16+
(window.UIHelper.setWindowIsKey):
17+
(window.UIHelper.windowIsKey):
18+
119
2020-07-06 Zalan Bujtas <[email protected]>
220

321
[Win] Unreviewed mozilla test gardening after r263855.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
This test verifies that focusing editable elements updates the key window. This test requires WebKitTestRunner.
2+
3+
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
4+
5+
6+
PASS Became key window after tapping on TEXTAREA
7+
PASS Became key window after tapping on BUTTON
8+
PASS successfullyParsed is true
9+
10+
TEST COMPLETE
11+
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
2+
<html>
3+
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
4+
<script src="../../../resources/js-test.js" type="text/javascript"></script>
5+
<script src="../../../resources/ui-helper.js" type="text/javascript"></script>
6+
<head>
7+
<style>
8+
#tiny-editor {
9+
width: 0.5px;
10+
height: 0.5px;
11+
position: absolute;
12+
top: 0;
13+
left: 0;
14+
overflow: hidden;
15+
outline: none;
16+
}
17+
18+
textarea, button {
19+
width: 280px;
20+
height: 50px;
21+
display: block;
22+
font-size: 20px;
23+
}
24+
</style>
25+
<script>
26+
jsTestIsAsync = true;
27+
28+
addEventListener("load", async () => {
29+
description("This test verifies that focusing editable elements updates the key window. This test requires WebKitTestRunner.");
30+
31+
const textarea = document.querySelector("textarea");
32+
const button = document.querySelector("button");
33+
34+
button.addEventListener("touchstart", (event) => {
35+
document.querySelector("#tiny-editor").focus();
36+
event.preventDefault();
37+
});
38+
39+
if (!window.testRunner)
40+
return;
41+
42+
for (let element of [textarea, button]) {
43+
await UIHelper.setWindowIsKey(false);
44+
await UIHelper.activateElementAndWaitForInputSession(element);
45+
while (true) {
46+
result = await UIHelper.windowIsKey();
47+
if (result)
48+
break;
49+
}
50+
testPassed(`Became key window after tapping on ${element.tagName}`);
51+
document.activeElement.blur();
52+
await UIHelper.waitForKeyboardToHide();
53+
element.remove();
54+
}
55+
finishJSTest();
56+
});
57+
</script>
58+
</head>
59+
<body>
60+
<div id="tiny-editor" contenteditable></div>
61+
<textarea>First, click here</textarea>
62+
<button>Then, click here</button>
63+
</body>
64+
</html>

LayoutTests/resources/ui-helper.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,6 +1188,20 @@ window.UIHelper = class UIHelper {
11881188
});
11891189
}
11901190

1191+
static setWindowIsKey(isKey)
1192+
{
1193+
const script = `uiController.windowIsKey = ${isKey}`;
1194+
return new Promise(resolve => testRunner.runUIScript(script, resolve));
1195+
}
1196+
1197+
static windowIsKey()
1198+
{
1199+
const script = "uiController.uiScriptComplete(uiController.windowIsKey)";
1200+
return new Promise(resolve => testRunner.runUIScript(script, (result) => {
1201+
resolve(result === "true");
1202+
}));
1203+
}
1204+
11911205
static waitForDoubleTapDelay()
11921206
{
11931207
const uiScript = `uiController.doAfterDoubleTapDelay(() => uiController.uiScriptComplete(""))`;

Source/WebKit/ChangeLog

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,51 @@
1+
2020-07-06 Wenson Hsieh <[email protected]>
2+
3+
[iPadOS] Unable to change focus between Google Docs windows by tapping
4+
https://bugs.webkit.org/show_bug.cgi?id=213985
5+
<rdar://problem/57083267>
6+
7+
Reviewed by Darin Adler.
8+
9+
When putting two Google Docs windows side-by-side on iPad, it's currently not possible to change the window to
10+
which keyboard input is routed. In native views (e.g. two side-by-side Notes windows), this is normally handled
11+
by `UITextMultiTapRecognizer`, which is part of the `UITextSelectionInteraction`; tapping to place the text
12+
selection calls into `-[UITextInteractionAssistant setFirstResponderIfNecessaryActivatingSelection:]`, which
13+
updates the key window if needed. This doesn't apply to Google Docs because they instead use touch events to
14+
drive their own "text interaction"-like behaviors instead of relying on system gesture recognizers, which we
15+
suppress due to the fact that the selection is within a hidden contenteditable.
16+
17+
But even in non-hidden editable areas, the initial tap to focus an editable element still doesn't automatically
18+
make the window key, since the editable text interaction gestures are still inactive when tapping to focus an
19+
editable element. This means two taps are currently required to change the key window when focusing two Safari
20+
windows side-by-side: the first tap to focus the element (via the synthetic click gesture), and the second tap
21+
to trigger the editable text interaction tap gesture that is used to set the selection.
22+
23+
To fix both of these issues, make some minor adjustments to call `-makeKeyWindow` from WebKit when focusing
24+
editable elements. See below for more details.
25+
26+
Test: editing/selection/ios/become-key-window-when-focusing-editable-area.html
27+
28+
* UIProcess/ios/WKContentViewInteraction.mm:
29+
(-[WKContentView _webTouchEventsRecognized:]):
30+
31+
For the case in Google Docs where a hidden editable element is used and tapping in the page does not result in
32+
the element being refocused, we additionally need to make sure that we make our window key anyways. Limit this
33+
hack to tap gestures, and only when there is a hidden focused editable element to emulate platform behavior of
34+
updating the key window based on the text tap gesture.
35+
36+
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):
37+
38+
Make the content view's window key when focusing an editable element.
39+
40+
(-[WKContentView hasHiddenContentEditable]):
41+
42+
Consider the selection to be inside a hidden editable area if the `WebKit::FocusedElementIsTooSmall` flag is set
43+
as well. While this doesn't affect Google Docs, it does affect some other custom editors, such as Quip.
44+
45+
(-[WKContentView mouseGestureRecognizerChanged:]):
46+
47+
Additionally make the current window key when clicking in a hidden editable area with a trackpad on iOS.
48+
149
2020-07-06 Sam Weinig <[email protected]>
250

351
Compile-time enable (but leave disabled at runtime by default) date/time input types on macOS to allow testing of cross platform (e.g. DOM) aspects of the controls

Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1496,6 +1496,9 @@ - (void)_webTouchEventsRecognized:(UIWebTouchEventsGestureRecognizer *)gestureRe
14961496

14971497
if (!_page->isScrollingOrZooming())
14981498
[self _resetPanningPreventionFlags];
1499+
1500+
if (nativeWebTouchEvent.isPotentialTap() && self.hasHiddenContentEditable && self._hasFocusedElement && !self.window.keyWindow)
1501+
[self.window makeKeyWindow];
14991502
}
15001503
#endif
15011504
}
@@ -5977,8 +5980,11 @@ - (void)_elementDidFocus:(const WebKit::FocusedElementInformation&)information u
59775980
[self reloadInputViews];
59785981
#endif
59795982

5980-
if (isSelectable)
5983+
if (isSelectable) {
59815984
[self _showKeyboard];
5985+
if (!self.window.keyWindow)
5986+
[self.window makeKeyWindow];
5987+
}
59825988

59835989
// The custom fixed position rect behavior is affected by -isFocusingElement, so if that changes we need to recompute rects.
59845990
if (editableChanged)
@@ -6621,7 +6627,7 @@ - (BOOL)supportsTextSelectionWithCharacterGranularity
66216627

66226628
- (BOOL)hasHiddenContentEditable
66236629
{
6624-
return _suppressSelectionAssistantReasons.contains(WebKit::EditableRootIsTransparentOrFullyClipped);
6630+
return _suppressSelectionAssistantReasons.containsAny({ WebKit::EditableRootIsTransparentOrFullyClipped, WebKit::FocusedElementIsTooSmall });
66256631
}
66266632

66276633
- (BOOL)_shouldSuppressSelectionCommands
@@ -8554,6 +8560,9 @@ - (void)mouseGestureRecognizerChanged:(WKMouseGestureRecognizer *)gestureRecogni
85548560
if (event->type() == WebKit::WebEvent::MouseDown)
85558561
_layerTreeTransactionIdAtLastInteractionStart = downcast<WebKit::RemoteLayerTreeDrawingAreaProxy>(*_page->drawingArea()).lastCommittedLayerTreeTransactionID();
85568562

8563+
if (event->type() == WebKit::WebEvent::MouseUp && self.hasHiddenContentEditable && self._hasFocusedElement && !self.window.keyWindow)
8564+
[self.window makeKeyWindow];
8565+
85578566
_page->handleMouseEvent(*event);
85588567
}
85598568

Tools/ChangeLog

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,47 @@
1+
2020-07-06 Wenson Hsieh <[email protected]>
2+
3+
[iPadOS] Unable to change focus between Google Docs windows by tapping
4+
https://bugs.webkit.org/show_bug.cgi?id=213985
5+
<rdar://problem/57083267>
6+
7+
Reviewed by Darin Adler.
8+
9+
Add WebKitTestRunner support for being able to verify that a web view's window has become the key window.
10+
11+
* DumpRenderTree/CMakeLists.txt:
12+
* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
13+
* DumpRenderTree/UIScriptController.cpp: Added.
14+
(WTR::UIScriptController::setWindowIsKey):
15+
(WTR::UIScriptController::windowIsKey const):
16+
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
17+
* TestRunnerShared/UIScriptContext/UIScriptController.h:
18+
* TestRunnerShared/UIScriptContext/UIScriptControllerShared.cpp: Renamed from Tools/TestRunnerShared/UIScriptContext/UIScriptController.cpp.
19+
20+
Rename `UIScriptController.cpp` (in TestRunnerShared) to `UIScriptControllerShared.cpp`, and introduce new
21+
DumpRenderTree and WebKitTestRunner versions of `UIScriptController.cpp` to house DumpRenderTree and
22+
WebKitTestRunner-specific UIScriptController method implementations.
23+
24+
For now, these are just `windowIsKey` and `setWindowIsKey` below, which plumb into their respective platform-
25+
agnostic `PlatformWebView` methods in WebKitTestRunner.
26+
27+
* WebKitTestRunner/UIScriptController.cpp: Added.
28+
(WTR::UIScriptController::windowIsKey const):
29+
(WTR::UIScriptController::setWindowIsKey):
30+
* WebKitTestRunner/CMakeLists.txt:
31+
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
32+
* WebKitTestRunner/ios/PlatformWebViewIOS.mm:
33+
(-[WebKitTestRunnerWindow becomeKeyWindow]):
34+
(-[WebKitTestRunnerWindow resignKeyWindow]):
35+
36+
Update these two methods to update `m_windowIsKey` when the test runner's `UIWindow` becomes the key window (or
37+
stops being the key window). This is invoked when `-[UIWindow makeKeyWindow]` is called (e.g. from within WebKit
38+
code when tapping on an editable element).
39+
40+
(WTR::PlatformWebView::setWindowIsKey):
41+
42+
Avoid infinitely looping when setting windowIsKey to `true`, due to `-becomeKeyWindow` calling back into
43+
`setWindowIsKey`.
44+
145
2020-07-06 Zhifei Fang <[email protected]>
246

347
[result database] Empty search will return too many tests to display

Tools/DumpRenderTree/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ set(DumpRenderTree_SOURCES
99
${WebKitTestRunner_SHARED_DIR}/Bindings/JSWrapper.cpp
1010

1111
${WebKitTestRunner_UISCRIPTCONTEXT_DIR}/UIScriptContext.cpp
12-
${WebKitTestRunner_UISCRIPTCONTEXT_DIR}/UIScriptController.cpp
12+
${WebKitTestRunner_UISCRIPTCONTEXT_DIR}/UIScriptControllerShared.cpp
1313

1414
AccessibilityController.cpp
1515
AccessibilityTextMarker.cpp
@@ -21,6 +21,7 @@ set(DumpRenderTree_SOURCES
2121
PixelDumpSupport.cpp
2222
TestOptions.cpp
2323
TestRunner.cpp
24+
UIScriptController.cpp
2425
WorkQueue.cpp
2526
)
2627

Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
/* Begin PBXBuildFile section */
4949
00F048541A0C3C9A000244DB /* URLRedirect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00F048531A0C3C9A000244DB /* URLRedirect.cpp */; };
5050
0F18E6EC1D6B9C070027E547 /* UIScriptContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F18E6E81D6B9C070027E547 /* UIScriptContext.cpp */; };
51-
0F18E6ED1D6B9C070027E547 /* UIScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F18E6EA1D6B9C070027E547 /* UIScriptController.cpp */; };
5251
0F18E7061D6BA0230027E547 /* JSUIScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F18E7041D6BA0230027E547 /* JSUIScriptController.cpp */; };
5352
0F18E70D1D6BAC8C0027E547 /* UIScriptControllerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F18E70C1D6BAC8C0027E547 /* UIScriptControllerIOS.mm */; };
5453
0F18E70F1D6BACB60027E547 /* UIScriptControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F18E70E1D6BACB60027E547 /* UIScriptControllerMac.mm */; };
@@ -157,6 +156,8 @@
157156
C23EA2081BC9F05100C980B7 /* FontWithFeatures.otf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = C23EA2061BC9EABA00C980B7 /* FontWithFeatures.otf */; };
158157
C23EA2091BC9F05100C980B7 /* FontWithFeatures.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = C23EA2071BC9EABA00C980B7 /* FontWithFeatures.ttf */; };
159158
E1B7816511AF31B7007E1BC2 /* MockGeolocationProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1B7808711AF1669007E1BC2 /* MockGeolocationProvider.mm */; };
159+
F445C68624B2789D00790440 /* UIScriptControllerShared.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F445C68524B2788F00790440 /* UIScriptControllerShared.cpp */; };
160+
F445C68924B278EC00790440 /* UIScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F445C68824B278EC00790440 /* UIScriptController.cpp */; };
160161
F44A531D21B89A4D00DBB99C /* ClassMethodSwizzler.mm in Sources */ = {isa = PBXBuildFile; fileRef = F44A531A21B89A4400DBB99C /* ClassMethodSwizzler.mm */; };
161162
F44A531E21B89A5000DBB99C /* InstanceMethodSwizzler.mm in Sources */ = {isa = PBXBuildFile; fileRef = F44A531C21B89A4500DBB99C /* InstanceMethodSwizzler.mm */; };
162163
F484C223237B27D600BF77D0 /* UIScriptControllerCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = F484C222237B27D600BF77D0 /* UIScriptControllerCocoa.mm */; };
@@ -246,7 +247,6 @@
246247
00F048531A0C3C9A000244DB /* URLRedirect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = URLRedirect.cpp; sourceTree = "<group>"; };
247248
0F18E6E81D6B9C070027E547 /* UIScriptContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UIScriptContext.cpp; path = ../TestRunnerShared/UIScriptContext/UIScriptContext.cpp; sourceTree = "<group>"; };
248249
0F18E6E91D6B9C070027E547 /* UIScriptContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UIScriptContext.h; path = ../TestRunnerShared/UIScriptContext/UIScriptContext.h; sourceTree = "<group>"; };
249-
0F18E6EA1D6B9C070027E547 /* UIScriptController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UIScriptController.cpp; path = ../TestRunnerShared/UIScriptContext/UIScriptController.cpp; sourceTree = "<group>"; };
250250
0F18E6EB1D6B9C070027E547 /* UIScriptController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UIScriptController.h; path = ../TestRunnerShared/UIScriptContext/UIScriptController.h; sourceTree = "<group>"; };
251251
0F18E6F01D6B9C240027E547 /* UIScriptController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = UIScriptController.idl; path = ../TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl; sourceTree = "<group>"; };
252252
0F18E6F11D6B9C640027E547 /* DerivedSources.make */ = {isa = PBXFileReference; lastKnownFileType = text; path = DerivedSources.make; sourceTree = "<group>"; };
@@ -428,6 +428,8 @@
428428
C23EA2071BC9EABA00C980B7 /* FontWithFeatures.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontWithFeatures.ttf; path = fonts/FontWithFeatures.ttf; sourceTree = "<group>"; };
429429
E1B7808511AF1643007E1BC2 /* MockGeolocationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MockGeolocationProvider.h; path = mac/MockGeolocationProvider.h; sourceTree = "<group>"; };
430430
E1B7808711AF1669007E1BC2 /* MockGeolocationProvider.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MockGeolocationProvider.mm; path = mac/MockGeolocationProvider.mm; sourceTree = "<group>"; };
431+
F445C68524B2788F00790440 /* UIScriptControllerShared.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = UIScriptControllerShared.cpp; path = ../TestRunnerShared/UIScriptContext/UIScriptControllerShared.cpp; sourceTree = "<group>"; };
432+
F445C68824B278EC00790440 /* UIScriptController.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = UIScriptController.cpp; sourceTree = "<group>"; };
431433
F44A531921B89A4400DBB99C /* InstanceMethodSwizzler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstanceMethodSwizzler.h; sourceTree = "<group>"; };
432434
F44A531A21B89A4400DBB99C /* ClassMethodSwizzler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ClassMethodSwizzler.mm; sourceTree = "<group>"; };
433435
F44A531B21B89A4400DBB99C /* ClassMethodSwizzler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClassMethodSwizzler.h; sourceTree = "<group>"; };
@@ -533,8 +535,9 @@
533535
0F6A0E001D6E0F8A00F1C9A8 /* mac */,
534536
0F18E6E81D6B9C070027E547 /* UIScriptContext.cpp */,
535537
0F18E6E91D6B9C070027E547 /* UIScriptContext.h */,
536-
0F18E6EA1D6B9C070027E547 /* UIScriptController.cpp */,
538+
F445C68824B278EC00790440 /* UIScriptController.cpp */,
537539
0F18E6EB1D6B9C070027E547 /* UIScriptController.h */,
540+
F445C68524B2788F00790440 /* UIScriptControllerShared.cpp */,
538541
);
539542
name = UIScriptContext;
540543
sourceTree = "<group>";
@@ -1230,10 +1233,11 @@
12301233
BCA18B490C9B02C400114369 /* TextInputControllerMac.m in Sources */,
12311234
BCA18B6A0C9B08C200114369 /* UIDelegate.mm in Sources */,
12321235
0F18E6EC1D6B9C070027E547 /* UIScriptContext.cpp in Sources */,
1233-
0F18E6ED1D6B9C070027E547 /* UIScriptController.cpp in Sources */,
1236+
F445C68924B278EC00790440 /* UIScriptController.cpp in Sources */,
12341237
F484C223237B27D600BF77D0 /* UIScriptControllerCocoa.mm in Sources */,
12351238
0F18E70D1D6BAC8C0027E547 /* UIScriptControllerIOS.mm in Sources */,
12361239
0F18E70F1D6BACB60027E547 /* UIScriptControllerMac.mm in Sources */,
1240+
F445C68624B2789D00790440 /* UIScriptControllerShared.cpp in Sources */,
12371241
BC9D90240C97472E0099A4A3 /* WorkQueue.cpp in Sources */,
12381242
BCA18B260C9B015C00114369 /* WorkQueueItemMac.mm in Sources */,
12391243
);

0 commit comments

Comments
 (0)