Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 3.18.1

* Fixes bug that would allow the API wrapper to return `null` when a non-null value was required in
a callback method.
* Changes default method to enable JavaScript for web content to
`WKWebpagePreferences.allowsContentJavaScript`.

## 3.18.0

* Updates internal API wrapper to use ProxyApis.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,20 @@ import XCTest
@testable import webview_flutter_wkwebview

class PreferencesProxyAPITests: XCTestCase {
@MainActor func testSetJavaScriptEnabled() {
let registrar = TestProxyApiRegistrar()
let api = registrar.apiDelegate.pigeonApiWKPreferences(registrar)
@MainActor func testSetJavaScriptEnabled() throws {
if #available(iOS 14.0, macOS 11.0, *) {
throw XCTSkip("Required API is not available for this test.")

let instance = WKPreferences()
let enabled = true
try? api.pigeonDelegate.setJavaScriptEnabled(
pigeonApi: api, pigeonInstance: instance, enabled: enabled)
} else {
let registrar = TestProxyApiRegistrar()
let api = registrar.apiDelegate.pigeonApiWKPreferences(registrar)

XCTAssertEqual(instance.javaScriptEnabled, enabled)
let instance = WKPreferences()
let enabled = true
try? api.pigeonDelegate.setJavaScriptEnabled(
pigeonApi: api, pigeonInstance: instance, enabled: enabled)

XCTAssertEqual(instance.javaScriptEnabled, enabled)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -123,4 +123,16 @@ class WebViewConfigurationProxyAPITests: XCTestCase {

XCTAssertEqual(instance.mediaTypesRequiringUserActionForPlayback, [])
}

@available(iOS 13.0, macOS 10.15, *)
@MainActor func testGetDefaultWebpagePreferences() {
let registrar = TestProxyApiRegistrar()
let api = registrar.apiDelegate.pigeonApiWKWebViewConfiguration(registrar)

let instance = WKWebViewConfiguration()
let value = try? api.pigeonDelegate.getDefaultWebpagePreferences(
pigeonApi: api, pigeonInstance: instance)

XCTAssertEqual(value, instance.defaultWebpagePreferences)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import WebKit
import XCTest

@testable import webview_flutter_wkwebview

class WebpagePreferencesProxyAPITests: XCTestCase {
@available(iOS 14.0, macOS 11.0, *)
@MainActor func testSetAllowsContentJavaScript() {
let registrar = TestProxyApiRegistrar()
let api = registrar.apiDelegate.pigeonApiWKWebpagePreferences(registrar)

let instance = WKWebpagePreferences()
let allow = true
try? api.pigeonDelegate.setAllowsContentJavaScript(
pigeonApi: api, pigeonInstance: instance, allow: allow)

XCTAssertEqual(instance.allowsContentJavaScript, allow)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@ class PreferencesProxyAPIDelegate: PigeonApiDelegateWKPreferences {
func setJavaScriptEnabled(
pigeonApi: PigeonApiWKPreferences, pigeonInstance: WKPreferences, enabled: Bool
) throws {
pigeonInstance.javaScriptEnabled = enabled
if #available(iOS 14.0, macOS 11.0, *) {
// On iOS 14 and macOS 11, WKWebpagePreferences.allowsContentJavaScript should be
// used instead.
throw (pigeonApi.pigeonRegistrar as! ProxyAPIRegistrar)
.createUnsupportedVersionError(
method: "WKPreferences.javaScriptEnabled",
versionRequirements: "< iOS 14.0, macOS 11.0")
} else {
pigeonInstance.javaScriptEnabled = enabled
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -273,4 +273,11 @@ class ProxyAPIDelegate: WebKitLibraryPigeonProxyApiDelegate {
func pigeonApiURL(_ registrar: WebKitLibraryPigeonProxyApiRegistrar) -> PigeonApiURL {
return PigeonApiURL(pigeonRegistrar: registrar, delegate: URLProxyAPIDelegate())
}

func pigeonApiWKWebpagePreferences(_ registrar: WebKitLibraryPigeonProxyApiRegistrar)
-> PigeonApiWKWebpagePreferences
{
return PigeonApiWKWebpagePreferences(
pigeonRegistrar: registrar, delegate: WebpagePreferencesProxyAPIDelegate())
}
}
Loading