- Revision
- 276328
- Author
- [email protected]
- Date
- 2021-04-20 16:44:29 -0700 (Tue, 20 Apr 2021)
Log Message
MacCatalyst tests crash on NSInternalInconsistencyException, reason: NSApplication has not been created yet
https://bugs.webkit.org/show_bug.cgi?id=224606
Reviewed by Wenson Hsieh.
* TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
Link UIKitMacHelper in macCatalyst builds.
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/ios/UIKitMacHelperSPI.h: Added.
* TestWebKitAPI/ios/mainIOS.mm:
(main):
Call UINSApplicationInstantiate to keep the tests limping along until we create an actual UIApp.
* TestWebKitAPI/Configurations/TestWTF.xcconfig:
Also, fix the TestWTF configuration to not link Cocoa in macCatalyst builds.
Modified Paths
Added Paths
Diff
Modified: trunk/Tools/ChangeLog (276327 => 276328)
--- trunk/Tools/ChangeLog 2021-04-20 23:21:06 UTC (rev 276327)
+++ trunk/Tools/ChangeLog 2021-04-20 23:44:29 UTC (rev 276328)
@@ -1,3 +1,22 @@
+2021-04-20 Tim Horton <[email protected]>
+
+ MacCatalyst tests crash on NSInternalInconsistencyException, reason: NSApplication has not been created yet
+ https://bugs.webkit.org/show_bug.cgi?id=224606
+
+ Reviewed by Wenson Hsieh.
+
+ * TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
+ Link UIKitMacHelper in macCatalyst builds.
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/ios/UIKitMacHelperSPI.h: Added.
+ * TestWebKitAPI/ios/mainIOS.mm:
+ (main):
+ Call UINSApplicationInstantiate to keep the tests limping along until we create an actual UIApp.
+
+ * TestWebKitAPI/Configurations/TestWTF.xcconfig:
+ Also, fix the TestWTF configuration to not link Cocoa in macCatalyst builds.
+
2021-04-20 Kate Cheney <[email protected]>
Preconnect tasks and preflight checks do not correctly mark app-bound context string
Modified: trunk/Tools/TestWebKitAPI/Configurations/TestWTF.xcconfig (276327 => 276328)
--- trunk/Tools/TestWebKitAPI/Configurations/TestWTF.xcconfig 2021-04-20 23:21:06 UTC (rev 276327)
+++ trunk/Tools/TestWebKitAPI/Configurations/TestWTF.xcconfig 2021-04-20 23:44:29 UTC (rev 276328)
@@ -29,11 +29,14 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) BUILDING_TEST_WTF GTEST_API_=
-OTHER_LDFLAGS = $(inherited) -lgtest -force_load $(BUILT_PRODUCTS_DIR)/libTestWTF.a $(OTHER_LDFLAGS_PLATFORM);
-OTHER_LDFLAGS_PLATFORM[sdk=macosx*] = -framework Cocoa -framework Carbon;
+WK_UIKITMACHELPER_LDFLAGS = $(WK_UIKITMACHELPER_LDFLAGS_$(WK_PLATFORM_NAME));
+WK_UIKITMACHELPER_LDFLAGS_maccatalyst = -framework UIKitMacHelper;
+OTHER_LDFLAGS = $(inherited) -lgtest -force_load $(BUILT_PRODUCTS_DIR)/libTestWTF.a $(WK_UIKITMACHELPER_LDFLAGS) $(OTHER_LDFLAGS_PLATFORM_$(WK_COCOA_TOUCH));
+OTHER_LDFLAGS_PLATFORM_ = -framework Cocoa -framework Carbon;
+
// FIXME: This should not be built on iOS. Instead we should create and use a TestWTF application.
-OTHER_LDFLAGS_PLATFORM[sdk=embedded*] = -framework CoreGraphics;
+OTHER_LDFLAGS_PLATFORM_cocoatouch = -framework CoreGraphics;
STRIP_STYLE = debugging;
Modified: trunk/Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig (276327 => 276328)
--- trunk/Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig 2021-04-20 23:21:06 UTC (rev 276327)
+++ trunk/Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig 2021-04-20 23:44:29 UTC (rev 276328)
@@ -50,6 +50,20 @@
WK_AUTHKIT_LDFLAGS_macosx = $(WK_AUTHKIT_LDFLAGS$(WK_MACOS_1015));
WK_AUTHKIT_LDFLAGS_MACOS_SINCE_1015 = -framework AuthKit;
+WK_HID_LDFLAGS = $(WK_HID_LDFLAGS_$(WK_PLATFORM_NAME));
+WK_HID_LDFLAGS_macosx = $(WK_HID_LDFLAGS$(WK_MACOS_1015));
+WK_HID_LDFLAGS_MACOS_SINCE_1015 = -framework HID;
+
+WK_OPENGL_LDFLAGS = $(WK_OPENGL_LDFLAGS_$(WK_PLATFORM_NAME));
+WK_OPENGL_LDFLAGS_iphoneos = -framework OpenGLES;
+WK_OPENGL_LDFLAGS_maccatalyst = -framework OpenGL;
+WK_OPENGL_LDFLAGS_iphonesimulator = -framework OpenGLES;
+WK_OPENGL_LDFLAGS_watchos = $(WK_OPENGL_LDFLAGS_iphoneos);
+WK_OPENGL_LDFLAGS_watchsimulator = $(WK_OPENGL_LDFLAGS_iphonesimulator);
+WK_OPENGL_LDFLAGS_appletvos = $(WK_OPENGL_LDFLAGS_iphoneos);
+WK_OPENGL_LDFLAGS_appletvsimulator = $(WK_OPENGL_LDFLAGS_iphonesimulator);
+WK_OPENGL_LDFLAGS_macosx = -framework OpenGL;
+
WK_PDFKIT_LDFLAGS = $(WK_PDFKIT_LDFLAGS_$(WK_PLATFORM_NAME));
WK_PDFKIT_LDFLAGS_macosx = -framework PDFKit;
WK_PDFKIT_LDFLAGS_maccatalyst = -framework PDFKit;
@@ -62,23 +76,12 @@
WK_SYSTEM_LDFLAGS_iphonesimulator = $(WK_SYSTEM_LDFLAGS_$(WK_IOS_15));
WK_SYSTEM_LDFLAGS_IOS_SINCE_15 = -framework System;
-WK_HID_LDFLAGS = $(WK_HID_LDFLAGS_$(WK_PLATFORM_NAME));
-WK_HID_LDFLAGS_macosx = $(WK_HID_LDFLAGS$(WK_MACOS_1015));
-WK_HID_LDFLAGS_MACOS_SINCE_1015 = -framework HID;
+WK_UIKITMACHELPER_LDFLAGS = $(WK_UIKITMACHELPER_LDFLAGS_$(WK_PLATFORM_NAME));
+WK_UIKITMACHELPER_LDFLAGS_maccatalyst = -framework UIKitMacHelper;
OTHER_CPLUSPLUSFLAGS = $(inherited) -isystem $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders;
-WK_OPENGL_LDFLAGS = $(WK_OPENGL_LDFLAGS_$(WK_PLATFORM_NAME));
-WK_OPENGL_LDFLAGS_iphoneos = -framework OpenGLES;
-WK_OPENGL_LDFLAGS_maccatalyst = -framework OpenGL;
-WK_OPENGL_LDFLAGS_iphonesimulator = -framework OpenGLES;
-WK_OPENGL_LDFLAGS_watchos = $(WK_OPENGL_LDFLAGS_iphoneos);
-WK_OPENGL_LDFLAGS_watchsimulator = $(WK_OPENGL_LDFLAGS_iphonesimulator);
-WK_OPENGL_LDFLAGS_appletvos = $(WK_OPENGL_LDFLAGS_iphoneos);
-WK_OPENGL_LDFLAGS_appletvsimulator = $(WK_OPENGL_LDFLAGS_iphonesimulator);
-WK_OPENGL_LDFLAGS_macosx = -framework OpenGL;
-
-OTHER_LDFLAGS = $(inherited) -lgtest -force_load $(BUILT_PRODUCTS_DIR)/libTestWebKitAPI.a -framework _javascript_Core -framework WebKit -lWebCoreTestSupport $(WK_AUTHKIT_LDFLAGS) -framework Network $(WK_SYSTEM_LDFLAGS) $(WK_PDFKIT_LDFLAGS) $(WK_HID_LDFLAGS) $(WK_OPENGL_LDFLAGS) $(OTHER_LDFLAGS_PLATFORM_$(WK_COCOA_TOUCH));
+OTHER_LDFLAGS = $(inherited) -lgtest -force_load $(BUILT_PRODUCTS_DIR)/libTestWebKitAPI.a -framework _javascript_Core -framework WebKit -lWebCoreTestSupport $(WK_AUTHKIT_LDFLAGS) -framework Network $(WK_HID_LDFLAGS) $(WK_OPENGL_LDFLAGS) $(WK_PDFKIT_LDFLAGS) $(WK_SYSTEM_LDFLAGS) $(WK_UIKITMACHELPER_LDFLAGS) $(OTHER_LDFLAGS_PLATFORM_$(WK_COCOA_TOUCH));
OTHER_LDFLAGS_PLATFORM_ = -framework Cocoa -framework Carbon;
// FIXME: This should not be built on iOS. Instead we should create and use a TestWebKitAPI application.
Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (276327 => 276328)
--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2021-04-20 23:21:06 UTC (rev 276327)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2021-04-20 23:44:29 UTC (rev 276328)
@@ -1904,6 +1904,7 @@
2D1C04A51D76298B000A6816 /* TestNavigationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestNavigationDelegate.h; path = cocoa/TestNavigationDelegate.h; sourceTree = "<group>"; };
2D1C04A61D76298B000A6816 /* TestNavigationDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = TestNavigationDelegate.mm; path = cocoa/TestNavigationDelegate.mm; sourceTree = "<group>"; };
2D1FE0AF1AD465C1006CD9E6 /* FixedLayoutSize.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FixedLayoutSize.mm; sourceTree = "<group>"; };
+ 2D2171C3262F8B8200C209DC /* UIKitMacHelperSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIKitMacHelperSPI.h; sourceTree = "<group>"; };
2D2BEB2C22324E5F005544CA /* RequestTextInputContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RequestTextInputContext.mm; sourceTree = "<group>"; };
2D2D13B2229F408B005068AF /* DeviceManagementRestrictions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DeviceManagementRestrictions.mm; sourceTree = "<group>"; };
2D2FE8D72315F06D00B2E9C9 /* ReloadWithDifferingInitialScale.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ReloadWithDifferingInitialScale.mm; sourceTree = "<group>"; };
@@ -3620,6 +3621,7 @@
F48D6C0F224B377000E3E2FB /* PreferredContentMode.mm */,
F4517B652054C49500C26721 /* TestWKWebViewController.h */,
F4517B662054C49500C26721 /* TestWKWebViewController.mm */,
+ 2D2171C3262F8B8200C209DC /* UIKitMacHelperSPI.h */,
F493247C1F44DF8D006F4336 /* UIKitSPI.h */,
F4CDAB3322489FE10057A2D9 /* UserInterfaceSwizzler.h */,
);
Added: trunk/Tools/TestWebKitAPI/ios/UIKitMacHelperSPI.h (0 => 276328)
--- trunk/Tools/TestWebKitAPI/ios/UIKitMacHelperSPI.h (rev 0)
+++ trunk/Tools/TestWebKitAPI/ios/UIKitMacHelperSPI.h 2021-04-20 23:44:29 UTC (rev 276328)
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if PLATFORM(MACCATALYST)
+
+#if USE(APPLE_INTERNAL_SDK)
+
+#import <UIKitMacHelper/UINSApplication_Private.h>
+
+#else // USE(APPLE_INTERNAL_SDK)
+
+WTF_EXTERN_C_BEGIN
+
+void UINSApplicationInstantiate(void);
+
+WTF_EXTERN_C_END
+
+#endif // USE(APPLE_INTERNAL_SDK)
+
+#endif // PLATFORM(MACCATALYST)
Modified: trunk/Tools/TestWebKitAPI/ios/mainIOS.mm (276327 => 276328)
--- trunk/Tools/TestWebKitAPI/ios/mainIOS.mm 2021-04-20 23:21:06 UTC (rev 276327)
+++ trunk/Tools/TestWebKitAPI/ios/mainIOS.mm 2021-04-20 23:44:29 UTC (rev 276328)
@@ -25,7 +25,7 @@
#import "config.h"
#import "TestsController.h"
-
+#import "UIKitMacHelperSPI.h"
#import <WebKit/WKProcessPoolPrivate.h>
#import <wtf/RetainPtr.h>
@@ -33,6 +33,10 @@
{
bool passed = false;
@autoreleasepool {
+#if PLATFORM(MACCATALYST)
+ UINSApplicationInstantiate();
+#endif
+
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:@"TestWebKitAPI"];
// Set up user defaults.