Title: [276328] trunk/Tools
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.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to