Diff
Modified: trunk/Source/WTF/ChangeLog (282843 => 282844)
--- trunk/Source/WTF/ChangeLog 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WTF/ChangeLog 2021-09-21 22:13:24 UTC (rev 282844)
@@ -1,3 +1,27 @@
+2021-09-21 David Kilzer <[email protected]>
+
+ Rename {checked,dynamic}_ns_cast<> to {checked,dynamic}_objc_cast<>
+ <https://webkit.org/b/230508>
+ <rdar://problem/83323145>
+
+ Reviewed by Brent Fulgham.
+
+ * WTF.xcodeproj/project.pbxproj:
+ * wtf/PlatformMac.cmake:
+ - Update for rename of TypeCastsNS.h to TypeCastsCocoa.h.
+
+ * wtf/RetainPtr.h:
+ (WTF::dynamic_objc_cast):
+ - Move dynamic_ns_cast<> from TypeCastsNS.h to here.
+ - Remove `using` statements to limit Objective-C types without
+ asterisks to match RetainPtr<>.
+ * wtf/cocoa/TypeCastsCocoa.h: Rename from TypeCastsNS.h.
+ (WTF::checked_objc_cast):
+ (WTF::dynamic_objc_cast):
+ - Do the rename.
+ - Remove "using WTF::dynamic_ns_cast;" instead of renaming it
+ since this is already in RetainPtr.h.
+
2021-09-21 Jer Noble <[email protected]>
[iOS] Enable MSE in WKWebViews by default on iPad
Modified: trunk/Source/WTF/WTF.xcodeproj/project.pbxproj (282843 => 282844)
--- trunk/Source/WTF/WTF.xcodeproj/project.pbxproj 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WTF/WTF.xcodeproj/project.pbxproj 2021-09-21 22:13:24 UTC (rev 282844)
@@ -392,7 +392,7 @@
4427C5A921F6D6C300A612A4 /* ASCIICType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ASCIICType.cpp; sourceTree = "<group>"; };
44309D4026EFC14A00402A67 /* NSObjCRuntimeSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSObjCRuntimeSPI.h; sourceTree = "<group>"; };
4468567225094FE8008CCA05 /* ThreadSanitizerSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadSanitizerSupport.h; sourceTree = "<group>"; };
- 44CDE4D226EE6CDA009F6ACB /* TypeCastsNS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypeCastsNS.h; sourceTree = "<group>"; };
+ 44CDE4D226EE6CDA009F6ACB /* TypeCastsCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypeCastsCocoa.h; sourceTree = "<group>"; };
46209A27266D543A007F8F4A /* CancellableTask.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CancellableTask.h; sourceTree = "<group>"; };
46BA9EAB1F4CD61E009A2BBC /* CompletionHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompletionHandler.h; sourceTree = "<group>"; };
46BEB6E922FFDDD500269867 /* RefCounted.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RefCounted.cpp; sourceTree = "<group>"; };
@@ -1625,7 +1625,7 @@
A30D412C1F0DE0BA00B71954 /* SoftLinking.h */,
BC3FEB5E267FCD460054006A /* SpanCocoa.h */,
EB61EDC62409CCC0001EFE36 /* SystemTracingCocoa.cpp */,
- 44CDE4D226EE6CDA009F6ACB /* TypeCastsNS.h */,
+ 44CDE4D226EE6CDA009F6ACB /* TypeCastsCocoa.h */,
5CC0EE862162BC2200A1A842 /* URLCocoa.mm */,
93241657243BC2E50032FAAE /* VectorCocoa.h */,
E4A0AD3C1A96253C00536DF6 /* WorkQueueCocoa.cpp */,
Modified: trunk/Source/WTF/wtf/PlatformMac.cmake (282843 => 282844)
--- trunk/Source/WTF/wtf/PlatformMac.cmake 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WTF/wtf/PlatformMac.cmake 2021-09-21 22:13:24 UTC (rev 282844)
@@ -20,7 +20,7 @@
cocoa/RuntimeApplicationChecksCocoa.h
cocoa/SoftLinking.h
cocoa/SpanCocoa.h
- cocoa/TypeCastsNS.h
+ cocoa/TypeCastsCocoa.h
cocoa/VectorCocoa.h
darwin/WeakLinking.h
Modified: trunk/Source/WTF/wtf/RetainPtr.h (282843 => 282844)
--- trunk/Source/WTF/wtf/RetainPtr.h 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WTF/wtf/RetainPtr.h 2021-09-21 22:13:24 UTC (rev 282844)
@@ -376,12 +376,13 @@
}
#ifdef __OBJC__
+// FIXME: Move to TypeCastsCocoa.h once all clients include that header.
template<typename T> T* dynamic_objc_cast(id object)
{
- if ([object isKindOfClass:[T class]])
- return (T *)object;
+ if (![object isKindOfClass:[T class]])
+ return nullptr;
- return nil;
+ return reinterpret_cast<T*>(object);
}
#endif
Copied: trunk/Source/WTF/wtf/cocoa/TypeCastsCocoa.h (from rev 282843, trunk/Source/WTF/wtf/cocoa/TypeCastsNS.h) (0 => 282844)
--- trunk/Source/WTF/wtf/cocoa/TypeCastsCocoa.h (rev 0)
+++ trunk/Source/WTF/wtf/cocoa/TypeCastsCocoa.h 2021-09-21 22:13:24 UTC (rev 282844)
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2014-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.
+ */
+
+#pragma once
+
+#include <wtf/Assertions.h>
+#include <wtf/RetainPtr.h>
+
+namespace WTF {
+
+// Use checked_objc_cast<> instead of dynamic_objc_cast<> when a specific NS type is required.
+
+template<typename T> T* checked_objc_cast(id object)
+{
+ using ValueType = std::remove_pointer_t<T>;
+ using PtrType = ValueType*;
+
+ if (!object)
+ return nullptr;
+
+ RELEASE_ASSERT_WITH_SECURITY_IMPLICATION([object isKindOfClass:[ValueType class]]);
+
+ return reinterpret_cast<PtrType>(object);
+}
+
+// Use dynamic_objc_cast<> instead of checked_objc_cast<> when actively checking NS types,
+// similar to dynamic_cast<> in C++. Be sure to include a nil check.
+
+// See RetainPtr.h for: template<typename T> T* dynamic_objc_cast(id object).
+
+template<typename T, typename U> RetainPtr<T> dynamic_objc_cast(RetainPtr<U>&& object)
+{
+ if (![object isKindOfClass:[T class]])
+ return nullptr;
+
+ return WTFMove(object);
+}
+
+} // namespace WTF
+
+using WTF::checked_objc_cast;
Deleted: trunk/Source/WTF/wtf/cocoa/TypeCastsNS.h (282843 => 282844)
--- trunk/Source/WTF/wtf/cocoa/TypeCastsNS.h 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WTF/wtf/cocoa/TypeCastsNS.h 2021-09-21 22:13:24 UTC (rev 282844)
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2014-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.
- */
-
-#pragma once
-
-#include <wtf/Assertions.h>
-#include <wtf/RetainPtr.h>
-
-namespace WTF {
-
-// Use checked_ns_cast<> instead of dynamic_ns_cast<> when a specific NS type is required.
-
-template<typename T> T* checked_ns_cast(id object)
-{
- using ValueType = std::remove_pointer_t<T>;
- using PtrType = ValueType*;
-
- if (!object)
- return nullptr;
-
- RELEASE_ASSERT_WITH_SECURITY_IMPLICATION([object isKindOfClass:[ValueType class]]);
-
- return reinterpret_cast<PtrType>(object);
-}
-
-// Use dynamic_ns_cast<> instead of checked_ns_cast<> when actively checking NS types,
-// similar to dynamic_cast<> in C++. Be sure to include a nil check.
-
-template<typename T> T* dynamic_ns_cast(id object)
-{
- using ValueType = std::remove_pointer_t<T>;
- using PtrType = ValueType*;
-
- if (![object isKindOfClass:[ValueType class]])
- return nullptr;
-
- return reinterpret_cast<PtrType>(object);
-}
-
-template<typename T, typename U> RetainPtr<T> dynamic_ns_cast(RetainPtr<U>&& object)
-{
- if (![object isKindOfClass:[T class]])
- return nullptr;
-
- return WTFMove(object);
-}
-
-} // namespace WTF
-
-using WTF::checked_ns_cast;
-using WTF::dynamic_ns_cast;
Modified: trunk/Source/WebCore/ChangeLog (282843 => 282844)
--- trunk/Source/WebCore/ChangeLog 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebCore/ChangeLog 2021-09-21 22:13:24 UTC (rev 282844)
@@ -1,3 +1,20 @@
+2021-09-21 David Kilzer <[email protected]>
+
+ Rename {checked,dynamic}_ns_cast<> to {checked,dynamic}_objc_cast<>
+ <https://webkit.org/b/230508>
+ <rdar://problem/83323145>
+
+ Reviewed by Brent Fulgham.
+
+ * Modules/applepay/PaymentInstallmentConfiguration.mm:
+ * Modules/applepay/cocoa/PaymentMerchantSessionCocoa.mm:
+ - Also fix *SoftLink.h header order.
+ * platform/graphics/cocoa/WebCoreCALayerExtras.mm:
+ * platform/mac/BlocklistUpdater.mm:
+ * rendering/RenderThemeIOS.mm:
+ - Import <wtf/cocoa/TypeCastsCocoa.h> for future move of
+ WTF::dynamic_objc_cast<> from RetainPtr.h to that header.
+
2021-09-21 Simon Fraser <[email protected]>
Modernize ENABLE_IOSURFACE_POOL_STATISTICS logging
Modified: trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfiguration.mm (282843 => 282844)
--- trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfiguration.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfiguration.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -32,6 +32,7 @@
#import "ApplePayInstallmentItemType.h"
#import "ApplePayInstallmentRetailChannel.h"
#import "ExceptionOr.h"
+#import <wtf/cocoa/TypeCastsCocoa.h>
#import <wtf/cocoa/VectorCocoa.h>
#import <pal/cocoa/PassKitSoftLink.h>
Modified: trunk/Source/WebCore/Modules/applepay/cocoa/PaymentMerchantSessionCocoa.mm (282843 => 282844)
--- trunk/Source/WebCore/Modules/applepay/cocoa/PaymentMerchantSessionCocoa.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebCore/Modules/applepay/cocoa/PaymentMerchantSessionCocoa.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -29,6 +29,8 @@
#if ENABLE(APPLE_PAY)
#import <_javascript_Core/JSONObject.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
+
#import <pal/cocoa/PassKitSoftLink.h>
namespace WebCore {
Modified: trunk/Source/WebCore/platform/graphics/cocoa/WebCoreCALayerExtras.mm (282843 => 282844)
--- trunk/Source/WebCore/platform/graphics/cocoa/WebCoreCALayerExtras.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebCore/platform/graphics/cocoa/WebCoreCALayerExtras.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -27,6 +27,7 @@
#import "WebCoreCALayerExtras.h"
#import <pal/spi/cocoa/QuartzCoreSPI.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
@implementation CALayer (WebCoreCALayerExtras)
Modified: trunk/Source/WebCore/platform/mac/BlocklistUpdater.mm (282843 => 282844)
--- trunk/Source/WebCore/platform/mac/BlocklistUpdater.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebCore/platform/mac/BlocklistUpdater.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -32,7 +32,7 @@
#import "WebGLBlocklist.h"
#import <sys/stat.h>
#import <sys/time.h>
-#import <wtf/RetainPtr.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
// The time after which we'll check the blocklist data.
static time_t blocklistNextCheckTime;
Modified: trunk/Source/WebCore/rendering/RenderThemeIOS.mm (282843 => 282844)
--- trunk/Source/WebCore/rendering/RenderThemeIOS.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebCore/rendering/RenderThemeIOS.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -83,8 +83,8 @@
#import <pal/spi/ios/UIKitSPI.h>
#import <wtf/NeverDestroyed.h>
#import <wtf/ObjCRuntimeExtras.h>
-#import <wtf/RefPtr.h>
#import <wtf/StdLibExtras.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
#if ENABLE(DATALIST_ELEMENT)
#include "HTMLDataListElement.h"
Modified: trunk/Source/WebKit/ChangeLog (282843 => 282844)
--- trunk/Source/WebKit/ChangeLog 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKit/ChangeLog 2021-09-21 22:13:24 UTC (rev 282844)
@@ -1,3 +1,26 @@
+2021-09-21 David Kilzer <[email protected]>
+
+ Rename {checked,dynamic}_ns_cast<> to {checked,dynamic}_objc_cast<>
+ <https://webkit.org/b/230508>
+ <rdar://problem/83323145>
+
+ Reviewed by Brent Fulgham.
+
+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+ (WebKit::extractWebProcessPool):
+ - Update for rename.
+
+ * Shared/Cocoa/ArgumentCodersCocoa.mm:
+ * Shared/mac/ObjCObjectGraph.mm:
+ * UIProcess/API/Cocoa/NSAttributedString.mm:
+ * UIProcess/Cocoa/MediaPermissionUtilities.mm:
+ - Also fix *SoftLink.h header order.
+ * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ * WebProcess/cocoa/WebProcessCocoa.mm:
+ - Import <wtf/cocoa/TypeCastsCocoa.h> for future move of
+ WTF::dynamic_objc_cast<> from RetainPtr.h to that header.
+
2021-09-21 Michael Catanzaro <[email protected]>
REGRESSION(241918@main): [WPE][GTK] New test is timing out on bots
Modified: trunk/Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm (282843 => 282844)
--- trunk/Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -38,6 +38,7 @@
#import <wtf/HashSet.h>
#import <wtf/cf/CFURLExtras.h>
#import <wtf/cocoa/NSURLExtras.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
#if USE(APPKIT)
#import <WebCore/ColorMac.h>
Modified: trunk/Source/WebKit/Shared/mac/ObjCObjectGraph.mm (282843 => 282844)
--- trunk/Source/WebKit/Shared/mac/ObjCObjectGraph.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKit/Shared/mac/ObjCObjectGraph.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -34,6 +34,7 @@
#import "WKBrowsingContextHandleInternal.h"
#import "WKTypeRefWrapper.h"
#import <wtf/EnumTraits.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
namespace WebKit {
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/NSAttributedString.mm (282843 => 282844)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/NSAttributedString.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/NSAttributedString.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -38,7 +38,7 @@
#import <WebKit/_WKProcessPoolConfiguration.h>
#import <wtf/Deque.h>
#import <wtf/MemoryPressureHandler.h>
-#import <wtf/RetainPtr.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
#if PLATFORM(IOS_FAMILY)
#import <UIKitSPI.h>
Modified: trunk/Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm (282843 => 282844)
--- trunk/Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -27,19 +27,21 @@
#import "MediaPermissionUtilities.h"
#import "SandboxUtilities.h"
-#import "TCCSoftLink.h"
#import "WKWebViewInternal.h"
#import "WebPageProxy.h"
#import <WebCore/LocalizedStrings.h>
#import <WebCore/SecurityOriginData.h>
#import <mutex>
-#import <pal/cocoa/AVFoundationSoftLink.h>
-#import <pal/cocoa/SpeechSoftLink.h>
#import <wtf/BlockPtr.h>
#import <wtf/URLHelpers.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
#import <wtf/spi/cf/CFBundleSPI.h>
#import <wtf/spi/darwin/SandboxSPI.h>
+#import "TCCSoftLink.h"
+#import <pal/cocoa/AVFoundationSoftLink.h>
+#import <pal/cocoa/SpeechSoftLink.h>
+
namespace WebKit {
bool checkSandboxRequirementForType(MediaPermissionType type)
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (282843 => 282844)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -72,7 +72,7 @@
#import <wtf/SoftLinking.h>
#import <wtf/cocoa/Entitlements.h>
#import <wtf/cocoa/RuntimeApplicationChecksCocoa.h>
-#import <wtf/cocoa/TypeCastsNS.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
#import <wtf/spi/cocoa/NSObjCRuntimeSPI.h>
#import <wtf/spi/darwin/SandboxSPI.h>
#import <wtf/spi/darwin/dyldSPI.h>
@@ -637,7 +637,7 @@
static inline RefPtr<WebProcessPool> extractWebProcessPool(void* observer)
{
- RetainPtr strongObserver { dynamic_ns_cast<WKProcessPoolWeakObserver>(reinterpret_cast<id>(observer)) };
+ RetainPtr strongObserver { dynamic_objc_cast<WKProcessPoolWeakObserver>(reinterpret_cast<id>(observer)) };
if (!strongObserver)
return nullptr;
return [strongObserver pool];
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm (282843 => 282844)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -44,6 +44,7 @@
#import <wtf/NeverDestroyed.h>
#import <wtf/Scope.h>
#import <wtf/cocoa/Entitlements.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
#import <wtf/cocoa/VectorCocoa.h>
#import <wtf/spi/darwin/SandboxSPI.h>
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (282843 => 282844)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -145,11 +145,11 @@
#import <pal/spi/ios/ManagedConfigurationSPI.h>
#import <wtf/BlockObjCExceptions.h>
#import <wtf/BlockPtr.h>
-#import <wtf/RetainPtr.h>
#import <wtf/Scope.h>
#import <wtf/SetForScope.h>
#import <wtf/WeakObjCPtr.h>
#import <wtf/cocoa/NSURLExtras.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
#import <wtf/cocoa/VectorCocoa.h>
#import <wtf/text/TextStream.h>
Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (282843 => 282844)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -105,6 +105,7 @@
#import <wtf/cocoa/Entitlements.h>
#import <wtf/cocoa/NSURLExtras.h>
#import <wtf/cocoa/RuntimeApplicationChecksCocoa.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
#import <wtf/cocoa/VectorCocoa.h>
#if ENABLE(REMOTE_INSPECTOR)
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (282843 => 282844)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2021-09-21 22:13:24 UTC (rev 282844)
@@ -1,3 +1,16 @@
+2021-09-21 David Kilzer <[email protected]>
+
+ Rename {checked,dynamic}_ns_cast<> to {checked,dynamic}_objc_cast<>
+ <https://webkit.org/b/230508>
+ <rdar://problem/83323145>
+
+ Reviewed by Brent Fulgham.
+
+ * WebCoreSupport/WebDragClient.mm:
+ * WebView/WebHTMLView.mm:
+ - Import <wtf/cocoa/TypeCastsCocoa.h> for future move of
+ WTF::dynamic_objc_cast<> from RetainPtr.h to that header.
+
2021-09-20 Chris Dumez <[email protected]>
Stop using makeRef(*this) / makeRefPtr(this)
Modified: trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebDragClient.mm (282843 => 282844)
--- trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebDragClient.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebDragClient.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -59,6 +59,7 @@
#import <WebCore/PagePasteboardContext.h>
#import <WebCore/Pasteboard.h>
#import <WebCore/PasteboardWriter.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
using namespace WebCore;
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm (282843 => 282844)
--- trunk/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -152,6 +152,7 @@
#import <wtf/RunLoop.h>
#import <wtf/SystemTracing.h>
#import <wtf/WeakObjCPtr.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
#import <wtf/cocoa/VectorCocoa.h>
#if PLATFORM(MAC)
Modified: trunk/Tools/ChangeLog (282843 => 282844)
--- trunk/Tools/ChangeLog 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Tools/ChangeLog 2021-09-21 22:13:24 UTC (rev 282844)
@@ -1,3 +1,22 @@
+2021-09-21 David Kilzer <[email protected]>
+
+ Rename {checked,dynamic}_ns_cast<> to {checked,dynamic}_objc_cast<>
+ <https://webkit.org/b/230508>
+ <rdar://problem/83323145>
+
+ Reviewed by Brent Fulgham.
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ - Update for rename of TypeCastsNS.h to TypeCastsCocoa.h.
+ * TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm: Rename from TypeCastsNS.mm.
+ (TestWebKitAPI::TEST):
+ - Update for rename.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm:
+ * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
+ - Import <wtf/cocoa/TypeCastsCocoa.h> for future move of
+ WTF::dynamic_objc_cast<> from RetainPtr.h to that header.
+
2021-09-21 Yoshiaki Jitsukawa <[email protected]>
[PlayStation][MiniBrowser] Remove WebKit private header include
Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (282843 => 282844)
--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2021-09-21 22:13:24 UTC (rev 282844)
@@ -267,7 +267,7 @@
448D7E471EA6C55500ECC756 /* EnvironmentUtilitiesTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 448D7E451EA6C55500ECC756 /* EnvironmentUtilitiesTest.cpp */; };
44AC8BC621D0245A00CAFB34 /* RetainPtr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC029B161486AD6400817DA9 /* RetainPtr.cpp */; };
44C2FBE225E7592C00ABC72F /* WKAppHighlights.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44C2FBE125E7592C00ABC72F /* WKAppHighlights.mm */; };
- 44CDE4D426EE6E4A009F6ACB /* TypeCastsNS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44CDE4D326EE6E41009F6ACB /* TypeCastsNS.mm */; };
+ 44CDE4D426EE6E4A009F6ACB /* TypeCastsCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44CDE4D326EE6E41009F6ACB /* TypeCastsCocoa.mm */; };
44CF31FD249941E8009CB6CB /* ContextMenuAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 44CF31FB24993F66009CB6CB /* ContextMenuAction.cpp */; };
4612C2B9210A6ACE00B788A6 /* LoadFileThenReload.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4612C2B8210A6ABF00B788A6 /* LoadFileThenReload.mm */; };
4628C8E92367ABD100B073F0 /* WKSecurityOrigin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4628C8E82367ABBC00B073F0 /* WKSecurityOrigin.cpp */; };
@@ -2102,7 +2102,7 @@
448D7E451EA6C55500ECC756 /* EnvironmentUtilitiesTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EnvironmentUtilitiesTest.cpp; sourceTree = "<group>"; };
44A622C114A0E2B60048515B /* WTFStringUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WTFStringUtilities.h; sourceTree = "<group>"; };
44C2FBE125E7592C00ABC72F /* WKAppHighlights.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKAppHighlights.mm; sourceTree = "<group>"; };
- 44CDE4D326EE6E41009F6ACB /* TypeCastsNS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TypeCastsNS.mm; sourceTree = "<group>"; };
+ 44CDE4D326EE6E41009F6ACB /* TypeCastsCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TypeCastsCocoa.mm; sourceTree = "<group>"; };
44CF31FB24993F66009CB6CB /* ContextMenuAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContextMenuAction.cpp; sourceTree = "<group>"; };
4612C2B8210A6ABF00B788A6 /* LoadFileThenReload.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LoadFileThenReload.mm; sourceTree = "<group>"; };
4628C8E82367ABBC00B073F0 /* WKSecurityOrigin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKSecurityOrigin.cpp; sourceTree = "<group>"; };
@@ -4991,7 +4991,7 @@
BC3FEB63267FCF740054006A /* SpanCocoa.mm */,
1C4616A626BB172F00F8C9F6 /* TextStreamCocoa.cpp */,
1C46169E26BA510700F8C9F6 /* TextStreamCocoa.mm */,
- 44CDE4D326EE6E41009F6ACB /* TypeCastsNS.mm */,
+ 44CDE4D326EE6E41009F6ACB /* TypeCastsCocoa.mm */,
E3C21A7B21B25CA2003B31A3 /* URLExtras.mm */,
);
path = cocoa;
@@ -5367,7 +5367,7 @@
E38A0D351FD50CC300E98C8B /* Threading.cpp in Sources */,
5311BD5E1EA9490E00525281 /* ThreadMessages.cpp in Sources */,
0F2C20B81DCD545000542D9E /* Time.cpp in Sources */,
- 44CDE4D426EE6E4A009F6ACB /* TypeCastsNS.mm in Sources */,
+ 44CDE4D426EE6E4A009F6ACB /* TypeCastsCocoa.mm in Sources */,
E324A6F02041C82000A76593 /* UniqueArray.cpp in Sources */,
E3A1E78221B25B7A008C6007 /* URL.cpp in Sources */,
E3C21A7C21B25CA2003B31A3 /* URLExtras.mm in Sources */,
Copied: trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm (from rev 282843, trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsNS.mm) (0 => 282844)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -0,0 +1,196 @@
+/*
+ * 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.
+ */
+
+#import "config.h"
+#import <wtf/cocoa/TypeCastsCocoa.h>
+
+#import <wtf/StdLibExtras.h>
+
+@interface MyObjectSubtype : NSObject
+@end
+
+@implementation MyObjectSubtype
+@end
+
+namespace TestWebKitAPI {
+
+using namespace WTF;
+
+TEST(TypeCastsCocoa, checked_objc_cast)
+{
+ EXPECT_EQ(nil, checked_objc_cast<NSString>(nil));
+
+ {
+ auto object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
+ EXPECT_EQ(object.get(), checked_objc_cast<NSString>(object.get()));
+ EXPECT_EQ(object.get(), checked_objc_cast<NSObject>(object.get()));
+ }
+
+ {
+ auto object = adoptNS(reinterpret_cast<NSObject *>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
+ EXPECT_EQ(object.get(), checked_objc_cast<NSString>(object.get()));
+ }
+
+ {
+ auto object = adoptNS([[NSString alloc] initWithFormat:@"%s", "Hello world"]);
+ EXPECT_EQ(object.get(), checked_objc_cast<NSObject>(object.get()));
+ }
+}
+
+TEST(TypeCastsCocoa, dynamic_objc_cast)
+{
+ EXPECT_EQ(nil, dynamic_objc_cast<NSString>(nil));
+
+ {
+ auto object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
+ EXPECT_EQ(object.get(), dynamic_objc_cast<NSString>(object.get()));
+ EXPECT_EQ(object.get(), dynamic_objc_cast<NSObject>(object.get()));
+ EXPECT_EQ(nil, dynamic_objc_cast<NSArray>(object.get()));
+ }
+
+ {
+ auto object = adoptNS(reinterpret_cast<NSObject *>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
+ EXPECT_EQ(object.get(), dynamic_objc_cast<NSString>(object.get()));
+ EXPECT_EQ(nil, dynamic_objc_cast<NSArray>(object.get()));
+ }
+
+ {
+ auto object = adoptNS([[NSString alloc] initWithFormat:@"%s", "Hello world"]);
+ EXPECT_EQ(object.get(), dynamic_objc_cast<NSObject>(object.get()));
+ EXPECT_EQ(nil, dynamic_objc_cast<NSArray>(object.get()));
+ }
+
+ {
+ auto object = adoptNS(reinterpret_cast<id>([[NSObject alloc] init]));
+ EXPECT_EQ(object.get(), dynamic_objc_cast<NSObject>(object.get()));
+ EXPECT_EQ(nil, dynamic_objc_cast<MyObjectSubtype>(object.get()));
+ }
+
+ {
+ auto object = adoptNS([[NSObject alloc] init]);
+ EXPECT_EQ(nil, dynamic_objc_cast<MyObjectSubtype>(object.get()));
+ }
+}
+
+TEST(TypeCastsCocoa, dynamic_ns_cast_RetainPtr)
+{
+ {
+ RetainPtr<NSString> object;
+ auto objectCast = dynamic_objc_cast<NSString>(WTFMove(object));
+ EXPECT_EQ(nil, object.get());
+ EXPECT_EQ(nil, objectCast.get());
+ }
+
+ {
+ auto object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
+ id objectPtr = object.get();
+ auto objectCast = dynamic_objc_cast<NSString>(WTFMove(object));
+ EXPECT_EQ(nil, object.get());
+ EXPECT_EQ(objectPtr, objectCast.get());
+ objectPtr = nil; // For ARC.
+ EXPECT_EQ(1U, [objectCast retainCount]);
+
+ object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
+ objectPtr = object.get();
+ auto objectCast2 = dynamic_objc_cast<NSObject>(WTFMove(object));
+ EXPECT_EQ(nil, object.get());
+ EXPECT_EQ(objectPtr, objectCast2.get());
+ objectPtr = nil; // For ARC.
+ EXPECT_EQ(1U, [objectCast2 retainCount]);
+
+ object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
+ objectPtr = object.get();
+ auto objectCast3 = dynamic_objc_cast<NSArray>(WTFMove(object));
+ EXPECT_EQ(objectPtr, object.get());
+ EXPECT_EQ(nil, objectCast3.get());
+ objectPtr = nil; // For ARC.
+ EXPECT_EQ(1U, [object retainCount]);
+ }
+
+ {
+ auto object = adoptNS(reinterpret_cast<NSObject *>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
+ id objectPtr = object.get();
+ auto objectCast = dynamic_objc_cast<NSString>(WTFMove(object));
+ EXPECT_EQ(nil, object.get());
+ EXPECT_EQ(objectPtr, objectCast.get());
+ objectPtr = nil;
+ EXPECT_EQ(1U, [objectCast retainCount]);
+
+ object = adoptNS(reinterpret_cast<NSObject *>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
+ objectPtr = object.get();
+ auto objectCast2 = dynamic_objc_cast<NSArray>(WTFMove(object));
+ EXPECT_EQ(objectPtr, object.get());
+ EXPECT_EQ(nil, objectCast2.get());
+ objectPtr = nil;
+ EXPECT_EQ(1U, [object retainCount]);
+ }
+
+ {
+ auto object = adoptNS([[NSString alloc] initWithFormat:@"%s", "Hello world"]);
+ id objectPtr = object.get();
+ auto objectCast = dynamic_objc_cast<NSObject>(WTFMove(object));
+ EXPECT_EQ(nil, object.get());
+ EXPECT_EQ(objectPtr, objectCast.get());
+ objectPtr = nil;
+ EXPECT_EQ(1U, [objectCast retainCount]);
+
+ object = adoptNS([[NSString alloc] initWithFormat:@"%s", "Hello world"]);
+ objectPtr = object.get();
+ auto objectCast2 = dynamic_objc_cast<NSArray>(WTFMove(object));
+ EXPECT_EQ(objectPtr, object.get());
+ EXPECT_EQ(nil, objectCast2.get());
+ objectPtr = nil;
+ EXPECT_EQ(1U, [object retainCount]);
+ }
+
+ {
+ auto object = adoptNS(reinterpret_cast<id>([[NSObject alloc] init]));
+ id objectPtr = object.get();
+ auto objectCast = dynamic_objc_cast<NSObject>(WTFMove(object));
+ EXPECT_EQ(nil, object.get());
+ EXPECT_EQ(objectPtr, objectCast.get());
+ objectPtr = nil; // For ARC.
+ EXPECT_EQ(1U, [objectCast retainCount]);
+
+ object = adoptNS(reinterpret_cast<id>([[NSObject alloc] init]));
+ objectPtr = object.get();
+ auto objectCast2 = dynamic_objc_cast<MyObjectSubtype>(WTFMove(object));
+ EXPECT_EQ(objectPtr, object.get());
+ EXPECT_EQ(nil, objectCast2.get());
+ objectPtr = nil; // For ARC.
+ EXPECT_EQ(1U, [object retainCount]);
+ }
+
+ {
+ auto object = adoptNS([[NSObject alloc] init]);
+ id objectPtr = object.get();
+ auto objectCast = dynamic_objc_cast<MyObjectSubtype>(WTFMove(object));
+ EXPECT_EQ(objectPtr, object.get());
+ EXPECT_EQ(nil, objectCast.get());
+ objectPtr = nil; // For ARC.
+ EXPECT_EQ(1U, [object retainCount]);
+ }
+}
+
+} // namespace TestWebKitAPI
Deleted: trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsNS.mm (282843 => 282844)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsNS.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsNS.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -1,196 +0,0 @@
-/*
- * 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.
- */
-
-#import "config.h"
-#import <wtf/cocoa/TypeCastsNS.h>
-
-#import <wtf/StdLibExtras.h>
-
-@interface MyObjectSubtype : NSObject
-@end
-
-@implementation MyObjectSubtype
-@end
-
-namespace TestWebKitAPI {
-
-using namespace WTF;
-
-TEST(TypeCastsNS, checked_ns_cast)
-{
- EXPECT_EQ(nil, checked_ns_cast<NSString>(nil));
-
- {
- auto object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
- EXPECT_EQ(object.get(), checked_ns_cast<NSString>(object.get()));
- EXPECT_EQ(object.get(), checked_ns_cast<NSObject>(object.get()));
- }
-
- {
- auto object = adoptNS(reinterpret_cast<NSObject *>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
- EXPECT_EQ(object.get(), checked_ns_cast<NSString>(object.get()));
- }
-
- {
- auto object = adoptNS([[NSString alloc] initWithFormat:@"%s", "Hello world"]);
- EXPECT_EQ(object.get(), checked_ns_cast<NSObject>(object.get()));
- }
-}
-
-TEST(TypeCastsNS, dynamic_ns_cast)
-{
- EXPECT_EQ(nil, dynamic_ns_cast<NSString>(nil));
-
- {
- auto object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
- EXPECT_EQ(object.get(), dynamic_ns_cast<NSString>(object.get()));
- EXPECT_EQ(object.get(), dynamic_ns_cast<NSObject>(object.get()));
- EXPECT_EQ(nil, dynamic_ns_cast<NSArray>(object.get()));
- }
-
- {
- auto object = adoptNS(reinterpret_cast<NSObject *>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
- EXPECT_EQ(object.get(), dynamic_ns_cast<NSString>(object.get()));
- EXPECT_EQ(nil, dynamic_ns_cast<NSArray>(object.get()));
- }
-
- {
- auto object = adoptNS([[NSString alloc] initWithFormat:@"%s", "Hello world"]);
- EXPECT_EQ(object.get(), dynamic_ns_cast<NSObject>(object.get()));
- EXPECT_EQ(nil, dynamic_ns_cast<NSArray>(object.get()));
- }
-
- {
- auto object = adoptNS(reinterpret_cast<id>([[NSObject alloc] init]));
- EXPECT_EQ(object.get(), dynamic_ns_cast<NSObject>(object.get()));
- EXPECT_EQ(nil, dynamic_ns_cast<MyObjectSubtype>(object.get()));
- }
-
- {
- auto object = adoptNS([[NSObject alloc] init]);
- EXPECT_EQ(nil, dynamic_ns_cast<MyObjectSubtype>(object.get()));
- }
-}
-
-TEST(TypeCastsNS, dynamic_ns_cast_RetainPtr)
-{
- {
- RetainPtr<NSString> object;
- auto objectCast = dynamic_ns_cast<NSString>(WTFMove(object));
- EXPECT_EQ(nil, object.get());
- EXPECT_EQ(nil, objectCast.get());
- }
-
- {
- auto object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
- id objectPtr = object.get();
- auto objectCast = dynamic_ns_cast<NSString>(WTFMove(object));
- EXPECT_EQ(nil, object.get());
- EXPECT_EQ(objectPtr, objectCast.get());
- objectPtr = nil; // For ARC.
- EXPECT_EQ(1U, [objectCast retainCount]);
-
- object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
- objectPtr = object.get();
- auto objectCast2 = dynamic_ns_cast<NSObject>(WTFMove(object));
- EXPECT_EQ(nil, object.get());
- EXPECT_EQ(objectPtr, objectCast2.get());
- objectPtr = nil; // For ARC.
- EXPECT_EQ(1U, [objectCast2 retainCount]);
-
- object = adoptNS(reinterpret_cast<id>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
- objectPtr = object.get();
- auto objectCast3 = dynamic_ns_cast<NSArray>(WTFMove(object));
- EXPECT_EQ(objectPtr, object.get());
- EXPECT_EQ(nil, objectCast3.get());
- objectPtr = nil; // For ARC.
- EXPECT_EQ(1U, [object retainCount]);
- }
-
- {
- auto object = adoptNS(reinterpret_cast<NSObject *>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
- id objectPtr = object.get();
- auto objectCast = dynamic_ns_cast<NSString>(WTFMove(object));
- EXPECT_EQ(nil, object.get());
- EXPECT_EQ(objectPtr, objectCast.get());
- objectPtr = nil;
- EXPECT_EQ(1U, [objectCast retainCount]);
-
- object = adoptNS(reinterpret_cast<NSObject *>([[NSString alloc] initWithFormat:@"%s", "Hello world"]));
- objectPtr = object.get();
- auto objectCast2 = dynamic_ns_cast<NSArray>(WTFMove(object));
- EXPECT_EQ(objectPtr, object.get());
- EXPECT_EQ(nil, objectCast2.get());
- objectPtr = nil;
- EXPECT_EQ(1U, [object retainCount]);
- }
-
- {
- auto object = adoptNS([[NSString alloc] initWithFormat:@"%s", "Hello world"]);
- id objectPtr = object.get();
- auto objectCast = dynamic_ns_cast<NSObject>(WTFMove(object));
- EXPECT_EQ(nil, object.get());
- EXPECT_EQ(objectPtr, objectCast.get());
- objectPtr = nil;
- EXPECT_EQ(1U, [objectCast retainCount]);
-
- object = adoptNS([[NSString alloc] initWithFormat:@"%s", "Hello world"]);
- objectPtr = object.get();
- auto objectCast2 = dynamic_ns_cast<NSArray>(WTFMove(object));
- EXPECT_EQ(objectPtr, object.get());
- EXPECT_EQ(nil, objectCast2.get());
- objectPtr = nil;
- EXPECT_EQ(1U, [object retainCount]);
- }
-
- {
- auto object = adoptNS(reinterpret_cast<id>([[NSObject alloc] init]));
- id objectPtr = object.get();
- auto objectCast = dynamic_ns_cast<NSObject>(WTFMove(object));
- EXPECT_EQ(nil, object.get());
- EXPECT_EQ(objectPtr, objectCast.get());
- objectPtr = nil; // For ARC.
- EXPECT_EQ(1U, [objectCast retainCount]);
-
- object = adoptNS(reinterpret_cast<id>([[NSObject alloc] init]));
- objectPtr = object.get();
- auto objectCast2 = dynamic_ns_cast<MyObjectSubtype>(WTFMove(object));
- EXPECT_EQ(objectPtr, object.get());
- EXPECT_EQ(nil, objectCast2.get());
- objectPtr = nil; // For ARC.
- EXPECT_EQ(1U, [object retainCount]);
- }
-
- {
- auto object = adoptNS([[NSObject alloc] init]);
- id objectPtr = object.get();
- auto objectCast = dynamic_ns_cast<MyObjectSubtype>(WTFMove(object));
- EXPECT_EQ(objectPtr, object.get());
- EXPECT_EQ(nil, objectCast.get());
- objectPtr = nil; // For ARC.
- EXPECT_EQ(1U, [object retainCount]);
- }
-}
-
-} // namespace TestWebKitAPI
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm (282843 => 282844)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -30,7 +30,7 @@
#import "TestNavigationDelegate.h"
#import "TestWKWebView.h"
#import <WebKit/WebKit.h>
-#import <wtf/RetainPtr.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
TEST(WKWebView, GetContentsShouldReturnString)
{
Modified: trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm (282843 => 282844)
--- trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm 2021-09-21 21:43:21 UTC (rev 282843)
+++ trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm 2021-09-21 22:13:24 UTC (rev 282844)
@@ -49,6 +49,7 @@
#import <wtf/MonotonicTime.h>
#import <wtf/SoftLinking.h>
#import <wtf/Vector.h>
+#import <wtf/cocoa/TypeCastsCocoa.h>
SOFT_LINK_FRAMEWORK(UIKit)
SOFT_LINK_CLASS(UIKit, UIPhysicalKeyboardEvent)