Skip to content

Commit

Permalink
Add additional testing for NSTextSelectionRect/NSTextPlaceholder.
Browse files Browse the repository at this point in the history
rdar://127265259
https://bugs.webkit.org/show_bug.cgi?id=273461

Reviewed by Aditya Keerthi.

Additional testing of NSTextSelectionRect and the rect property
ensure that we implemented this correctly.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/TextPlaceholderTests.mm:
(TEST(NSTextPlaceholder, InsertTextPlaceholder)):
(TEST(NSTextPlaceholder, InsertAndRemoveTextPlaceholderWithoutIncomingText)):
(TEST(NSTextPlaceholder, InsertAndRemoveTextPlaceholderWithIncomingText)):

Canonical link: https://commits.webkit.org/278301@main
  • Loading branch information
megangardner committed May 3, 2024
1 parent c368b1b commit 69188a6
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions Tools/TestWebKitAPI/Tests/WebKitCocoa/TextPlaceholderTests.mm
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,16 @@

#if PLATFORM(MAC)
#import <pal/spi/mac/NSTextInputContextSPI.h>

// FIXME: Remove this after rdar://126379463 lands
@interface WKTextSelectionRect : NSObject

@property (nonatomic, readonly) NSRect rect;
@property (nonatomic, readonly) NSWritingDirection writingDirection;
@property (nonatomic, readonly) BOOL isVertical;
@property (nonatomic, readonly) NSAffineTransform *transform;

@end
#endif

RetainPtr<WKWebView> createWebViewForNSTextPlaceholder()
Expand All @@ -55,6 +65,7 @@
[(id<NSTextInputClient_Async_staging_126696059>)webView.get() insertTextPlaceholderWithSize:CGSizeMake(50, 100) completionHandler:^(NSTextPlaceholder * placeholder) {
EXPECT_WK_STREQ("<div style=\"display: inline-block; vertical-align: top; visibility: hidden !important; width: 50px; height: 100px;\"></div>Test<script>document.body.focus()</script>", [webView stringByEvaluatingJavaScript:@"document.body.innerHTML"]);
isDone = true;
EXPECT_TRUE(CGSizeEqualToSize([(WKTextSelectionRect *)[[placeholder rects] firstObject] rect].size, CGSizeMake(50, 100)));
}];
TestWebKitAPI::Util::run(&isDone);
}
Expand All @@ -66,6 +77,7 @@
__block bool isDone = false;
[(id<NSTextInputClient_Async_staging_126696059>)webView.get() insertTextPlaceholderWithSize:CGSizeMake(50, 100) completionHandler:^(NSTextPlaceholder *placeholder) {
EXPECT_WK_STREQ("<div style=\"display: inline-block; vertical-align: top; visibility: hidden !important; width: 50px; height: 100px;\"></div>Test<script>document.body.focus()</script>", [webView stringByEvaluatingJavaScript:@"document.body.innerHTML"]);
EXPECT_TRUE(CGSizeEqualToSize([(WKTextSelectionRect *)[[placeholder rects] firstObject] rect].size, CGSizeMake(50, 100)));
[(id<NSTextInputClient_Async_staging_126696059>)webView.get() removeTextPlaceholder:placeholder willInsertText:NO completionHandler:^{
EXPECT_WK_STREQ("Test<script>document.body.focus()</script>", [webView stringByEvaluatingJavaScript:@"document.body.innerHTML"]);
isDone = true;
Expand All @@ -81,6 +93,7 @@
__block bool isDone = false;
[(id<NSTextInputClient_Async_staging_126696059>)webView.get() insertTextPlaceholderWithSize:CGSizeMake(50, 100) completionHandler:^(NSTextPlaceholder *placeholder) {
EXPECT_WK_STREQ("<div style=\"display: inline-block; vertical-align: top; visibility: hidden !important; width: 50px; height: 100px;\"></div>Test<script>document.body.focus()</script>", [webView stringByEvaluatingJavaScript:@"document.body.innerHTML"]);
EXPECT_TRUE(CGSizeEqualToSize([(WKTextSelectionRect *)[[placeholder rects] firstObject] rect].size, CGSizeMake(50, 100)));
[(id<NSTextInputClient_Async_staging_126696059>)webView.get() removeTextPlaceholder:placeholder willInsertText:YES completionHandler:^{
EXPECT_WK_STREQ("Test<script>document.body.focus()</script>", [webView stringByEvaluatingJavaScript:@"document.body.innerHTML"]);
isDone = true;
Expand Down

0 comments on commit 69188a6

Please sign in to comment.