- Revision
- 279072
- Author
- [email protected]
- Date
- 2021-06-21 11:46:31 -0700 (Mon, 21 Jun 2021)
Log Message
Upstream async support to Swift overlay.
https://bugs.webkit.org/show_bug.cgi?id=227006.
Reviewed by Alex Christensen.
* SwiftOverlay/Tests/_javascript_ToSwiftTypeConversions.swift:
(_javascript_ToSwiftConversions.testUsingSwiftAsync): Adds a simple test
for the Swift async interface.
* SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj: Removed
use of WebKitAdditions, which is needed both to prevent redefinition
errors and because they are no longer necessary.
* UIProcess/API/Cocoa/WebKitSwiftOverlay.swift:
(WKWebView.callAsyncJavaScript(_:arguments:in:contentWorld:)):
(WKWebView.pdf(_:)):
(WKWebView.evaluateJavaScript(_:in:contentWorld:)):
(WKWebView.find(_:configuration:)):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (279071 => 279072)
--- trunk/Source/WebKit/ChangeLog 2021-06-21 18:44:02 UTC (rev 279071)
+++ trunk/Source/WebKit/ChangeLog 2021-06-21 18:46:31 UTC (rev 279072)
@@ -1,3 +1,22 @@
+2021-06-21 James Savage <[email protected]>
+
+ Upstream async support to Swift overlay.
+ https://bugs.webkit.org/show_bug.cgi?id=227006.
+
+ Reviewed by Alex Christensen.
+
+ * SwiftOverlay/Tests/_javascript_ToSwiftTypeConversions.swift:
+ (_javascript_ToSwiftConversions.testUsingSwiftAsync): Adds a simple test
+ for the Swift async interface.
+ * SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj: Removed
+ use of WebKitAdditions, which is needed both to prevent redefinition
+ errors and because they are no longer necessary.
+ * UIProcess/API/Cocoa/WebKitSwiftOverlay.swift:
+ (WKWebView.callAsyncJavaScript(_:arguments:in:contentWorld:)):
+ (WKWebView.pdf(_:)):
+ (WKWebView.evaluateJavaScript(_:in:contentWorld:)):
+ (WKWebView.find(_:configuration:)):
+
2021-06-21 Alex Christensen <[email protected]>
Add log when creating NSURLSession that will not accept cookies
Modified: trunk/Source/WebKit/SwiftOverlay/Tests/_javascript_ToSwiftTypeConversions.swift (279071 => 279072)
--- trunk/Source/WebKit/SwiftOverlay/Tests/_javascript_ToSwiftTypeConversions.swift 2021-06-21 18:44:02 UTC (rev 279071)
+++ trunk/Source/WebKit/SwiftOverlay/Tests/_javascript_ToSwiftTypeConversions.swift 2021-06-21 18:46:31 UTC (rev 279072)
@@ -120,4 +120,16 @@
wait(for: [evaluationExpectation], timeout: 30)
}
+
+ #if swift(>=5.5)
+ @available(iOS 15.0, macOS 12.0, *)
+ func testUsingSwiftAsync() async throws {
+ guard let result = try await webView.evaluateJavaScript(#""Hello, world!""#) as? String else {
+ XCTFail("Unexpected result from evaluating _javascript_.")
+ return
+ }
+
+ XCTAssertEqual(result, "Hello, world!")
+ }
+ #endif
}
Modified: trunk/Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj (279071 => 279072)
--- trunk/Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj 2021-06-21 18:44:02 UTC (rev 279071)
+++ trunk/Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj 2021-06-21 18:46:31 UTC (rev 279072)
@@ -17,8 +17,6 @@
B3B8FECD250090B1006172CA /* _javascript_ToSwiftTypeConversions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B8FECB250090B1006172CA /* _javascript_ToSwiftTypeConversions.swift */; };
B3B8FEEF2502BAA0006172CA /* ObjectiveCBlockConversions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B8FEEE2502BAA0006172CA /* ObjectiveCBlockConversions.swift */; };
B3B8FEF02502BAA0006172CA /* ObjectiveCBlockConversions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B8FEEE2502BAA0006172CA /* ObjectiveCBlockConversions.swift */; };
- B3DF244C2638BE240038D95A /* WebKitSwiftOverlayAdditions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B31B03FD2637EF6500D67EAD /* WebKitSwiftOverlayAdditions.swift */; };
- B3DF244D2638BE290038D95A /* WebKitSwiftOverlayAdditions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B31B03FD2637EF6500D67EAD /* WebKitSwiftOverlayAdditions.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -43,7 +41,6 @@
7D20068722F26721008DF640 /* libswiftWebKit.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libswiftWebKit.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
7D20070722F4EB72008DF640 /* WebKitSwiftOverlayTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WebKitSwiftOverlayTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
7D20071622F4ECCA008DF640 /* WebKitSwiftOverlayTests-maccatalyst.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "WebKitSwiftOverlayTests-maccatalyst.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
- B31B03FD2637EF6500D67EAD /* WebKitSwiftOverlayAdditions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WebKitSwiftOverlayAdditions.swift; path = usr/local/include/WebKitAdditions/WebKitSwiftOverlayAdditions.swift; sourceTree = BUILT_PRODUCTS_DIR; };
B3A5D38823F78F5400B17727 /* WebKitTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebKitTests.swift; sourceTree = "<group>"; };
B3A5D39123F790DB00B17727 /* WebKitSwiftOverlay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WebKitSwiftOverlay.swift; path = ../UIProcess/API/Cocoa/WebKitSwiftOverlay.swift; sourceTree = SOURCE_ROOT; };
B3A5D39423F790E100B17727 /* WebKitSwiftOverlay.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = WebKitSwiftOverlay.xcconfig; sourceTree = "<group>"; };
@@ -97,7 +94,6 @@
B3A5D39923F790E100B17727 /* install-swiftmodules.sh */,
B3B8FEEE2502BAA0006172CA /* ObjectiveCBlockConversions.swift */,
B3A5D39123F790DB00B17727 /* WebKitSwiftOverlay.swift */,
- B31B03FD2637EF6500D67EAD /* WebKitSwiftOverlayAdditions.swift */,
);
name = "Swift Overlay";
path = SwiftOverlay;
@@ -178,7 +174,6 @@
isa = PBXNativeTarget;
buildConfigurationList = 7D20067B22F2652E008DF640 /* Build configuration list for PBXNativeTarget "WebKitSwiftOverlay" */;
buildPhases = (
- B31B03FC2637EEBD00D67EAD /* Copy Additional Sources */,
7D20067122F2652E008DF640 /* Headers */,
7D20067222F2652E008DF640 /* Sources */,
7D20067322F2652E008DF640 /* Frameworks */,
@@ -197,7 +192,6 @@
isa = PBXNativeTarget;
buildConfigurationList = 7D20068D22F26721008DF640 /* Build configuration list for PBXNativeTarget "WebKitSwiftOverlay-maccatalyst" */;
buildPhases = (
- B31B04002637F22E00D67EAD /* Copy Additional Sources */,
7D20068322F26721008DF640 /* Headers */,
7D20068422F26721008DF640 /* Sources */,
7D20068522F26721008DF640 /* Frameworks */,
@@ -351,46 +345,6 @@
shellPath = /bin/sh;
shellScript = "exec \"${SOURCE_ROOT}/SwiftOverlay/install-swiftmodules.sh\"\n";
};
- B31B03FC2637EEBD00D67EAD /* Copy Additional Sources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "$(SDK_DIR)/usr/local/include/WebKitAdditions/WebKitSwiftOverlayAdditions.swift",
- );
- name = "Copy Additional Sources";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(BUILT_PRODUCTS_DIR)/usr/local/include/WebKitAdditions/WebKitSwiftOverlayAdditions.swift",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "set -e\n\nRELATIVE_SOURCE_PATH=\"usr/local/include/WebKitAdditions/WebKitSwiftOverlayAdditions.swift\"\nSOURCE_PATH=\"$SDK_DIR/$RELATIVE_SOURCE_PATH\"\nDESTINATION_PATH=\"$BUILT_PRODUCTS_DIR/$RELATIVE_SOURCE_PATH\"\n\nif [[ -e \"$SOURCE_PATH\" ]]; then\n ditto \"$SOURCE_PATH\" \"$DESTINATION_PATH\"\nelse\n touch \"$DESTINATION_PATH\"\nfi\n";
- };
- B31B04002637F22E00D67EAD /* Copy Additional Sources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "$(SDK_DIR)/usr/local/include/WebKitAdditions/WebKitSwiftOverlayAdditions.swift",
- );
- name = "Copy Additional Sources";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(BUILT_PRODUCTS_DIR)/usr/local/include/WebKitAdditions/WebKitSwiftOverlayAdditions.swift",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "set -e\n\nRELATIVE_SOURCE_PATH=\"usr/local/include/WebKitAdditions/WebKitSwiftOverlayAdditions.swift\"\nSOURCE_PATH=\"$SDK_DIR/$RELATIVE_SOURCE_PATH\"\nDESTINATION_PATH=\"$BUILT_PRODUCTS_DIR/$RELATIVE_SOURCE_PATH\"\n\nif [[ -e \"$SOURCE_PATH\" ]]; then\n ditto \"$SOURCE_PATH\" \"$DESTINATION_PATH\"\nelse\n touch \"$DESTINATION_PATH\"\nfi\n";
- };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -400,7 +354,6 @@
files = (
B3B8FEEF2502BAA0006172CA /* ObjectiveCBlockConversions.swift in Sources */,
B3A5D39223F790DB00B17727 /* WebKitSwiftOverlay.swift in Sources */,
- B3DF244C2638BE240038D95A /* WebKitSwiftOverlayAdditions.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -410,7 +363,6 @@
files = (
B3B8FEF02502BAA0006172CA /* ObjectiveCBlockConversions.swift in Sources */,
B3A5D39323F790DB00B17727 /* WebKitSwiftOverlay.swift in Sources */,
- B3DF244D2638BE290038D95A /* WebKitSwiftOverlayAdditions.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WebKitSwiftOverlay.swift (279071 => 279072)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WebKitSwiftOverlay.swift 2021-06-21 18:44:02 UTC (rev 279071)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WebKitSwiftOverlay.swift 2021-06-21 18:46:31 UTC (rev 279072)
@@ -55,3 +55,24 @@
__find(string, with: configuration, completionHandler: completionHandler)
}
}
+
+#if swift(>=5.5)
+@available(iOS 15.0, macOS 12.0, *)
+extension WKWebView {
+ public func callAsyncJavaScript(_ functionBody: String, arguments: [String:Any] = [:], in frame: WKFrameInfo? = nil, contentWorld: WKContentWorld) async throws -> Any? {
+ return try await __callAsyncJavaScript(functionBody, arguments: arguments, inFrame: frame, in: contentWorld)
+ }
+
+ public func pdf(configuration: WKPDFConfiguration = .init()) async throws -> Data {
+ try await __createPDF(with: configuration)
+ }
+
+ public func evaluateJavaScript(_ _javascript_: String, in frame: WKFrameInfo? = nil, contentWorld: WKContentWorld) async throws -> Any? {
+ try await __evaluateJavaScript(_javascript_, inFrame: frame, in: contentWorld)
+ }
+
+ public func find(_ string: String, configuration: WKFindConfiguration = .init()) async throws -> WKFindResult {
+ await __find(string, with: configuration)
+ }
+}
+#endif