Skip to content

Commit

Permalink
Merge pull request #5 from cybozu/add-load-with-URLRequest
Browse files Browse the repository at this point in the history
Add a load method that takes URLRequest as an argument to WebViewProxy.
  • Loading branch information
Kyome22 authored May 15, 2024
2 parents fae50c0 + be0dd24 commit bf609ef
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 28 deletions.
2 changes: 1 addition & 1 deletion Examples/Examples/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ struct ContentView: View {
.border(Color.gray)
}
.onAppear {
proxy.load(url: viewState.requestURL)
proxy.load(request: viewState.request)
}
}
.padding()
Expand Down
4 changes: 2 additions & 2 deletions Examples/Examples/ContentViewState.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,15 @@ final class ContentViewState: NSObject, ObservableObject {
@Published var promptInput = ""

let configuration = WKWebViewConfiguration()
let requestURL = URL(string: "https://cybozu.github.io/webview-debugger")!
let request = URLRequest(url: URL(string: "https://cybozu.github.io/webview-debugger")!)

override init() {
super.init()
setCookie(name: "SampleKey", value: "SampleValue")
}

private func setCookie(name: String, value: String) {
if let domain = requestURL.host(), let cookie = HTTPCookie(properties: [
if let domain = request.url?.host(), let cookie = HTTPCookie(properties: [
HTTPCookiePropertyKey.name: name,
HTTPCookiePropertyKey.value: value,
HTTPCookiePropertyKey.domain: domain,
Expand Down
2 changes: 1 addition & 1 deletion Sources/WebUI/WebView+Extension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ extension WebView: View {
let webView = EnhancedWKWebView(frame: .zero, configuration: parent.configuration)
setUpWebViewProxy(webView)
parent.applyModifiers(to: webView)
parent.loadInitialURL(in: webView)
parent.loadInitialRequest(in: webView)
return webView
}

Expand Down
14 changes: 7 additions & 7 deletions Sources/WebUI/WebView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import WebKit
public struct WebView {
let configuration: WKWebViewConfiguration

private let initialURL: URL?
private let initialRequest: URLRequest?

private var uiDelegate: (any WKUIDelegate)?
private var navigationDelegate: (any WKNavigationDelegate)?
Expand All @@ -26,10 +26,10 @@ public struct WebView {

/// Creates new WebView.
/// - Parameters:
/// - url: The initial URL to load.
/// - request: The initial request specifying the URL to load.
/// - configuration: The configuration for the new web view.
public init(url: URL? = nil, configuration: WKWebViewConfiguration = .init()) {
self.initialURL = url
public init(request: URLRequest? = nil, configuration: WKWebViewConfiguration = .init()) {
self.initialRequest = request
self.configuration = configuration
}

Expand Down Expand Up @@ -109,9 +109,9 @@ public struct WebView {
}

@MainActor
func loadInitialURL(in webView: EnhancedWKWebView) {
if let initialURL {
webView.load(URLRequest(url: initialURL))
func loadInitialRequest(in webView: EnhancedWKWebView) {
if let initialRequest {
webView.load(initialRequest)
}
}
}
6 changes: 3 additions & 3 deletions Sources/WebUI/WebViewProxy.swift
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,9 @@ public final class WebViewProxy: ObservableObject {

/// Navigates to a requested URL.
/// - Parameters:
/// - url: The URL to which to navigate.
public func load(url: URL) {
webView?.load(URLRequest(url: url))
/// - request: The request specifying the URL to which to navigate.
public func load(request: URLRequest) {
webView?.load(request)
}

/// Reloads the current webpage.
Expand Down
4 changes: 2 additions & 2 deletions Tests/WebUITests/Mock.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
import WebKit

final class WKWebViewMock: EnhancedWKWebView {
private(set) var loadedURL: URL?
private(set) var loadedRequest: URLRequest?
private(set) var reloadCalled = false
private(set) var goBackCalled = false
private(set) var goForwardCalled = false
private(set) var javaScriptString: String?

override func load(_ request: URLRequest) -> WKNavigation? {
loadedURL = request.url
loadedRequest = request
return nil
}

Expand Down
8 changes: 4 additions & 4 deletions Tests/WebUITests/WebViewProxyTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ import XCTest

final class WebViewProxyTests: XCTestCase {
@MainActor
func test_load_the_specified_URL() {
func test_load_the_specified_URLRequest() {
let sut = WebViewProxy()
let webViewMock = WKWebViewMock()
sut.setUp(webViewMock)
let url = URL(string: "https://www.example.com")!
sut.load(url: url)
XCTAssertEqual(webViewMock.loadedURL, url)
let request = URLRequest(url: URL(string: "https://www.example.com")!)
sut.load(request: request)
XCTAssertEqual(webViewMock.loadedRequest, request)
}

@MainActor
Expand Down
16 changes: 8 additions & 8 deletions Tests/WebUITests/WebViewTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,19 @@ final class WebViewTests: XCTestCase {
}

@MainActor
func test_loadInitialURL_do_not_load_URL_if_URL_is_not_specified_in_init() {
func test_loadInitialRequest_do_not_load_URL_request_if_request_is_not_specified_in_init() {
let sut = WebView()
let webViewMock = WKWebViewMock()
sut.loadInitialURL(in: webViewMock)
XCTAssertNil(webViewMock.loadedURL)
sut.loadInitialRequest(in: webViewMock)
XCTAssertNil(webViewMock.loadedRequest)
}

@MainActor
func test_loadInitialURL_load_URL_if_URL_is_specified_in_init() {
let url = URL(string: "https://www.example.com")!
let sut = WebView(url: url)
func test_loadInitialRequest_load_URL_request_if_request_is_specified_in_init() {
let request = URLRequest(url: URL(string: "https://www.example.com")!)
let sut = WebView(request: request)
let webViewMock = WKWebViewMock()
sut.loadInitialURL(in: webViewMock)
XCTAssertEqual(webViewMock.loadedURL, url)
sut.loadInitialRequest(in: webViewMock)
XCTAssertEqual(webViewMock.loadedRequest, request)
}
}

0 comments on commit bf609ef

Please sign in to comment.