code format
This commit is contained in:
parent
a3c20be1e7
commit
3b2add4199
|
@ -21,9 +21,7 @@ void customActionButton() {
|
|||
id: 1,
|
||||
description: 'Action Button description',
|
||||
icon: actionButtonIcon.buffer.asUint8List(),
|
||||
action: (url, title) {
|
||||
|
||||
}));
|
||||
action: (url, title) {}));
|
||||
expect(chromeSafariBrowser.isOpened(), false);
|
||||
|
||||
await chromeSafariBrowser.open(url: TEST_URL_1);
|
||||
|
|
|
@ -17,11 +17,7 @@ void customMenuItem() {
|
|||
test('add custom menu item', () async {
|
||||
var chromeSafariBrowser = MyChromeSafariBrowser();
|
||||
chromeSafariBrowser.addMenuItem(ChromeSafariBrowserMenuItem(
|
||||
id: 2,
|
||||
label: 'Custom item menu 1',
|
||||
action: (url, title) {
|
||||
|
||||
}));
|
||||
id: 2, label: 'Custom item menu 1', action: (url, title) {}));
|
||||
expect(chromeSafariBrowser.isOpened(), false);
|
||||
|
||||
await chromeSafariBrowser.open(url: TEST_URL_1);
|
||||
|
|
|
@ -3,16 +3,23 @@ final TEST_CROSS_PLATFORM_URL_1 = Uri.parse('https://flutter.dev/');
|
|||
final TEST_CROSS_PLATFORM_URL_2 = Uri.parse('https://www.bing.com/');
|
||||
final TEST_URL_1 = Uri.parse('https://github.com/flutter');
|
||||
final TEST_URL_2 = Uri.parse('https://www.google.com/');
|
||||
final TEST_URL_3 = Uri.parse('https://github.com/pichillilorenzo/flutter_inappwebview');
|
||||
final TEST_URL_3 =
|
||||
Uri.parse('https://github.com/pichillilorenzo/flutter_inappwebview');
|
||||
final TEST_URL_4 = Uri.parse('https://www.youtube.com/');
|
||||
final TEST_URL_EXAMPLE = Uri.parse('https://www.example.com/');
|
||||
final TEST_URL_HTTP_EXAMPLE = Uri.parse('http://www.example.com/');
|
||||
final TEST_URL_404 = Uri.parse('https://google.com/404');
|
||||
final TEST_WEB_PLATFORM_BASE_URL = Uri.parse(Uri.base.toString().replaceFirst("/#/", "/"));
|
||||
final TEST_WEB_PLATFORM_URL_1 = Uri.parse(TEST_WEB_PLATFORM_BASE_URL.toString() + 'page.html');
|
||||
final TEST_WEB_PLATFORM_URL_2 = Uri.parse(TEST_WEB_PLATFORM_BASE_URL.toString() + 'page-2.html');
|
||||
final TEST_WEB_PLATFORM_URL_3 = Uri.parse(TEST_WEB_PLATFORM_BASE_URL.toString() + 'heavy-page.html');
|
||||
final TEST_WEB_PLATFORM_BASE_URL =
|
||||
Uri.parse(Uri.base.toString().replaceFirst("/#/", "/"));
|
||||
final TEST_WEB_PLATFORM_URL_1 =
|
||||
Uri.parse(TEST_WEB_PLATFORM_BASE_URL.toString() + 'page.html');
|
||||
final TEST_WEB_PLATFORM_URL_2 =
|
||||
Uri.parse(TEST_WEB_PLATFORM_BASE_URL.toString() + 'page-2.html');
|
||||
final TEST_WEB_PLATFORM_URL_3 =
|
||||
Uri.parse(TEST_WEB_PLATFORM_BASE_URL.toString() + 'heavy-page.html');
|
||||
final TEST_NOT_A_WEBSITE_URL = Uri.parse('https://www.notawebsite..com/');
|
||||
final TEST_CHROME_SAFE_BROWSING_MALWARE = Uri.parse('chrome://safe-browsing/match?type=malware');
|
||||
final TEST_CHROME_SAFE_BROWSING_MALWARE =
|
||||
Uri.parse('chrome://safe-browsing/match?type=malware');
|
||||
final TEST_PERMISSION_SITE = Uri.parse('https://permission.site/');
|
||||
final TEST_SERVICE_WORKER_URL = Uri.parse('https://mdn.github.io/dom-examples/service-worker/simple-service-worker/');
|
||||
final TEST_SERVICE_WORKER_URL = Uri.parse(
|
||||
'https://mdn.github.io/dom-examples/service-worker/simple-service-worker/');
|
||||
|
|
|
@ -9,10 +9,10 @@ void findInteractions() {
|
|||
final shouldSkip = kIsWeb
|
||||
? true
|
||||
: ![
|
||||
TargetPlatform.android,
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
TargetPlatform.android,
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
|
||||
testWidgets('find interactions', (WidgetTester tester) async {
|
||||
final Completer controllerCompleter = Completer<InAppWebViewController>();
|
||||
|
@ -27,9 +27,7 @@ void findInteractions() {
|
|||
initialFile: "test_assets/in_app_webview_initial_file_test.html",
|
||||
findInteractionController: findInteractionController,
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
isFindInteractionEnabled: true
|
||||
),
|
||||
clearCache: true, isFindInteractionEnabled: true),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
},
|
||||
|
@ -46,17 +44,23 @@ void findInteractions() {
|
|||
await Future.delayed(Duration(seconds: 1));
|
||||
|
||||
const firstSearchText = "InAppWebViewInitialFileTest";
|
||||
await expectLater(findInteractionController.findAllAsync(find: firstSearchText), completes);
|
||||
if ([TargetPlatform.iOS, TargetPlatform.macOS].contains(defaultTargetPlatform)) {
|
||||
await expectLater(
|
||||
findInteractionController.findAllAsync(find: firstSearchText),
|
||||
completes);
|
||||
if ([TargetPlatform.iOS, TargetPlatform.macOS]
|
||||
.contains(defaultTargetPlatform)) {
|
||||
expect(await findInteractionController.getSearchText(), firstSearchText);
|
||||
final session = await findInteractionController.getActiveFindSession();
|
||||
expect(session!.resultCount, 2);
|
||||
}
|
||||
await expectLater(findInteractionController.findNext(forward: true), completes);
|
||||
await expectLater(findInteractionController.findNext(forward: false), completes);
|
||||
await expectLater(
|
||||
findInteractionController.findNext(forward: true), completes);
|
||||
await expectLater(
|
||||
findInteractionController.findNext(forward: false), completes);
|
||||
await expectLater(findInteractionController.clearMatches(), completes);
|
||||
|
||||
if ([TargetPlatform.iOS, TargetPlatform.macOS].contains(defaultTargetPlatform)) {
|
||||
if ([TargetPlatform.iOS, TargetPlatform.macOS]
|
||||
.contains(defaultTargetPlatform)) {
|
||||
const secondSearchText = "text";
|
||||
await expectLater(
|
||||
findInteractionController.setSearchText(secondSearchText), completes);
|
||||
|
@ -64,7 +68,8 @@ void findInteractions() {
|
|||
findInteractionController.presentFindNavigator(), completes);
|
||||
expect(await findInteractionController.getSearchText(), secondSearchText);
|
||||
expect(await findInteractionController.isFindNavigatorVisible(), true);
|
||||
await expectLater(findInteractionController.updateResultCount(), completes);
|
||||
await expectLater(
|
||||
findInteractionController.updateResultCount(), completes);
|
||||
await expectLater(
|
||||
findInteractionController.dismissFindNavigator(), completes);
|
||||
expect(await findInteractionController.isFindNavigatorVisible(), false);
|
||||
|
@ -91,9 +96,7 @@ void findInteractions() {
|
|||
key: GlobalKey(),
|
||||
initialFile: "test_assets/in_app_webview_initial_file_test.html",
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
isFindInteractionEnabled: false
|
||||
),
|
||||
clearCache: true, isFindInteractionEnabled: false),
|
||||
findInteractionController: findInteractionController,
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
|
|
|
@ -7,20 +7,20 @@ import 'package:flutter_test/flutter_test.dart';
|
|||
import '../constants.dart';
|
||||
|
||||
void runAndDispose() {
|
||||
final shouldSkip = kIsWeb ? false :
|
||||
![
|
||||
TargetPlatform.android,
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
final shouldSkip = kIsWeb
|
||||
? false
|
||||
: ![
|
||||
TargetPlatform.android,
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
|
||||
test('run and dispose', () async {
|
||||
final Completer controllerCompleter = Completer<InAppWebViewController>();
|
||||
final Completer<void> pageLoaded = Completer<void>();
|
||||
|
||||
var headlessWebView = new HeadlessInAppWebView(
|
||||
initialUrlRequest:
|
||||
URLRequest(url: TEST_CROSS_PLATFORM_URL_1),
|
||||
initialUrlRequest: URLRequest(url: TEST_CROSS_PLATFORM_URL_1),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
},
|
||||
|
@ -32,8 +32,7 @@ void runAndDispose() {
|
|||
await headlessWebView.run();
|
||||
expect(headlessWebView.isRunning(), true);
|
||||
|
||||
final InAppWebViewController controller =
|
||||
await controllerCompleter.future;
|
||||
final InAppWebViewController controller = await controllerCompleter.future;
|
||||
await pageLoaded.future;
|
||||
|
||||
final String? url = (await controller.getUrl())?.toString();
|
||||
|
|
|
@ -20,8 +20,7 @@ void takeScreenshot() {
|
|||
final Completer<void> pageLoaded = Completer<void>();
|
||||
|
||||
var headlessWebView = new HeadlessInAppWebView(
|
||||
initialUrlRequest:
|
||||
URLRequest(url: TEST_URL_1),
|
||||
initialUrlRequest: URLRequest(url: TEST_URL_1),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
},
|
||||
|
@ -32,8 +31,7 @@ void takeScreenshot() {
|
|||
await headlessWebView.run();
|
||||
expect(headlessWebView.isRunning(), true);
|
||||
|
||||
final InAppWebViewController controller =
|
||||
await controllerCompleter.future;
|
||||
final InAppWebViewController controller = await controllerCompleter.future;
|
||||
await pageLoaded.future;
|
||||
|
||||
final String? url = (await controller.getUrl())?.toString();
|
||||
|
|
|
@ -60,10 +60,10 @@ void initialUrlRequest() {
|
|||
final shouldSkipTest1 = kIsWeb
|
||||
? false
|
||||
: ![
|
||||
TargetPlatform.android,
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
TargetPlatform.android,
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
|
||||
testWidgets('basic', (WidgetTester tester) async {
|
||||
final Completer<void> pageLoaded = Completer<void>();
|
||||
|
@ -87,7 +87,7 @@ void initialUrlRequest() {
|
|||
|
||||
await pageLoaded.future;
|
||||
final InAppWebViewController controller =
|
||||
await controllerCompleter.future;
|
||||
await controllerCompleter.future;
|
||||
final String? currentUrl = (await controller.getUrl())?.toString();
|
||||
|
||||
expect(currentUrl, TEST_CROSS_PLATFORM_URL_1.toString());
|
||||
|
|
|
@ -8,11 +8,12 @@ import 'package:flutter_test/flutter_test.dart';
|
|||
import 'package:path_provider/path_provider.dart';
|
||||
|
||||
void loadFileUrl() {
|
||||
final shouldSkip = kIsWeb ? true :
|
||||
![
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
final shouldSkip = kIsWeb
|
||||
? true
|
||||
: ![
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
|
||||
group('load file URL', () {
|
||||
late Directory appSupportDir;
|
||||
|
@ -83,8 +84,8 @@ void loadFileUrl() {
|
|||
initialUrlRequest:
|
||||
URLRequest(url: Uri.parse('file://${fileHtml.path}')),
|
||||
initialSettings: InAppWebViewSettings(
|
||||
allowingReadAccessTo:
|
||||
Uri.parse('file://${appSupportDir.path}/')),
|
||||
allowingReadAccessTo:
|
||||
Uri.parse('file://${appSupportDir.path}/')),
|
||||
onConsoleMessage: (controller, consoleMessage) {
|
||||
consoleMessageCompleter.complete(consoleMessage);
|
||||
},
|
||||
|
|
|
@ -9,12 +9,13 @@ import 'package:flutter_test/flutter_test.dart';
|
|||
import '../constants.dart';
|
||||
|
||||
void loadUrl() {
|
||||
final shouldSkip1 = kIsWeb ? false :
|
||||
![
|
||||
TargetPlatform.android,
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
final shouldSkip1 = kIsWeb
|
||||
? false
|
||||
: ![
|
||||
TargetPlatform.android,
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
|
||||
var initialUrl = !kIsWeb ? TEST_URL_1 : TEST_WEB_PLATFORM_URL_1;
|
||||
|
||||
|
@ -28,23 +29,23 @@ void loadUrl() {
|
|||
textDirection: TextDirection.ltr,
|
||||
child: InAppWebView(
|
||||
key: GlobalKey(),
|
||||
initialUrlRequest:
|
||||
URLRequest(url: initialUrl),
|
||||
initialUrlRequest: URLRequest(url: initialUrl),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
},
|
||||
onLoadStop: (controller, url) {
|
||||
if (url.toString() == initialUrl.toString() && !firstUrlLoad.isCompleted) {
|
||||
if (url.toString() == initialUrl.toString() &&
|
||||
!firstUrlLoad.isCompleted) {
|
||||
firstUrlLoad.complete(url.toString());
|
||||
} else if (url.toString() == TEST_CROSS_PLATFORM_URL_1.toString() && !loadedUrl.isCompleted) {
|
||||
} else if (url.toString() == TEST_CROSS_PLATFORM_URL_1.toString() &&
|
||||
!loadedUrl.isCompleted) {
|
||||
loadedUrl.complete(url.toString());
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
final InAppWebViewController controller =
|
||||
await controllerCompleter.future;
|
||||
final InAppWebViewController controller = await controllerCompleter.future;
|
||||
expect(await firstUrlLoad.future, initialUrl.toString());
|
||||
|
||||
await controller.loadUrl(
|
||||
|
@ -52,11 +53,12 @@ void loadUrl() {
|
|||
expect(await loadedUrl.future, TEST_CROSS_PLATFORM_URL_1.toString());
|
||||
}, skip: shouldSkip1);
|
||||
|
||||
final shouldSkip2 = kIsWeb ? true :
|
||||
![
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
final shouldSkip2 = kIsWeb
|
||||
? true
|
||||
: ![
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
|
||||
testWidgets('loadSimulatedRequest', (WidgetTester tester) async {
|
||||
final Completer controllerCompleter = Completer<InAppWebViewController>();
|
||||
|
@ -68,31 +70,34 @@ void loadUrl() {
|
|||
textDirection: TextDirection.ltr,
|
||||
child: InAppWebView(
|
||||
key: GlobalKey(),
|
||||
initialUrlRequest:
|
||||
URLRequest(url: initialUrl),
|
||||
initialUrlRequest: URLRequest(url: initialUrl),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
},
|
||||
onLoadStop: (controller, url) {
|
||||
if (url.toString() == initialUrl.toString() && !firstUrlLoad.isCompleted) {
|
||||
if (url.toString() == initialUrl.toString() &&
|
||||
!firstUrlLoad.isCompleted) {
|
||||
firstUrlLoad.complete(url.toString());
|
||||
} else if (url.toString() == TEST_CROSS_PLATFORM_URL_1.toString() && !loadedUrl.isCompleted) {
|
||||
} else if (url.toString() == TEST_CROSS_PLATFORM_URL_1.toString() &&
|
||||
!loadedUrl.isCompleted) {
|
||||
loadedUrl.complete(url.toString());
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
final InAppWebViewController controller =
|
||||
await controllerCompleter.future;
|
||||
final InAppWebViewController controller = await controllerCompleter.future;
|
||||
expect(await firstUrlLoad.future, initialUrl.toString());
|
||||
|
||||
final htmlCode = "<h1>Hello</h1>";
|
||||
await controller.loadSimulatedRequest(
|
||||
urlRequest: URLRequest(url: TEST_CROSS_PLATFORM_URL_1),
|
||||
data: Uint8List.fromList(utf8.encode(htmlCode))
|
||||
);
|
||||
data: Uint8List.fromList(utf8.encode(htmlCode)));
|
||||
expect(await loadedUrl.future, TEST_CROSS_PLATFORM_URL_1.toString());
|
||||
expect((await controller.evaluateJavascript(source: "document.body.innerHTML")).toString().trim(), htmlCode);
|
||||
expect(
|
||||
(await controller.evaluateJavascript(source: "document.body.innerHTML"))
|
||||
.toString()
|
||||
.trim(),
|
||||
htmlCode);
|
||||
}, skip: shouldSkip2);
|
||||
}
|
||||
|
|
|
@ -168,4 +168,4 @@ void main() {
|
|||
applePayAPI();
|
||||
handlesURLScheme();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ void onJsBeforeUnload() {
|
|||
);
|
||||
|
||||
final String url = await onJsBeforeUnloadCompleter.future;
|
||||
expect(url, endsWith("test_assets/in_app_webview_on_js_before_unload.html"));
|
||||
expect(
|
||||
url, endsWith("test_assets/in_app_webview_on_js_before_unload.html"));
|
||||
}, skip: shouldSkip);
|
||||
}
|
||||
|
|
|
@ -19,7 +19,8 @@ void onReceivedError() {
|
|||
group('onReceivedError', () {
|
||||
testWidgets('invalid url', (WidgetTester tester) async {
|
||||
final Completer<String> errorUrlCompleter = Completer<String>();
|
||||
final Completer<WebResourceErrorType> errorCodeCompleter = Completer<WebResourceErrorType>();
|
||||
final Completer<WebResourceErrorType> errorCodeCompleter =
|
||||
Completer<WebResourceErrorType>();
|
||||
|
||||
await tester.pumpWidget(
|
||||
Directionality(
|
||||
|
|
|
@ -103,8 +103,8 @@ void programmaticScroll() {
|
|||
final shouldSkipTest2 = kIsWeb
|
||||
? true
|
||||
: ![
|
||||
TargetPlatform.android,
|
||||
].contains(defaultTargetPlatform);
|
||||
TargetPlatform.android,
|
||||
].contains(defaultTargetPlatform);
|
||||
|
||||
testWidgets(
|
||||
'set and get scroll position on Android without Hybrid Composition',
|
||||
|
|
|
@ -166,9 +166,9 @@ void videoPlaybackPolicy() {
|
|||
final shouldSkipTest3 = kIsWeb
|
||||
? true
|
||||
: ![
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
|
||||
testWidgets(
|
||||
'Video plays fullscreen when allowsInlineMediaPlayback is false',
|
||||
|
@ -213,9 +213,9 @@ void videoPlaybackPolicy() {
|
|||
final shouldSkipTest4 = kIsWeb
|
||||
? true
|
||||
: ![
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
TargetPlatform.iOS,
|
||||
TargetPlatform.macOS,
|
||||
].contains(defaultTargetPlatform);
|
||||
// on Android, entering fullscreen requires user interaction
|
||||
testWidgets('exit fullscreen event', (WidgetTester tester) async {
|
||||
Completer<InAppWebViewController> controllerCompleter =
|
||||
|
|
|
@ -152,7 +152,8 @@ void webHistory() {
|
|||
var url = await pageLoads.stream.first;
|
||||
expect(url, TEST_WEB_PLATFORM_URL_1.toString());
|
||||
|
||||
await controller.evaluateJavascript(source: "document.getElementById('link-page-2').click();");
|
||||
await controller.evaluateJavascript(
|
||||
source: "document.getElementById('link-page-2').click();");
|
||||
url = await pageLoads.stream.first;
|
||||
expect(url, TEST_WEB_PLATFORM_URL_2.toString());
|
||||
|
||||
|
|
|
@ -19,15 +19,15 @@ void clearAndSetProxyOverride() {
|
|||
final Completer controllerCompleter = Completer<InAppWebViewController>();
|
||||
final Completer<String> pageLoaded = Completer<String>();
|
||||
|
||||
var proxyAvailable = await WebViewFeature.isFeatureSupported(
|
||||
WebViewFeature.PROXY_OVERRIDE);
|
||||
var proxyAvailable =
|
||||
await WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE);
|
||||
|
||||
if (proxyAvailable) {
|
||||
ProxyController proxyController =
|
||||
ProxyController.instance();
|
||||
ProxyController proxyController = ProxyController.instance();
|
||||
|
||||
await proxyController.clearProxyOverride();
|
||||
await proxyController.setProxyOverride(settings: ProxySettings(
|
||||
await proxyController.setProxyOverride(
|
||||
settings: ProxySettings(
|
||||
proxyRules: [ProxyRule(url: "${environment["NODE_SERVER_IP"]}:8083")],
|
||||
));
|
||||
}
|
||||
|
@ -53,8 +53,17 @@ void clearAndSetProxyOverride() {
|
|||
final String url = await pageLoaded.future;
|
||||
expect(url, TEST_URL_HTTP_EXAMPLE.toString());
|
||||
|
||||
expect(await controller.evaluateJavascript(source: "document.getElementById('url').innerHTML;"), TEST_URL_HTTP_EXAMPLE.toString());
|
||||
expect(await controller.evaluateJavascript(source: "document.getElementById('method').innerHTML;"), "GET");
|
||||
expect(await controller.evaluateJavascript(source: "document.getElementById('headers').innerHTML;"), isNotNull);
|
||||
expect(
|
||||
await controller.evaluateJavascript(
|
||||
source: "document.getElementById('url').innerHTML;"),
|
||||
TEST_URL_HTTP_EXAMPLE.toString());
|
||||
expect(
|
||||
await controller.evaluateJavascript(
|
||||
source: "document.getElementById('method').innerHTML;"),
|
||||
"GET");
|
||||
expect(
|
||||
await controller.evaluateJavascript(
|
||||
source: "document.getElementById('headers').innerHTML;"),
|
||||
isNotNull);
|
||||
}, skip: shouldSkip);
|
||||
}
|
||||
|
|
|
@ -9,4 +9,4 @@ void main() {
|
|||
group('Proxy Controller', () {
|
||||
clearAndSetProxyOverride();
|
||||
}, skip: shouldSkip);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,4 +11,4 @@ void main() {
|
|||
shouldInterceptRequest();
|
||||
setServiceWorkerClient();
|
||||
}, skip: shouldSkip);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,4 +72,4 @@ class MyChromeSafariBrowser extends ChromeSafariBrowser {
|
|||
void onClosed() {
|
||||
browserClosed.complete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,8 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
|||
import 'package:integration_test/integration_test.dart';
|
||||
|
||||
import 'in_app_webview/main.dart' as in_app_webview_tests;
|
||||
import 'find_interaction_controller/main.dart' as find_interaction_controller_tests;
|
||||
import 'find_interaction_controller/main.dart'
|
||||
as find_interaction_controller_tests;
|
||||
import 'service_worker_controller/main.dart' as service_worker_controller_tests;
|
||||
import 'proxy_controller/main.dart' as proxy_controller_tests;
|
||||
import 'headless_in_app_webview/main.dart' as headless_in_app_webview_tests;
|
||||
|
|
|
@ -184,7 +184,8 @@ class ServiceWorkerController {
|
|||
///This method should only be called if [WebViewFeature.isFeatureSupported] returns `true` for [WebViewFeature.REQUESTED_WITH_HEADER_CONTROL].
|
||||
///
|
||||
///**Official Android API**: https://developer.android.com/reference/androidx/webkit/ServiceWorkerWebSettingsCompat#setRequestedWithHeaderMode(int)
|
||||
static Future<void> setRequestedWithHeaderMode(RequestedWithHeaderMode mode) async {
|
||||
static Future<void> setRequestedWithHeaderMode(
|
||||
RequestedWithHeaderMode mode) async {
|
||||
Map<String, dynamic> args = <String, dynamic>{};
|
||||
args.putIfAbsent("mode", () => mode.toNativeValue());
|
||||
await _channel.invokeMethod('setRequestedWithHeaderMode', args);
|
||||
|
|
|
@ -134,7 +134,8 @@ class WebViewFeature_ {
|
|||
|
||||
///This feature covers [ServiceWorkerClient.shouldInterceptRequest].
|
||||
static const SERVICE_WORKER_SHOULD_INTERCEPT_REQUEST =
|
||||
const WebViewFeature_._internal("SERVICE_WORKER_SHOULD_INTERCEPT_REQUEST");
|
||||
const WebViewFeature_._internal(
|
||||
"SERVICE_WORKER_SHOULD_INTERCEPT_REQUEST");
|
||||
|
||||
///
|
||||
static const SHOULD_OVERRIDE_WITH_REDIRECTS =
|
||||
|
@ -210,7 +211,8 @@ class WebViewFeature_ {
|
|||
|
||||
///This feature covers [InAppWebViewSettings.enterpriseAuthenticationAppLinkPolicyEnabled].
|
||||
static const ENTERPRISE_AUTHENTICATION_APP_LINK_POLICY =
|
||||
const WebViewFeature_._internal("ENTERPRISE_AUTHENTICATION_APP_LINK_POLICY");
|
||||
const WebViewFeature_._internal(
|
||||
"ENTERPRISE_AUTHENTICATION_APP_LINK_POLICY");
|
||||
|
||||
///Return whether a feature is supported at run-time. On devices running Android version `Build.VERSION_CODES.LOLLIPOP` and higher,
|
||||
///this will check whether a feature is supported, depending on the combination of the desired feature, the Android version of device,
|
||||
|
@ -249,7 +251,8 @@ class AndroidWebViewFeature_ {
|
|||
const AndroidWebViewFeature_._internal("DISABLED_ACTION_MODE_MENU_ITEMS");
|
||||
|
||||
///
|
||||
static const FORCE_DARK = const AndroidWebViewFeature_._internal("FORCE_DARK");
|
||||
static const FORCE_DARK =
|
||||
const AndroidWebViewFeature_._internal("FORCE_DARK");
|
||||
|
||||
///
|
||||
static const FORCE_DARK_STRATEGY =
|
||||
|
@ -305,7 +308,8 @@ class AndroidWebViewFeature_ {
|
|||
|
||||
///
|
||||
static const SAFE_BROWSING_PRIVACY_POLICY_URL =
|
||||
const AndroidWebViewFeature_._internal("SAFE_BROWSING_PRIVACY_POLICY_URL");
|
||||
const AndroidWebViewFeature_._internal(
|
||||
"SAFE_BROWSING_PRIVACY_POLICY_URL");
|
||||
|
||||
///
|
||||
static const SAFE_BROWSING_RESPONSE_BACK_TO_SAFETY =
|
||||
|
@ -400,7 +404,8 @@ class AndroidWebViewFeature_ {
|
|||
|
||||
///
|
||||
static const WEB_RESOURCE_REQUEST_IS_REDIRECT =
|
||||
const AndroidWebViewFeature_._internal("WEB_RESOURCE_REQUEST_IS_REDIRECT");
|
||||
const AndroidWebViewFeature_._internal(
|
||||
"WEB_RESOURCE_REQUEST_IS_REDIRECT");
|
||||
|
||||
///
|
||||
static const WEB_VIEW_RENDERER_CLIENT_BASIC_USAGE =
|
||||
|
@ -417,7 +422,7 @@ class AndroidWebViewFeature_ {
|
|||
|
||||
///This feature covers [InAppWebViewSettings.willSuppressErrorPage].
|
||||
static const SUPPRESS_ERROR_PAGE =
|
||||
const AndroidWebViewFeature_._internal("SUPPRESS_ERROR_PAGE");
|
||||
const AndroidWebViewFeature_._internal("SUPPRESS_ERROR_PAGE");
|
||||
|
||||
///This feature covers [InAppWebViewSettings.algorithmicDarkeningAllowed].
|
||||
static const ALGORITHMIC_DARKENING =
|
||||
|
@ -429,7 +434,8 @@ class AndroidWebViewFeature_ {
|
|||
|
||||
///This feature covers [InAppWebViewSettings.enterpriseAuthenticationAppLinkPolicyEnabled].
|
||||
static const ENTERPRISE_AUTHENTICATION_APP_LINK_POLICY =
|
||||
const AndroidWebViewFeature_._internal("ENTERPRISE_AUTHENTICATION_APP_LINK_POLICY");
|
||||
const AndroidWebViewFeature_._internal(
|
||||
"ENTERPRISE_AUTHENTICATION_APP_LINK_POLICY");
|
||||
|
||||
///Return whether a feature is supported at run-time. On devices running Android version `Build.VERSION_CODES.LOLLIPOP` and higher,
|
||||
///this will check whether a feature is supported, depending on the combination of the desired feature, the Android version of device,
|
||||
|
|
|
@ -150,7 +150,8 @@ class ContentBlockerTrigger {
|
|||
}
|
||||
});
|
||||
|
||||
List<String> loadContextStringList = List<String>.from(map["load-context"] ?? []);
|
||||
List<String> loadContextStringList =
|
||||
List<String>.from(map["load-context"] ?? []);
|
||||
loadContextStringList.forEach((typeValue) {
|
||||
var context = ContentBlockerTriggerLoadContext.fromNativeValue(typeValue);
|
||||
if (context != null) {
|
||||
|
@ -185,15 +186,17 @@ class ContentBlockerAction {
|
|||
///It specify a string that defines a selector list. Use CSS identifiers as the individual selector values, separated by commas.
|
||||
String? selector;
|
||||
|
||||
ContentBlockerAction(
|
||||
{required this.type, this.selector}) {
|
||||
ContentBlockerAction({required this.type, this.selector}) {
|
||||
if (this.type == ContentBlockerActionType.CSS_DISPLAY_NONE) {
|
||||
assert(this.selector != null);
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
Map<String, dynamic> map = {"type": type.toNativeValue(), "selector": selector};
|
||||
Map<String, dynamic> map = {
|
||||
"type": type.toNativeValue(),
|
||||
"selector": selector
|
||||
};
|
||||
|
||||
map.keys
|
||||
.where((key) =>
|
||||
|
|
|
@ -161,7 +161,8 @@ class CookieManager {
|
|||
|
||||
if (isSecure != null && isSecure) cookieValue += "; Secure";
|
||||
|
||||
if (sameSite != null) cookieValue += "; SameSite=" + sameSite.toNativeValue();
|
||||
if (sameSite != null)
|
||||
cookieValue += "; SameSite=" + sameSite.toNativeValue();
|
||||
|
||||
cookieValue += ";";
|
||||
|
||||
|
@ -243,7 +244,8 @@ class CookieManager {
|
|||
expiresDate: cookieMap["expiresDate"],
|
||||
isSessionOnly: cookieMap["isSessionOnly"],
|
||||
domain: cookieMap["domain"],
|
||||
sameSite: HTTPCookieSameSitePolicy.fromNativeValue(cookieMap["sameSite"]),
|
||||
sameSite:
|
||||
HTTPCookieSameSitePolicy.fromNativeValue(cookieMap["sameSite"]),
|
||||
isSecure: cookieMap["isSecure"],
|
||||
isHttpOnly: cookieMap["isHttpOnly"],
|
||||
path: cookieMap["path"]));
|
||||
|
@ -364,8 +366,8 @@ class CookieManager {
|
|||
expiresDate: cookies[i]["expiresDate"],
|
||||
isSessionOnly: cookies[i]["isSessionOnly"],
|
||||
domain: cookies[i]["domain"],
|
||||
sameSite:
|
||||
HTTPCookieSameSitePolicy.fromNativeValue(cookies[i]["sameSite"]),
|
||||
sameSite: HTTPCookieSameSitePolicy.fromNativeValue(
|
||||
cookies[i]["sameSite"]),
|
||||
isSecure: cookies[i]["isSecure"],
|
||||
isHttpOnly: cookies[i]["isHttpOnly"],
|
||||
path: cookies[i]["path"]);
|
||||
|
@ -533,7 +535,8 @@ class CookieManager {
|
|||
expiresDate: cookieMap["expiresDate"],
|
||||
isSessionOnly: cookieMap["isSessionOnly"],
|
||||
domain: cookieMap["domain"],
|
||||
sameSite: HTTPCookieSameSitePolicy.fromNativeValue(cookieMap["sameSite"]),
|
||||
sameSite:
|
||||
HTTPCookieSameSitePolicy.fromNativeValue(cookieMap["sameSite"]),
|
||||
isSecure: cookieMap["isSecure"],
|
||||
isHttpOnly: cookieMap["isHttpOnly"],
|
||||
path: cookieMap["path"]));
|
||||
|
@ -595,7 +598,8 @@ class IOSCookieManager {
|
|||
expiresDate: cookieMap["expiresDate"],
|
||||
isSessionOnly: cookieMap["isSessionOnly"],
|
||||
domain: cookieMap["domain"],
|
||||
sameSite: HTTPCookieSameSitePolicy.fromNativeValue(cookieMap["sameSite"]),
|
||||
sameSite:
|
||||
HTTPCookieSameSitePolicy.fromNativeValue(cookieMap["sameSite"]),
|
||||
isSecure: cookieMap["isSecure"],
|
||||
isHttpOnly: cookieMap["isHttpOnly"],
|
||||
path: cookieMap["path"]));
|
||||
|
|
|
@ -24,10 +24,9 @@ class DebugLoggingSettings {
|
|||
///Use [print] instead of `developer.log` to log messages.
|
||||
bool usePrint;
|
||||
|
||||
DebugLoggingSettings({
|
||||
this.enabled = kDebugMode,
|
||||
this.excludeFilter = const [],
|
||||
this.maxLogMessageLength = -1,
|
||||
this.usePrint = false
|
||||
});
|
||||
}
|
||||
DebugLoggingSettings(
|
||||
{this.enabled = kDebugMode,
|
||||
this.excludeFilter = const [],
|
||||
this.maxLogMessageLength = -1,
|
||||
this.usePrint = false});
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
export 'find_interaction_controller.dart';
|
||||
export 'find_interaction_controller.dart';
|
||||
|
|
|
@ -103,8 +103,7 @@ class InAppBrowser {
|
|||
|
||||
_debugLog(String method, dynamic args) {
|
||||
if (InAppBrowser.debugLoggingSettings.enabled) {
|
||||
for (var regExp
|
||||
in InAppBrowser.debugLoggingSettings.excludeFilter) {
|
||||
for (var regExp in InAppBrowser.debugLoggingSettings.excludeFilter) {
|
||||
if (regExp.hasMatch(method)) return;
|
||||
}
|
||||
var maxLogMessageLength =
|
||||
|
@ -773,7 +772,8 @@ class InAppBrowser {
|
|||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
Future<bool?>? onPrintRequest(Uri? url, PrintJobController? printJobController) {
|
||||
Future<bool?>? onPrintRequest(
|
||||
Uri? url, PrintJobController? printJobController) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -318,7 +318,8 @@ class AndroidInAppWebViewOptions
|
|||
"defaultFixedFontSize": defaultFixedFontSize,
|
||||
"defaultFontSize": defaultFontSize,
|
||||
"defaultTextEncodingName": defaultTextEncodingName,
|
||||
"disabledActionModeMenuItems": disabledActionModeMenuItems?.toNativeValue(),
|
||||
"disabledActionModeMenuItems":
|
||||
disabledActionModeMenuItems?.toNativeValue(),
|
||||
"fantasyFontFamily": fantasyFontFamily,
|
||||
"fixedFontFamily": fixedFontFamily,
|
||||
"forceDark": forceDark?.toNativeValue(),
|
||||
|
@ -380,7 +381,8 @@ class AndroidInAppWebViewOptions
|
|||
instance.defaultFontSize = map["defaultFontSize"];
|
||||
instance.defaultTextEncodingName = map["defaultTextEncodingName"];
|
||||
instance.disabledActionModeMenuItems =
|
||||
AndroidActionModeMenuItem.fromNativeValue(map["disabledActionModeMenuItems"]);
|
||||
AndroidActionModeMenuItem.fromNativeValue(
|
||||
map["disabledActionModeMenuItems"]);
|
||||
instance.fantasyFontFamily = map["fantasyFontFamily"];
|
||||
instance.fixedFontFamily = map["fixedFontFamily"];
|
||||
instance.forceDark = AndroidForceDark.fromNativeValue(map["forceDark"]);
|
||||
|
|
|
@ -24,12 +24,12 @@ class IOSInAppWebViewController {
|
|||
@Deprecated("Use InAppWebViewController.createPdf instead")
|
||||
Future<Uint8List?> createPdf(
|
||||
{@Deprecated("Use pdfConfiguration instead")
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
IOSWKPDFConfiguration? iosWKPdfConfiguration,
|
||||
PDFConfiguration? pdfConfiguration}) async {
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
IOSWKPDFConfiguration? iosWKPdfConfiguration,
|
||||
PDFConfiguration? pdfConfiguration}) async {
|
||||
Map<String, dynamic> args = <String, dynamic>{};
|
||||
args.putIfAbsent('pdfConfiguration',
|
||||
() => pdfConfiguration?.toMap() ?? iosWKPdfConfiguration?.toMap());
|
||||
() => pdfConfiguration?.toMap() ?? iosWKPdfConfiguration?.toMap());
|
||||
return await _channel.invokeMethod('createPdf', args);
|
||||
}
|
||||
|
||||
|
|
|
@ -349,8 +349,8 @@ class IOSInAppWebViewOptions
|
|||
map["automaticallyAdjustsScrollIndicatorInsets"];
|
||||
instance.accessibilityIgnoresInvertColors =
|
||||
map["accessibilityIgnoresInvertColors"];
|
||||
instance.decelerationRate =
|
||||
IOSUIScrollViewDecelerationRate.fromNativeValue(map["decelerationRate"])!;
|
||||
instance.decelerationRate = IOSUIScrollViewDecelerationRate.fromNativeValue(
|
||||
map["decelerationRate"])!;
|
||||
instance.alwaysBounceVertical = map["alwaysBounceVertical"];
|
||||
instance.alwaysBounceHorizontal = map["alwaysBounceHorizontal"];
|
||||
instance.scrollsToTop = map["scrollsToTop"];
|
||||
|
|
|
@ -87,7 +87,7 @@ class HeadlessInAppWebView implements WebView, Disposable {
|
|||
this.onReceivedServerTrustAuthRequest,
|
||||
this.onReceivedClientCertRequest,
|
||||
@Deprecated('Use FindInteractionController.onFindResultReceived instead')
|
||||
this.onFindResultReceived,
|
||||
this.onFindResultReceived,
|
||||
this.shouldInterceptAjaxRequest,
|
||||
this.onAjaxReadyStateChange,
|
||||
this.onAjaxProgress,
|
||||
|
|
|
@ -79,7 +79,7 @@ class InAppWebView extends StatefulWidget implements WebView {
|
|||
this.onReceivedServerTrustAuthRequest,
|
||||
this.onReceivedClientCertRequest,
|
||||
@Deprecated('Use FindInteractionController.onFindResultReceived instead')
|
||||
this.onFindResultReceived,
|
||||
this.onFindResultReceived,
|
||||
this.shouldInterceptAjaxRequest,
|
||||
this.onAjaxReadyStateChange,
|
||||
this.onAjaxProgress,
|
||||
|
|
|
@ -534,7 +534,8 @@ class InAppWebViewController {
|
|||
|
||||
if (_webview != null) {
|
||||
if (_webview!.onFormResubmission != null)
|
||||
return (await _webview!.onFormResubmission!(this, uri))?.toNativeValue();
|
||||
return (await _webview!.onFormResubmission!(this, uri))
|
||||
?.toNativeValue();
|
||||
else {
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
return (await _webview!.androidOnFormResubmission!(this, uri))
|
||||
|
@ -802,8 +803,12 @@ class InAppWebViewController {
|
|||
}
|
||||
break;
|
||||
case "onFindResultReceived":
|
||||
if ((_webview != null && (_webview!.onFindResultReceived != null ||
|
||||
(_webview!.findInteractionController != null && _webview!.findInteractionController!.onFindResultReceived != null))) ||
|
||||
if ((_webview != null &&
|
||||
(_webview!.onFindResultReceived != null ||
|
||||
(_webview!.findInteractionController != null &&
|
||||
_webview!.findInteractionController!
|
||||
.onFindResultReceived !=
|
||||
null))) ||
|
||||
_inAppBrowser != null) {
|
||||
int activeMatchOrdinal = call.arguments["activeMatchOrdinal"];
|
||||
int numberOfMatches = call.arguments["numberOfMatches"];
|
||||
|
@ -813,19 +818,23 @@ class InAppWebViewController {
|
|||
_webview!.findInteractionController!.onFindResultReceived !=
|
||||
null)
|
||||
_webview!.findInteractionController!.onFindResultReceived!(
|
||||
_webview!.findInteractionController!, activeMatchOrdinal,
|
||||
numberOfMatches, isDoneCounting);
|
||||
_webview!.findInteractionController!,
|
||||
activeMatchOrdinal,
|
||||
numberOfMatches,
|
||||
isDoneCounting);
|
||||
else
|
||||
_webview!.onFindResultReceived!(
|
||||
this, activeMatchOrdinal, numberOfMatches, isDoneCounting);
|
||||
}
|
||||
else {
|
||||
this, activeMatchOrdinal, numberOfMatches, isDoneCounting);
|
||||
} else {
|
||||
if (_inAppBrowser!.findInteractionController != null &&
|
||||
_inAppBrowser!.findInteractionController!
|
||||
.onFindResultReceived != null)
|
||||
_inAppBrowser!
|
||||
.findInteractionController!.onFindResultReceived !=
|
||||
null)
|
||||
_inAppBrowser!.findInteractionController!.onFindResultReceived!(
|
||||
_webview!.findInteractionController!, activeMatchOrdinal,
|
||||
numberOfMatches, isDoneCounting);
|
||||
_webview!.findInteractionController!,
|
||||
activeMatchOrdinal,
|
||||
numberOfMatches,
|
||||
isDoneCounting);
|
||||
else
|
||||
_inAppBrowser!.onFindResultReceived(
|
||||
activeMatchOrdinal, numberOfMatches, isDoneCounting);
|
||||
|
@ -1243,9 +1252,11 @@ class InAppWebViewController {
|
|||
AjaxRequest request = AjaxRequest.fromMap(arguments)!;
|
||||
|
||||
if (_webview != null && _webview!.onAjaxReadyStateChange != null)
|
||||
return (await _webview!.onAjaxReadyStateChange!(this, request))?.toNativeValue();
|
||||
return (await _webview!.onAjaxReadyStateChange!(this, request))
|
||||
?.toNativeValue();
|
||||
else
|
||||
return (await _inAppBrowser!.onAjaxReadyStateChange(request))?.toNativeValue();
|
||||
return (await _inAppBrowser!.onAjaxReadyStateChange(request))
|
||||
?.toNativeValue();
|
||||
}
|
||||
return null;
|
||||
case "onAjaxProgress":
|
||||
|
@ -1255,9 +1266,11 @@ class InAppWebViewController {
|
|||
AjaxRequest request = AjaxRequest.fromMap(arguments)!;
|
||||
|
||||
if (_webview != null && _webview!.onAjaxProgress != null)
|
||||
return (await _webview!.onAjaxProgress!(this, request))?.toNativeValue();
|
||||
return (await _webview!.onAjaxProgress!(this, request))
|
||||
?.toNativeValue();
|
||||
else
|
||||
return (await _inAppBrowser!.onAjaxProgress(request))?.toNativeValue();
|
||||
return (await _inAppBrowser!.onAjaxProgress(request))
|
||||
?.toNativeValue();
|
||||
}
|
||||
return null;
|
||||
case "shouldInterceptFetchRequest":
|
||||
|
@ -2293,7 +2306,8 @@ class InAppWebViewController {
|
|||
///- Android native WebView ([Official API - PrintManager.print](https://developer.android.com/reference/android/print/PrintManager#print(java.lang.String,%20android.print.PrintDocumentAdapter,%20android.print.PrintAttributes)))
|
||||
///- iOS ([Official API - UIPrintInteractionController.present](https://developer.apple.com/documentation/uikit/uiprintinteractioncontroller/1618149-present))
|
||||
///- Web ([Official API - Window.print](https://developer.mozilla.org/en-US/docs/Web/API/Window/print))
|
||||
Future<PrintJobController?> printCurrentPage({PrintJobSettings? settings}) async {
|
||||
Future<PrintJobController?> printCurrentPage(
|
||||
{PrintJobSettings? settings}) async {
|
||||
Map<String, dynamic> args = <String, dynamic>{};
|
||||
args.putIfAbsent("settings", () => settings?.toMap());
|
||||
String? jobId = await _channel.invokeMethod('printCurrentPage', args);
|
||||
|
@ -2838,7 +2852,8 @@ class InAppWebViewController {
|
|||
if (defaultTargetPlatform == TargetPlatform.android) {
|
||||
assert(filePath.endsWith("." + WebArchiveFormat.MHT.toNativeValue()));
|
||||
} else if (defaultTargetPlatform == TargetPlatform.iOS) {
|
||||
assert(filePath.endsWith("." + WebArchiveFormat.WEBARCHIVE.toNativeValue()));
|
||||
assert(filePath
|
||||
.endsWith("." + WebArchiveFormat.WEBARCHIVE.toNativeValue()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3390,7 +3405,10 @@ class InAppWebViewController {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS ([Official API - WKWebView.loadSimulatedRequest(_:response:responseData:)](https://developer.apple.com/documentation/webkit/wkwebview/3763094-loadsimulatedrequest) and [Official API - WKWebView.loadSimulatedRequest(_:responseHTML:)](https://developer.apple.com/documentation/webkit/wkwebview/3763095-loadsimulatedrequest)).
|
||||
Future<void> loadSimulatedRequest({required URLRequest urlRequest, required Uint8List data, URLResponse? urlResponse}) async {
|
||||
Future<void> loadSimulatedRequest(
|
||||
{required URLRequest urlRequest,
|
||||
required Uint8List data,
|
||||
URLResponse? urlResponse}) async {
|
||||
Map<String, dynamic> args = <String, dynamic>{};
|
||||
args.putIfAbsent('urlRequest', () => urlRequest.toMap());
|
||||
args.putIfAbsent('data', () => data);
|
||||
|
|
|
@ -12,7 +12,6 @@ import '../android/webview_feature.dart';
|
|||
import '../in_app_webview/in_app_webview_controller.dart';
|
||||
import '../context_menu.dart';
|
||||
|
||||
|
||||
///This class represents all the WebView settings available.
|
||||
class InAppWebViewSettings {
|
||||
///Set to `true` to be able to listen at the [WebView.shouldOverrideUrlLoading] event. The default value is `false`.
|
||||
|
@ -1184,7 +1183,8 @@ class InAppWebViewSettings {
|
|||
this.fantasyFontFamily = "fantasy",
|
||||
this.fixedFontFamily = "monospace",
|
||||
this.forceDark = ForceDark.OFF,
|
||||
this.forceDarkStrategy = ForceDarkStrategy.PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING,
|
||||
this.forceDarkStrategy =
|
||||
ForceDarkStrategy.PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING,
|
||||
this.geolocationEnabled = true,
|
||||
this.layoutAlgorithm,
|
||||
this.loadWithOverviewMode = true,
|
||||
|
@ -1277,11 +1277,16 @@ class InAppWebViewSettings {
|
|||
!this.resourceCustomSchemes.contains("https"));
|
||||
assert(
|
||||
allowingReadAccessTo == null || allowingReadAccessTo!.isScheme("file"));
|
||||
assert((minimumViewportInset == null && maximumViewportInset == null) ||
|
||||
minimumViewportInset != null && maximumViewportInset != null &&
|
||||
minimumViewportInset!.isNonNegative && maximumViewportInset!.isNonNegative &&
|
||||
minimumViewportInset!.vertical <= maximumViewportInset!.vertical &&
|
||||
minimumViewportInset!.horizontal <= maximumViewportInset!.horizontal,
|
||||
assert(
|
||||
(minimumViewportInset == null && maximumViewportInset == null) ||
|
||||
minimumViewportInset != null &&
|
||||
maximumViewportInset != null &&
|
||||
minimumViewportInset!.isNonNegative &&
|
||||
maximumViewportInset!.isNonNegative &&
|
||||
minimumViewportInset!.vertical <=
|
||||
maximumViewportInset!.vertical &&
|
||||
minimumViewportInset!.horizontal <=
|
||||
maximumViewportInset!.horizontal,
|
||||
"minimumViewportInset cannot be larger than maximumViewportInset");
|
||||
}
|
||||
|
||||
|
@ -1341,7 +1346,8 @@ class InAppWebViewSettings {
|
|||
"defaultFixedFontSize": defaultFixedFontSize,
|
||||
"defaultFontSize": defaultFontSize,
|
||||
"defaultTextEncodingName": defaultTextEncodingName,
|
||||
"disabledActionModeMenuItems": disabledActionModeMenuItems?.toNativeValue(),
|
||||
"disabledActionModeMenuItems":
|
||||
disabledActionModeMenuItems?.toNativeValue(),
|
||||
"fantasyFontFamily": fantasyFontFamily,
|
||||
"fixedFontFamily": fixedFontFamily,
|
||||
"forceDark": forceDark?.toNativeValue(),
|
||||
|
@ -1381,7 +1387,8 @@ class InAppWebViewSettings {
|
|||
"willSuppressErrorPage": willSuppressErrorPage,
|
||||
"algorithmicDarkeningAllowed": algorithmicDarkeningAllowed,
|
||||
"requestedWithHeaderMode": requestedWithHeaderMode?.toNativeValue(),
|
||||
"enterpriseAuthenticationAppLinkPolicyEnabled": enterpriseAuthenticationAppLinkPolicyEnabled,
|
||||
"enterpriseAuthenticationAppLinkPolicyEnabled":
|
||||
enterpriseAuthenticationAppLinkPolicyEnabled,
|
||||
"disallowOverScroll": disallowOverScroll,
|
||||
"enableViewportScale": enableViewportScale,
|
||||
"suppressesIncrementalRendering": suppressesIncrementalRendering,
|
||||
|
@ -1450,7 +1457,8 @@ class InAppWebViewSettings {
|
|||
List<String> dataDetectorTypesList =
|
||||
List<String>.from(map["dataDetectorTypes"] ?? []);
|
||||
dataDetectorTypesList.forEach((dataDetectorTypeValue) {
|
||||
var dataDetectorType = DataDetectorTypes.fromNativeValue(dataDetectorTypeValue);
|
||||
var dataDetectorType =
|
||||
DataDetectorTypes.fromNativeValue(dataDetectorTypeValue);
|
||||
if (dataDetectorType != null) {
|
||||
dataDetectorTypes.add(dataDetectorType);
|
||||
}
|
||||
|
@ -1523,11 +1531,13 @@ class InAppWebViewSettings {
|
|||
settings.defaultFontSize = map["defaultFontSize"];
|
||||
settings.defaultTextEncodingName = map["defaultTextEncodingName"];
|
||||
settings.disabledActionModeMenuItems =
|
||||
ActionModeMenuItem.fromNativeValue(map["disabledActionModeMenuItems"]);
|
||||
ActionModeMenuItem.fromNativeValue(
|
||||
map["disabledActionModeMenuItems"]);
|
||||
settings.fantasyFontFamily = map["fantasyFontFamily"];
|
||||
settings.fixedFontFamily = map["fixedFontFamily"];
|
||||
settings.forceDark = ForceDark.fromNativeValue(map["forceDark"]);
|
||||
settings.forceDarkStrategy = ForceDarkStrategy.fromNativeValue(map["forceDarkStrategy"]);
|
||||
settings.forceDarkStrategy =
|
||||
ForceDarkStrategy.fromNativeValue(map["forceDarkStrategy"]);
|
||||
settings.geolocationEnabled = map["geolocationEnabled"];
|
||||
settings.layoutAlgorithm =
|
||||
LayoutAlgorithm.fromNativeValue(map["layoutAlgorithm"]);
|
||||
|
@ -1545,17 +1555,20 @@ class InAppWebViewSettings {
|
|||
settings.hardwareAcceleration = map["hardwareAcceleration"];
|
||||
settings.supportMultipleWindows = map["supportMultipleWindows"];
|
||||
settings.regexToCancelSubFramesLoading =
|
||||
map["regexToCancelSubFramesLoading"];
|
||||
map["regexToCancelSubFramesLoading"];
|
||||
settings.useHybridComposition = map["useHybridComposition"];
|
||||
settings.useShouldInterceptRequest = map["useShouldInterceptRequest"];
|
||||
settings.useOnRenderProcessGone = map["useOnRenderProcessGone"];
|
||||
settings.overScrollMode = OverScrollMode.fromNativeValue(map["overScrollMode"]);
|
||||
settings.overScrollMode =
|
||||
OverScrollMode.fromNativeValue(map["overScrollMode"]);
|
||||
settings.networkAvailable = map["networkAvailable"];
|
||||
settings.scrollBarStyle = ScrollBarStyle.fromNativeValue(map["scrollBarStyle"]);
|
||||
settings.scrollBarStyle =
|
||||
ScrollBarStyle.fromNativeValue(map["scrollBarStyle"]);
|
||||
settings.verticalScrollbarPosition =
|
||||
VerticalScrollbarPosition.fromNativeValue(map["verticalScrollbarPosition"]);
|
||||
VerticalScrollbarPosition.fromNativeValue(
|
||||
map["verticalScrollbarPosition"]);
|
||||
settings.scrollBarDefaultDelayBeforeFade =
|
||||
map["scrollBarDefaultDelayBeforeFade"];
|
||||
map["scrollBarDefaultDelayBeforeFade"];
|
||||
settings.scrollbarFadingEnabled = map["scrollbarFadingEnabled"];
|
||||
settings.scrollBarFadeDuration = map["scrollBarFadeDuration"];
|
||||
settings.rendererPriorityPolicy = RendererPriorityPolicy.fromMap(
|
||||
|
@ -1570,37 +1583,40 @@ class InAppWebViewSettings {
|
|||
settings.horizontalScrollbarTrackColor =
|
||||
UtilColor.fromHex(map["horizontalScrollbarTrackColor"]);
|
||||
settings.willSuppressErrorPage = map["willSuppressErrorPage"];
|
||||
settings.algorithmicDarkeningAllowed = map["algorithmicDarkeningAllowed"];
|
||||
settings.requestedWithHeaderMode = RequestedWithHeaderMode.fromNativeValue(map["requestedWithHeaderMode"]);
|
||||
settings.enterpriseAuthenticationAppLinkPolicyEnabled = map["enterpriseAuthenticationAppLinkPolicyEnabled"];
|
||||
}
|
||||
else if (defaultTargetPlatform == TargetPlatform.iOS ||
|
||||
settings.algorithmicDarkeningAllowed =
|
||||
map["algorithmicDarkeningAllowed"];
|
||||
settings.requestedWithHeaderMode =
|
||||
RequestedWithHeaderMode.fromNativeValue(
|
||||
map["requestedWithHeaderMode"]);
|
||||
settings.enterpriseAuthenticationAppLinkPolicyEnabled =
|
||||
map["enterpriseAuthenticationAppLinkPolicyEnabled"];
|
||||
} else if (defaultTargetPlatform == TargetPlatform.iOS ||
|
||||
defaultTargetPlatform == TargetPlatform.macOS) {
|
||||
settings.disallowOverScroll = map["disallowOverScroll"];
|
||||
settings.enableViewportScale = map["enableViewportScale"];
|
||||
settings.suppressesIncrementalRendering =
|
||||
map["suppressesIncrementalRendering"];
|
||||
map["suppressesIncrementalRendering"];
|
||||
settings.allowsAirPlayForMediaPlayback =
|
||||
map["allowsAirPlayForMediaPlayback"];
|
||||
map["allowsAirPlayForMediaPlayback"];
|
||||
settings.allowsBackForwardNavigationGestures =
|
||||
map["allowsBackForwardNavigationGestures"];
|
||||
map["allowsBackForwardNavigationGestures"];
|
||||
settings.allowsLinkPreview = map["allowsLinkPreview"];
|
||||
settings.ignoresViewportScaleLimits = map["ignoresViewportScaleLimits"];
|
||||
settings.allowsInlineMediaPlayback = map["allowsInlineMediaPlayback"];
|
||||
settings.allowsPictureInPictureMediaPlayback =
|
||||
map["allowsPictureInPictureMediaPlayback"];
|
||||
map["allowsPictureInPictureMediaPlayback"];
|
||||
settings.isFraudulentWebsiteWarningEnabled =
|
||||
map["isFraudulentWebsiteWarningEnabled"];
|
||||
map["isFraudulentWebsiteWarningEnabled"];
|
||||
settings.selectionGranularity =
|
||||
SelectionGranularity.fromNativeValue(map["selectionGranularity"])!;
|
||||
SelectionGranularity.fromNativeValue(map["selectionGranularity"])!;
|
||||
settings.dataDetectorTypes = dataDetectorTypes;
|
||||
settings.sharedCookiesEnabled = map["sharedCookiesEnabled"];
|
||||
settings.automaticallyAdjustsScrollIndicatorInsets =
|
||||
map["automaticallyAdjustsScrollIndicatorInsets"];
|
||||
map["automaticallyAdjustsScrollIndicatorInsets"];
|
||||
settings.accessibilityIgnoresInvertColors =
|
||||
map["accessibilityIgnoresInvertColors"];
|
||||
settings.decelerationRate =
|
||||
ScrollViewDecelerationRate.fromNativeValue(map["decelerationRate"])!;
|
||||
map["accessibilityIgnoresInvertColors"];
|
||||
settings.decelerationRate = ScrollViewDecelerationRate.fromNativeValue(
|
||||
map["decelerationRate"])!;
|
||||
settings.alwaysBounceVertical = map["alwaysBounceVertical"];
|
||||
settings.alwaysBounceHorizontal = map["alwaysBounceHorizontal"];
|
||||
settings.scrollsToTop = map["scrollsToTop"];
|
||||
|
@ -1608,31 +1624,33 @@ class InAppWebViewSettings {
|
|||
settings.maximumZoomScale = map["maximumZoomScale"];
|
||||
settings.minimumZoomScale = map["minimumZoomScale"];
|
||||
settings.contentInsetAdjustmentBehavior =
|
||||
ScrollViewContentInsetAdjustmentBehavior.fromNativeValue(
|
||||
map["contentInsetAdjustmentBehavior"])!;
|
||||
ScrollViewContentInsetAdjustmentBehavior.fromNativeValue(
|
||||
map["contentInsetAdjustmentBehavior"])!;
|
||||
settings.isDirectionalLockEnabled = map["isDirectionalLockEnabled"];
|
||||
settings.mediaType = map["mediaType"];
|
||||
settings.pageZoom = map["pageZoom"];
|
||||
settings.limitsNavigationsToAppBoundDomains =
|
||||
map["limitsNavigationsToAppBoundDomains"];
|
||||
map["limitsNavigationsToAppBoundDomains"];
|
||||
settings.useOnNavigationResponse = map["useOnNavigationResponse"];
|
||||
settings.applePayAPIEnabled = map["applePayAPIEnabled"];
|
||||
settings.allowingReadAccessTo = map["allowingReadAccessTo"] != null
|
||||
? Uri.parse(map["allowingReadAccessTo"])
|
||||
: null;
|
||||
settings.disableLongPressContextMenuOnLinks =
|
||||
map["disableLongPressContextMenuOnLinks"];
|
||||
map["disableLongPressContextMenuOnLinks"];
|
||||
settings.disableInputAccessoryView = map["disableInputAccessoryView"];
|
||||
settings.underPageBackgroundColor =
|
||||
UtilColor.fromHex(map["underPageBackgroundColor"]);
|
||||
settings.isTextInteractionEnabled = map["isTextInteractionEnabled"];
|
||||
settings.isSiteSpecificQuirksModeEnabled =
|
||||
map["isSiteSpecificQuirksModeEnabled"];
|
||||
map["isSiteSpecificQuirksModeEnabled"];
|
||||
settings.upgradeKnownHostsToHTTPS = map["upgradeKnownHostsToHTTPS"];
|
||||
settings.isElementFullscreenEnabled = map["isElementFullscreenEnabled"];
|
||||
settings.isFindInteractionEnabled = map["isFindInteractionEnabled"];
|
||||
settings.minimumViewportInset = MapEdgeInsets.fromMap(map["minimumViewportInset"]?.cast<String, double>());
|
||||
settings.maximumViewportInset = MapEdgeInsets.fromMap(map["maximumViewportInset"]?.cast<String, double>());
|
||||
settings.minimumViewportInset = MapEdgeInsets.fromMap(
|
||||
map["minimumViewportInset"]?.cast<String, double>());
|
||||
settings.maximumViewportInset = MapEdgeInsets.fromMap(
|
||||
map["maximumViewportInset"]?.cast<String, double>());
|
||||
}
|
||||
}
|
||||
return settings;
|
||||
|
|
|
@ -5,4 +5,4 @@ export 'in_app_webview_settings.dart';
|
|||
export 'headless_in_app_webview.dart';
|
||||
export 'android/main.dart';
|
||||
export 'apple/main.dart';
|
||||
export '../find_interaction/find_interaction_controller.dart';
|
||||
export '../find_interaction/find_interaction_controller.dart';
|
||||
|
|
|
@ -993,7 +993,7 @@ abstract class WebView {
|
|||
this.onReceivedServerTrustAuthRequest,
|
||||
this.onReceivedClientCertRequest,
|
||||
@Deprecated('Use FindInteractionController.onFindResultReceived instead')
|
||||
this.onFindResultReceived,
|
||||
this.onFindResultReceived,
|
||||
this.shouldInterceptAjaxRequest,
|
||||
this.onAjaxReadyStateChange,
|
||||
this.onAjaxProgress,
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
export 'print_job_controller.dart';
|
||||
export 'print_job_settings.dart';
|
||||
export 'print_job_settings.dart';
|
||||
|
|
|
@ -4,7 +4,8 @@ import '../in_app_webview/in_app_webview_controller.dart';
|
|||
import '../types/disposable.dart';
|
||||
|
||||
///A completion handler for the [PrintJobController].
|
||||
typedef PrintJobCompletionHandler = Future<void> Function(bool completed, String? error)?;
|
||||
typedef PrintJobCompletionHandler = Future<void> Function(
|
||||
bool completed, String? error)?;
|
||||
|
||||
///Class representing a print job eventually returned by [InAppWebViewController.printCurrentPage].
|
||||
class PrintJobController implements Disposable {
|
||||
|
@ -19,8 +20,7 @@ class PrintJobController implements Disposable {
|
|||
///- iOS ([Official API - UIPrintInteractionController.CompletionHandler](https://developer.apple.com/documentation/uikit/uiprintinteractioncontroller/completionhandler))
|
||||
PrintJobCompletionHandler onComplete;
|
||||
|
||||
PrintJobController(
|
||||
{required this.id}) {
|
||||
PrintJobController({required this.id}) {
|
||||
this._channel = MethodChannel(
|
||||
'com.pichillilorenzo/flutter_inappwebview_printjobcontroller_$id');
|
||||
this._channel.setMethodCallHandler((call) async {
|
||||
|
@ -94,8 +94,7 @@ class PrintJobController implements Disposable {
|
|||
Future<PrintJobInfo?> getInfo() async {
|
||||
Map<String, dynamic> args = <String, dynamic>{};
|
||||
Map<String, dynamic>? infoMap =
|
||||
(await _channel.invokeMethod('getInfo', args))
|
||||
?.cast<String, dynamic>();
|
||||
(await _channel.invokeMethod('getInfo', args))?.cast<String, dynamic>();
|
||||
return PrintJobInfo.fromMap(infoMap);
|
||||
}
|
||||
|
||||
|
@ -109,4 +108,4 @@ class PrintJobController implements Disposable {
|
|||
Map<String, dynamic> args = <String, dynamic>{};
|
||||
await _channel.invokeMethod('dispose', args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -180,30 +180,29 @@ class PrintJobSettings {
|
|||
///Gets a [PrintJobSettings] instance from a [Map] value.
|
||||
factory PrintJobSettings.fromMap(Map<String, dynamic> map) {
|
||||
return PrintJobSettings(
|
||||
handledByClient: map["handledByClient"],
|
||||
jobName: map["jobName"],
|
||||
animated: map["animated"],
|
||||
orientation: PrintJobOrientation.fromNativeValue(map["orientation"]),
|
||||
numberOfPages: map["numberOfPages"],
|
||||
forceRenderingQuality:
|
||||
PrintJobRenderingQuality.fromNativeValue(map["forceRenderingQuality"]),
|
||||
margins:
|
||||
MapEdgeInsets.fromMap(map["margins"]?.cast<String, dynamic>()),
|
||||
mediaSize:
|
||||
PrintJobMediaSize.fromMap(map["mediaSize"]?.cast<String, dynamic>()),
|
||||
colorMode: PrintJobColorMode.fromNativeValue(map["colorMode"]),
|
||||
duplexMode: PrintJobDuplexMode.fromNativeValue(map["duplexMode"]),
|
||||
outputType: PrintJobOutputType.fromNativeValue(map["outputType"]),
|
||||
resolution:
|
||||
PrintJobResolution.fromMap(map["resolution"]?.cast<String, dynamic>()),
|
||||
showsNumberOfCopies: map["showsNumberOfCopies"],
|
||||
showsPaperSelectionForLoadedPapers:
|
||||
map["showsPaperSelectionForLoadedPapers"],
|
||||
showsPaperOrientation: map["showsPaperOrientation"],
|
||||
maximumContentHeight: map["maximumContentHeight"],
|
||||
maximumContentWidth: map["maximumContentWidth"],
|
||||
footerHeight: map["footerHeight"],
|
||||
headerHeight: map["headerHeight"],
|
||||
handledByClient: map["handledByClient"],
|
||||
jobName: map["jobName"],
|
||||
animated: map["animated"],
|
||||
orientation: PrintJobOrientation.fromNativeValue(map["orientation"]),
|
||||
numberOfPages: map["numberOfPages"],
|
||||
forceRenderingQuality: PrintJobRenderingQuality.fromNativeValue(
|
||||
map["forceRenderingQuality"]),
|
||||
margins: MapEdgeInsets.fromMap(map["margins"]?.cast<String, dynamic>()),
|
||||
mediaSize:
|
||||
PrintJobMediaSize.fromMap(map["mediaSize"]?.cast<String, dynamic>()),
|
||||
colorMode: PrintJobColorMode.fromNativeValue(map["colorMode"]),
|
||||
duplexMode: PrintJobDuplexMode.fromNativeValue(map["duplexMode"]),
|
||||
outputType: PrintJobOutputType.fromNativeValue(map["outputType"]),
|
||||
resolution: PrintJobResolution.fromMap(
|
||||
map["resolution"]?.cast<String, dynamic>()),
|
||||
showsNumberOfCopies: map["showsNumberOfCopies"],
|
||||
showsPaperSelectionForLoadedPapers:
|
||||
map["showsPaperSelectionForLoadedPapers"],
|
||||
showsPaperOrientation: map["showsPaperOrientation"],
|
||||
maximumContentHeight: map["maximumContentHeight"],
|
||||
maximumContentWidth: map["maximumContentWidth"],
|
||||
footerHeight: map["footerHeight"],
|
||||
headerHeight: map["headerHeight"],
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -242,4 +241,4 @@ class PrintJobSettings {
|
|||
String toString() {
|
||||
return toMap().toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ class PullToRefreshController {
|
|||
_debugLog(String method, dynamic args) {
|
||||
if (PullToRefreshController.debugLoggingSettings.enabled) {
|
||||
for (var regExp
|
||||
in PullToRefreshController.debugLoggingSettings.excludeFilter) {
|
||||
in PullToRefreshController.debugLoggingSettings.excludeFilter) {
|
||||
if (regExp.hasMatch(method)) return;
|
||||
}
|
||||
var maxLogMessageLength =
|
||||
|
|
|
@ -3,9 +3,7 @@ import 'package:flutter_inappwebview_internal_annotations/flutter_inappwebview_i
|
|||
part 'action_mode_menu_item.g.dart';
|
||||
|
||||
///Class used to disable the action mode menu items.
|
||||
@ExchangeableEnum(
|
||||
bitwiseOrOperator: true
|
||||
)
|
||||
@ExchangeableEnum(bitwiseOrOperator: true)
|
||||
class ActionModeMenuItem_ {
|
||||
// ignore: unused_field
|
||||
final int _value;
|
||||
|
@ -30,9 +28,7 @@ class ActionModeMenuItem_ {
|
|||
///
|
||||
///Use [ActionModeMenuItem] instead.
|
||||
@Deprecated("Use ActionModeMenuItem instead")
|
||||
@ExchangeableEnum(
|
||||
bitwiseOrOperator: true
|
||||
)
|
||||
@ExchangeableEnum(bitwiseOrOperator: true)
|
||||
class AndroidActionModeMenuItem_ {
|
||||
// ignore: unused_field
|
||||
final int _value;
|
||||
|
@ -46,9 +42,9 @@ class AndroidActionModeMenuItem_ {
|
|||
|
||||
///Disable menu item "Web Search".
|
||||
static const MENU_ITEM_WEB_SEARCH =
|
||||
const AndroidActionModeMenuItem_._internal(2);
|
||||
const AndroidActionModeMenuItem_._internal(2);
|
||||
|
||||
///Disable all the action mode menu items for text processing.
|
||||
static const MENU_ITEM_PROCESS_TEXT =
|
||||
const AndroidActionModeMenuItem_._internal(4);
|
||||
}
|
||||
const AndroidActionModeMenuItem_._internal(4);
|
||||
}
|
||||
|
|
|
@ -79,23 +79,22 @@ class AjaxRequest_ {
|
|||
|
||||
AjaxRequest_(
|
||||
{this.data,
|
||||
this.method,
|
||||
this.url,
|
||||
this.isAsync,
|
||||
this.user,
|
||||
this.password,
|
||||
this.withCredentials,
|
||||
this.headers,
|
||||
this.readyState,
|
||||
this.status,
|
||||
this.responseURL,
|
||||
this.responseType,
|
||||
this.response,
|
||||
this.responseText,
|
||||
this.responseXML,
|
||||
this.statusText,
|
||||
this.responseHeaders,
|
||||
this.event,
|
||||
this.action = AjaxRequestAction_.PROCEED});
|
||||
|
||||
}
|
||||
this.method,
|
||||
this.url,
|
||||
this.isAsync,
|
||||
this.user,
|
||||
this.password,
|
||||
this.withCredentials,
|
||||
this.headers,
|
||||
this.readyState,
|
||||
this.status,
|
||||
this.responseURL,
|
||||
this.responseType,
|
||||
this.response,
|
||||
this.responseText,
|
||||
this.responseXML,
|
||||
this.statusText,
|
||||
this.responseHeaders,
|
||||
this.event,
|
||||
this.action = AjaxRequestAction_.PROCEED});
|
||||
}
|
||||
|
|
|
@ -16,4 +16,4 @@ class AjaxRequestAction_ {
|
|||
|
||||
///Proceeds with the current [AjaxRequest].
|
||||
static const PROCEED = const AjaxRequestAction_._internal(1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,5 +24,6 @@ class AjaxRequestEvent_ {
|
|||
///When downloading a resource using HTTP, this only represent the content itself, not headers and other overhead.
|
||||
int? total;
|
||||
|
||||
AjaxRequestEvent_({this.type, this.lengthComputable, this.loaded, this.total});
|
||||
}
|
||||
AjaxRequestEvent_(
|
||||
{this.type, this.lengthComputable, this.loaded, this.total});
|
||||
}
|
||||
|
|
|
@ -32,4 +32,4 @@ class AjaxRequestEventType_ {
|
|||
|
||||
///The TIMEOUT event is fired when progression is terminated due to preset time expiring.
|
||||
static const TIMEOUT = const AjaxRequestEventType_._internal("timeout");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,4 +44,4 @@ class AjaxRequestHeaders_ {
|
|||
String toString() {
|
||||
return 'AjaxRequestHeaders{headers: $_headers, requestHeaders: $_newHeaders}';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,4 +25,4 @@ class AjaxRequestReadyState_ {
|
|||
|
||||
///The operation is complete.
|
||||
static const DONE = const AjaxRequestReadyState_._internal(4);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -251,4 +251,4 @@ class IOSNSAttributedString_ {
|
|||
this.underlineColor,
|
||||
this.underlineStyle,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ class AttributedStringTextEffectStyle_ {
|
|||
|
||||
///A graphical text effect that gives glyphs the appearance of letterpress printing, which involves pressing the type into the paper.
|
||||
static const LETTERPRESS_STYLE =
|
||||
const AttributedStringTextEffectStyle_._internal("letterpressStyle");
|
||||
const AttributedStringTextEffectStyle_._internal("letterpressStyle");
|
||||
}
|
||||
|
||||
///An iOS-specific Class that represents the supported proxy types.
|
||||
|
@ -25,5 +25,5 @@ class IOSNSAttributedStringTextEffectStyle_ {
|
|||
|
||||
///A graphical text effect that gives glyphs the appearance of letterpress printing, which involves pressing the type into the paper.
|
||||
static const LETTERPRESS_STYLE =
|
||||
const IOSNSAttributedStringTextEffectStyle_._internal("letterpressStyle");
|
||||
}
|
||||
const IOSNSAttributedStringTextEffectStyle_._internal("letterpressStyle");
|
||||
}
|
||||
|
|
|
@ -44,4 +44,4 @@ class AndroidCacheMode_ {
|
|||
|
||||
///Don't use the network, load from the cache.
|
||||
static const LOAD_CACHE_ONLY = const AndroidCacheMode_._internal(3);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,4 +14,4 @@ class CallAsyncJavaScriptResult_ {
|
|||
String? error;
|
||||
|
||||
CallAsyncJavaScriptResult_({this.value, this.error});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,9 +18,9 @@ class ClientCertChallenge_ extends URLAuthenticationChallenge_ {
|
|||
@SupportedPlatforms(platforms: [
|
||||
AndroidPlatform(
|
||||
apiName: "ClientCertRequest.getPrincipals",
|
||||
apiUrl: "https://developer.android.com/reference/android/webkit/ClientCertRequest#getPrincipals()",
|
||||
available: "21"
|
||||
)
|
||||
apiUrl:
|
||||
"https://developer.android.com/reference/android/webkit/ClientCertRequest#getPrincipals()",
|
||||
available: "21")
|
||||
])
|
||||
List<String>? principals;
|
||||
|
||||
|
@ -32,17 +32,17 @@ class ClientCertChallenge_ extends URLAuthenticationChallenge_ {
|
|||
@SupportedPlatforms(platforms: [
|
||||
AndroidPlatform(
|
||||
apiName: "ClientCertRequest.getKeyTypes",
|
||||
apiUrl: "https://developer.android.com/reference/android/webkit/ClientCertRequest#getKeyTypes()",
|
||||
available: "21"
|
||||
)
|
||||
apiUrl:
|
||||
"https://developer.android.com/reference/android/webkit/ClientCertRequest#getKeyTypes()",
|
||||
available: "21")
|
||||
])
|
||||
List<String>? keyTypes;
|
||||
|
||||
ClientCertChallenge_(
|
||||
{required URLProtectionSpace_ protectionSpace,
|
||||
@Deprecated('Use principals instead') this.androidPrincipals,
|
||||
this.principals,
|
||||
@Deprecated('Use keyTypes instead') this.androidKeyTypes,
|
||||
this.keyTypes})
|
||||
@Deprecated('Use principals instead') this.androidPrincipals,
|
||||
this.principals,
|
||||
@Deprecated('Use keyTypes instead') this.androidKeyTypes,
|
||||
this.keyTypes})
|
||||
: super(protectionSpace: protectionSpace);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,9 +21,7 @@ class ClientCertResponse_ {
|
|||
String? androidKeyStoreType;
|
||||
|
||||
///An Android-specific property used by Java [KeyStore](https://developer.android.com/reference/java/security/KeyStore) class to get the instance.
|
||||
@SupportedPlatforms(platforms: [
|
||||
AndroidPlatform()
|
||||
])
|
||||
@SupportedPlatforms(platforms: [AndroidPlatform()])
|
||||
String? keyStoreType;
|
||||
|
||||
///Indicate the [ClientCertResponseAction] to take in response of the client certificate challenge.
|
||||
|
@ -32,11 +30,11 @@ class ClientCertResponse_ {
|
|||
@ExchangeableObjectConstructor()
|
||||
ClientCertResponse_(
|
||||
{required this.certificatePath,
|
||||
this.certificatePassword = "",
|
||||
@Deprecated('Use keyStoreType instead')
|
||||
this.androidKeyStoreType = "PKCS12",
|
||||
this.keyStoreType = "PKCS12",
|
||||
this.action = ClientCertResponseAction_.CANCEL}) {
|
||||
this.certificatePassword = "",
|
||||
@Deprecated('Use keyStoreType instead')
|
||||
this.androidKeyStoreType = "PKCS12",
|
||||
this.keyStoreType = "PKCS12",
|
||||
this.action = ClientCertResponseAction_.CANCEL}) {
|
||||
if (this.action == ClientCertResponseAction_.PROCEED)
|
||||
assert(certificatePath.isNotEmpty);
|
||||
|
||||
|
@ -45,4 +43,4 @@ class ClientCertResponse_ {
|
|||
if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android)
|
||||
assert(this.keyStoreType != null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,4 +19,4 @@ class ClientCertResponseAction_ {
|
|||
|
||||
///Ignore the request for now.
|
||||
static const IGNORE = const ClientCertResponseAction_._internal(2);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,4 +43,4 @@ class CompressFormat_ {
|
|||
///
|
||||
///**NOTE for Android**: available on Android 30+.
|
||||
static const WEBP_LOSSLESS = const CompressFormat_._internal("WEBP_LOSSLESS");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,4 +20,4 @@ class ConsoleMessage_ {
|
|||
|
||||
ConsoleMessage_(
|
||||
{this.message = "", this.messageLevel = ConsoleMessageLevel_.LOG});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,4 +23,4 @@ class ConsoleMessageLevel_ {
|
|||
|
||||
///Console DEBUG level
|
||||
static const DEBUG = const ConsoleMessageLevel_._internal(4);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,9 +18,9 @@ class ContentBlockerActionType_ {
|
|||
///
|
||||
///**NOTE**: on Android, JavaScript must be enabled.
|
||||
static const CSS_DISPLAY_NONE =
|
||||
const ContentBlockerActionType_._internal('css-display-none');
|
||||
const ContentBlockerActionType_._internal('css-display-none');
|
||||
|
||||
///Changes a URL from http to https. URLs with a specified (nondefault) port and links using other protocols are unaffected.
|
||||
static const MAKE_HTTPS =
|
||||
const ContentBlockerActionType_._internal('make-https');
|
||||
}
|
||||
const ContentBlockerActionType_._internal('make-https');
|
||||
}
|
||||
|
|
|
@ -13,9 +13,9 @@ class ContentBlockerTriggerLoadType_ {
|
|||
|
||||
///FIRST_PARTY is triggered only if the resource has the same scheme, domain, and port as the main page resource.
|
||||
static const FIRST_PARTY =
|
||||
const ContentBlockerTriggerLoadType_._internal('first-party');
|
||||
const ContentBlockerTriggerLoadType_._internal('first-party');
|
||||
|
||||
///THIRD_PARTY is triggered if the resource is not from the same domain as the main page resource.
|
||||
static const THIRD_PARTY =
|
||||
const ContentBlockerTriggerLoadType_._internal('third-party');
|
||||
}
|
||||
const ContentBlockerTriggerLoadType_._internal('third-party');
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ class ContentWorld {
|
|||
|
||||
///The default world for clients.
|
||||
static final ContentWorld DEFAULT_CLIENT =
|
||||
ContentWorld.world(name: "defaultClient");
|
||||
ContentWorld.world(name: "defaultClient");
|
||||
|
||||
///The content world for the current webpage’s content.
|
||||
///This property contains the content world for scripts that the current webpage executes.
|
||||
|
@ -47,4 +47,4 @@ class ContentWorld {
|
|||
String toString() {
|
||||
return toMap().toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,12 +51,12 @@ class Cookie_ {
|
|||
|
||||
Cookie_(
|
||||
{required this.name,
|
||||
required this.value,
|
||||
this.expiresDate,
|
||||
this.isSessionOnly,
|
||||
this.domain,
|
||||
this.sameSite,
|
||||
this.isSecure,
|
||||
this.isHttpOnly,
|
||||
this.path});
|
||||
}
|
||||
required this.value,
|
||||
this.expiresDate,
|
||||
this.isSessionOnly,
|
||||
this.domain,
|
||||
this.sameSite,
|
||||
this.isSecure,
|
||||
this.isHttpOnly,
|
||||
this.path});
|
||||
}
|
||||
|
|
|
@ -20,11 +20,7 @@ class CreateWindowAction_ extends NavigationAction_ {
|
|||
bool? androidIsDialog;
|
||||
|
||||
///Indicates if the new window should be a dialog, rather than a full-size window.
|
||||
@SupportedPlatforms(
|
||||
platforms: [
|
||||
AndroidPlatform()
|
||||
]
|
||||
)
|
||||
@SupportedPlatforms(platforms: [AndroidPlatform()])
|
||||
bool? isDialog;
|
||||
|
||||
///Use [windowFeatures] instead.
|
||||
|
@ -32,55 +28,53 @@ class CreateWindowAction_ extends NavigationAction_ {
|
|||
IOSWKWindowFeatures_? iosWindowFeatures;
|
||||
|
||||
///Window features requested by the webpage.
|
||||
@SupportedPlatforms(
|
||||
platforms: [
|
||||
IOSPlatform(
|
||||
apiName: "WKWindowFeatures",
|
||||
apiUrl: "https://developer.apple.com/documentation/webkit/wkwindowfeatures"
|
||||
)
|
||||
]
|
||||
)
|
||||
@SupportedPlatforms(platforms: [
|
||||
IOSPlatform(
|
||||
apiName: "WKWindowFeatures",
|
||||
apiUrl:
|
||||
"https://developer.apple.com/documentation/webkit/wkwindowfeatures")
|
||||
])
|
||||
WindowFeatures_? windowFeatures;
|
||||
|
||||
CreateWindowAction_(
|
||||
{required this.windowId,
|
||||
@Deprecated('Use isDialog instead')
|
||||
this.androidIsDialog,
|
||||
this.isDialog,
|
||||
@Deprecated('Use windowFeatures instead')
|
||||
this.iosWindowFeatures,
|
||||
this.windowFeatures,
|
||||
required URLRequest_ request,
|
||||
required bool isForMainFrame,
|
||||
@Deprecated('Use hasGesture instead')
|
||||
bool? androidHasGesture,
|
||||
@Deprecated('Use isRedirect instead')
|
||||
bool? androidIsRedirect,
|
||||
bool? hasGesture,
|
||||
bool? isRedirect,
|
||||
@Deprecated('Use navigationType instead')
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
IOSWKNavigationType_? iosWKNavigationType,
|
||||
NavigationType_? navigationType,
|
||||
@Deprecated('Use sourceFrame instead')
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
IOSWKFrameInfo_? iosSourceFrame,
|
||||
FrameInfo_? sourceFrame,
|
||||
@Deprecated('Use targetFrame instead')
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
IOSWKFrameInfo_? iosTargetFrame,
|
||||
FrameInfo_? targetFrame})
|
||||
@Deprecated('Use isDialog instead')
|
||||
this.androidIsDialog,
|
||||
this.isDialog,
|
||||
@Deprecated('Use windowFeatures instead')
|
||||
this.iosWindowFeatures,
|
||||
this.windowFeatures,
|
||||
required URLRequest_ request,
|
||||
required bool isForMainFrame,
|
||||
@Deprecated('Use hasGesture instead')
|
||||
bool? androidHasGesture,
|
||||
@Deprecated('Use isRedirect instead')
|
||||
bool? androidIsRedirect,
|
||||
bool? hasGesture,
|
||||
bool? isRedirect,
|
||||
@Deprecated('Use navigationType instead')
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
IOSWKNavigationType_? iosWKNavigationType,
|
||||
NavigationType_? navigationType,
|
||||
@Deprecated('Use sourceFrame instead')
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
IOSWKFrameInfo_? iosSourceFrame,
|
||||
FrameInfo_? sourceFrame,
|
||||
@Deprecated('Use targetFrame instead')
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
IOSWKFrameInfo_? iosTargetFrame,
|
||||
FrameInfo_? targetFrame})
|
||||
: super(
|
||||
request: request,
|
||||
isForMainFrame: isForMainFrame,
|
||||
androidHasGesture: androidHasGesture,
|
||||
hasGesture: hasGesture,
|
||||
androidIsRedirect: androidIsRedirect,
|
||||
isRedirect: isRedirect,
|
||||
iosWKNavigationType: iosWKNavigationType,
|
||||
navigationType: navigationType,
|
||||
iosSourceFrame: iosSourceFrame,
|
||||
sourceFrame: sourceFrame,
|
||||
iosTargetFrame: iosTargetFrame,
|
||||
targetFrame: targetFrame);
|
||||
}
|
||||
request: request,
|
||||
isForMainFrame: isForMainFrame,
|
||||
androidHasGesture: androidHasGesture,
|
||||
hasGesture: hasGesture,
|
||||
androidIsRedirect: androidIsRedirect,
|
||||
isRedirect: isRedirect,
|
||||
iosWKNavigationType: iosWKNavigationType,
|
||||
navigationType: navigationType,
|
||||
iosSourceFrame: iosSourceFrame,
|
||||
sourceFrame: sourceFrame,
|
||||
iosTargetFrame: iosTargetFrame,
|
||||
targetFrame: targetFrame);
|
||||
}
|
||||
|
|
|
@ -18,5 +18,6 @@ class CrossOrigin_ {
|
|||
static const ANONYMOUS = const CrossOrigin_._internal("anonymous");
|
||||
|
||||
///CORS requests for this element will have the credentials flag set to 'include'.
|
||||
static const USE_CREDENTIALS = const CrossOrigin_._internal("use-credentials");
|
||||
}
|
||||
static const USE_CREDENTIALS =
|
||||
const CrossOrigin_._internal("use-credentials");
|
||||
}
|
||||
|
|
|
@ -43,11 +43,11 @@ class CSSLinkHtmlTagAttributes_ {
|
|||
|
||||
CSSLinkHtmlTagAttributes_(
|
||||
{this.id,
|
||||
this.media,
|
||||
this.crossOrigin,
|
||||
this.integrity,
|
||||
this.referrerPolicy,
|
||||
this.disabled,
|
||||
this.alternate,
|
||||
this.title});
|
||||
}
|
||||
this.media,
|
||||
this.crossOrigin,
|
||||
this.integrity,
|
||||
this.referrerPolicy,
|
||||
this.disabled,
|
||||
this.alternate,
|
||||
this.title});
|
||||
}
|
||||
|
|
|
@ -21,6 +21,6 @@ class CustomSchemeResponse_ {
|
|||
|
||||
CustomSchemeResponse_(
|
||||
{required this.data,
|
||||
required this.contentType,
|
||||
this.contentEncoding = 'utf-8'});
|
||||
}
|
||||
required this.contentType,
|
||||
this.contentEncoding = 'utf-8'});
|
||||
}
|
||||
|
|
|
@ -17,4 +17,4 @@ class CustomTabsShareState_ {
|
|||
|
||||
///Explicitly does not show a share option in the tab.
|
||||
static const SHARE_STATE_OFF = const CustomTabsShareState_._internal(2);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,8 @@ class DataDetectorTypes_ {
|
|||
static const NONE = const DataDetectorTypes_._internal("NONE");
|
||||
|
||||
///Phone numbers are detected and turned into links.
|
||||
static const PHONE_NUMBER = const DataDetectorTypes_._internal("PHONE_NUMBER");
|
||||
static const PHONE_NUMBER =
|
||||
const DataDetectorTypes_._internal("PHONE_NUMBER");
|
||||
|
||||
///URLs in text are detected and turned into links.
|
||||
static const LINK = const DataDetectorTypes_._internal("LINK");
|
||||
|
@ -23,23 +24,23 @@ class DataDetectorTypes_ {
|
|||
|
||||
///Dates and times that are in the future are detected and turned into links.
|
||||
static const CALENDAR_EVENT =
|
||||
const DataDetectorTypes_._internal("CALENDAR_EVENT");
|
||||
const DataDetectorTypes_._internal("CALENDAR_EVENT");
|
||||
|
||||
///Tracking numbers are detected and turned into links.
|
||||
static const TRACKING_NUMBER =
|
||||
const DataDetectorTypes_._internal("TRACKING_NUMBER");
|
||||
const DataDetectorTypes_._internal("TRACKING_NUMBER");
|
||||
|
||||
///Flight numbers are detected and turned into links.
|
||||
static const FLIGHT_NUMBER =
|
||||
const DataDetectorTypes_._internal("FLIGHT_NUMBER");
|
||||
const DataDetectorTypes_._internal("FLIGHT_NUMBER");
|
||||
|
||||
///Lookup suggestions are detected and turned into links.
|
||||
static const LOOKUP_SUGGESTION =
|
||||
const DataDetectorTypes_._internal("LOOKUP_SUGGESTION");
|
||||
const DataDetectorTypes_._internal("LOOKUP_SUGGESTION");
|
||||
|
||||
///Spotlight suggestions are detected and turned into links.
|
||||
static const SPOTLIGHT_SUGGESTION =
|
||||
const DataDetectorTypes_._internal("SPOTLIGHT_SUGGESTION");
|
||||
const DataDetectorTypes_._internal("SPOTLIGHT_SUGGESTION");
|
||||
|
||||
///All of the above data types are turned into links when detected. Choosing this value will automatically include any new detection type that is added.
|
||||
static const ALL = const DataDetectorTypes_._internal("ALL");
|
||||
|
@ -62,7 +63,7 @@ class IOSWKDataDetectorTypes_ {
|
|||
|
||||
///Phone numbers are detected and turned into links.
|
||||
static const PHONE_NUMBER =
|
||||
const IOSWKDataDetectorTypes_._internal("PHONE_NUMBER");
|
||||
const IOSWKDataDetectorTypes_._internal("PHONE_NUMBER");
|
||||
|
||||
///URLs in text are detected and turned into links.
|
||||
static const LINK = const IOSWKDataDetectorTypes_._internal("LINK");
|
||||
|
@ -72,24 +73,24 @@ class IOSWKDataDetectorTypes_ {
|
|||
|
||||
///Dates and times that are in the future are detected and turned into links.
|
||||
static const CALENDAR_EVENT =
|
||||
const IOSWKDataDetectorTypes_._internal("CALENDAR_EVENT");
|
||||
const IOSWKDataDetectorTypes_._internal("CALENDAR_EVENT");
|
||||
|
||||
///Tracking numbers are detected and turned into links.
|
||||
static const TRACKING_NUMBER =
|
||||
const IOSWKDataDetectorTypes_._internal("TRACKING_NUMBER");
|
||||
const IOSWKDataDetectorTypes_._internal("TRACKING_NUMBER");
|
||||
|
||||
///Flight numbers are detected and turned into links.
|
||||
static const FLIGHT_NUMBER =
|
||||
const IOSWKDataDetectorTypes_._internal("FLIGHT_NUMBER");
|
||||
const IOSWKDataDetectorTypes_._internal("FLIGHT_NUMBER");
|
||||
|
||||
///Lookup suggestions are detected and turned into links.
|
||||
static const LOOKUP_SUGGESTION =
|
||||
const IOSWKDataDetectorTypes_._internal("LOOKUP_SUGGESTION");
|
||||
const IOSWKDataDetectorTypes_._internal("LOOKUP_SUGGESTION");
|
||||
|
||||
///Spotlight suggestions are detected and turned into links.
|
||||
static const SPOTLIGHT_SUGGESTION =
|
||||
const IOSWKDataDetectorTypes_._internal("SPOTLIGHT_SUGGESTION");
|
||||
const IOSWKDataDetectorTypes_._internal("SPOTLIGHT_SUGGESTION");
|
||||
|
||||
///All of the above data types are turned into links when detected. Choosing this value will automatically include any new detection type that is added.
|
||||
static const ALL = const IOSWKDataDetectorTypes_._internal("ALL");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,4 +39,4 @@ class IOSSafariDismissButtonStyle_ {
|
|||
|
||||
///Makes the button title the localized string "Cancel".
|
||||
static const CANCEL = const IOSSafariDismissButtonStyle_._internal(2);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
abstract class Disposable {
|
||||
void dispose();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,10 +30,10 @@ class DownloadStartRequest_ {
|
|||
|
||||
DownloadStartRequest_(
|
||||
{required this.url,
|
||||
this.userAgent,
|
||||
this.contentDisposition,
|
||||
this.mimeType,
|
||||
required this.contentLength,
|
||||
this.suggestedFilename,
|
||||
this.textEncodingName});
|
||||
}
|
||||
this.userAgent,
|
||||
this.contentDisposition,
|
||||
this.mimeType,
|
||||
required this.contentLength,
|
||||
this.suggestedFilename,
|
||||
this.textEncodingName});
|
||||
}
|
||||
|
|
|
@ -20,4 +20,4 @@ class Favicon_ {
|
|||
int? height;
|
||||
|
||||
Favicon_({required this.url, this.rel, this.width, this.height});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,9 +43,7 @@ class FetchRequest_ {
|
|||
String? mode;
|
||||
|
||||
///The request credentials used by the request.
|
||||
@ExchangeableObjectProperty(
|
||||
deserializer: _fetchRequestCredentialDeserializer
|
||||
)
|
||||
@ExchangeableObjectProperty(deserializer: _fetchRequestCredentialDeserializer)
|
||||
FetchRequestCredential_? credentials;
|
||||
|
||||
///The cache mode used by the request.
|
||||
|
@ -71,16 +69,16 @@ class FetchRequest_ {
|
|||
|
||||
FetchRequest_(
|
||||
{this.url,
|
||||
this.method,
|
||||
this.headers,
|
||||
this.body,
|
||||
this.mode,
|
||||
this.credentials,
|
||||
this.cache,
|
||||
this.redirect,
|
||||
this.referrer,
|
||||
this.referrerPolicy,
|
||||
this.integrity,
|
||||
this.keepalive,
|
||||
this.action = FetchRequestAction_.PROCEED});
|
||||
}
|
||||
this.method,
|
||||
this.headers,
|
||||
this.body,
|
||||
this.mode,
|
||||
this.credentials,
|
||||
this.cache,
|
||||
this.redirect,
|
||||
this.referrer,
|
||||
this.referrerPolicy,
|
||||
this.integrity,
|
||||
this.keepalive,
|
||||
this.action = FetchRequestAction_.PROCEED});
|
||||
}
|
||||
|
|
|
@ -16,4 +16,4 @@ class FetchRequestAction_ {
|
|||
|
||||
///Proceeds with the fetch request.
|
||||
static const PROCEED = const FetchRequestAction_._internal(1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,4 +13,4 @@ class FetchRequestCredential_ {
|
|||
String? type;
|
||||
|
||||
FetchRequestCredential_({this.type});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,4 +12,4 @@ class FetchRequestCredentialDefault_ extends FetchRequestCredential_ {
|
|||
String? value;
|
||||
|
||||
FetchRequestCredentialDefault_({type, this.value}) : super(type: type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,4 +25,4 @@ class FetchRequestFederatedCredential_ extends FetchRequestCredential_ {
|
|||
FetchRequestFederatedCredential_(
|
||||
{type, this.id, this.name, this.protocol, this.provider, this.iconURL})
|
||||
: super(type: type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,4 +22,4 @@ class FetchRequestPasswordCredential_ extends FetchRequestCredential_ {
|
|||
FetchRequestPasswordCredential_(
|
||||
{type, this.id, this.name, this.password, this.iconURL})
|
||||
: super(type: type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,9 +16,8 @@ class FindSession_ {
|
|||
/// Defines how results are reported through the find panel's UI.
|
||||
SearchResultDisplayStyle_ searchResultDisplayStyle;
|
||||
|
||||
FindSession_({
|
||||
required this.resultCount,
|
||||
required this.highlightedResultIndex,
|
||||
required this.searchResultDisplayStyle
|
||||
});
|
||||
}
|
||||
FindSession_(
|
||||
{required this.resultCount,
|
||||
required this.highlightedResultIndex,
|
||||
required this.searchResultDisplayStyle});
|
||||
}
|
||||
|
|
|
@ -41,4 +41,4 @@ class AndroidForceDark_ {
|
|||
|
||||
///Unconditionally enable force dark. In this mode WebView content will always be rendered so as to emulate a dark theme.
|
||||
static const FORCE_DARK_ON = const AndroidForceDark_._internal(2);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,8 @@ class ForceDarkStrategy_ {
|
|||
///To avoid mixing two different darkening strategies, the `prefers-color-scheme` media query will evaluate to light.
|
||||
///
|
||||
///See [specification](https://drafts.csswg.org/css-color-adjust-1/) for more information.
|
||||
static const USER_AGENT_DARKENING_ONLY = const ForceDarkStrategy_._internal(0);
|
||||
static const USER_AGENT_DARKENING_ONLY =
|
||||
const ForceDarkStrategy_._internal(0);
|
||||
|
||||
///In this mode [WebView] content will always be darkened using dark theme provided by web page.
|
||||
///If web page does not provide dark theme support [WebView] content will be rendered with a default theme.
|
||||
|
@ -29,5 +30,6 @@ class ForceDarkStrategy_ {
|
|||
///If the metadata is not presented [WebView] content will be darkened by a user agent and `prefers-color-scheme` media query will evaluate to light.
|
||||
///
|
||||
///See [specification](https://drafts.csswg.org/css-color-adjust-1/) for more information.
|
||||
static const PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING = const ForceDarkStrategy_._internal(2);
|
||||
static const PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING =
|
||||
const ForceDarkStrategy_._internal(2);
|
||||
}
|
||||
|
|
|
@ -16,4 +16,4 @@ class FormResubmissionAction_ {
|
|||
|
||||
///Don't resend data
|
||||
static const DONT_RESEND = const FormResubmissionAction_._internal(1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,4 +40,4 @@ class IOSWKFrameInfo_ {
|
|||
|
||||
IOSWKFrameInfo_(
|
||||
{required this.isMainFrame, required this.request, this.securityOrigin});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,4 +19,4 @@ class GeolocationPermissionShowPromptResponse_ {
|
|||
|
||||
GeolocationPermissionShowPromptResponse_(
|
||||
{required this.origin, required this.allow, this.retain = false});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ class HttpAuthResponse_ {
|
|||
|
||||
HttpAuthResponse_(
|
||||
{this.username = "",
|
||||
this.password = "",
|
||||
this.permanentPersistence = false,
|
||||
this.action = HttpAuthResponseAction_.CANCEL});
|
||||
}
|
||||
this.password = "",
|
||||
this.permanentPersistence = false,
|
||||
this.action = HttpAuthResponseAction_.CANCEL});
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ class HttpAuthResponseAction_ {
|
|||
// ignore: unused_field
|
||||
final int _value;
|
||||
const HttpAuthResponseAction_._internal(this._value);
|
||||
|
||||
///Instructs the WebView to cancel the authentication request.
|
||||
static const CANCEL = const HttpAuthResponseAction_._internal(0);
|
||||
|
||||
|
@ -18,5 +19,5 @@ class HttpAuthResponseAction_ {
|
|||
|
||||
///Uses the credentials stored for the current host.
|
||||
static const USE_SAVED_HTTP_AUTH_CREDENTIALS =
|
||||
const HttpAuthResponseAction_._internal(2);
|
||||
}
|
||||
const HttpAuthResponseAction_._internal(2);
|
||||
}
|
||||
|
|
|
@ -45,11 +45,11 @@ class HttpAuthenticationChallenge_ extends URLAuthenticationChallenge_ {
|
|||
|
||||
HttpAuthenticationChallenge_(
|
||||
{required this.previousFailureCount,
|
||||
required URLProtectionSpace_ protectionSpace,
|
||||
@Deprecated("Use failureResponse instead") this.iosFailureResponse,
|
||||
this.failureResponse,
|
||||
this.proposedCredential,
|
||||
@Deprecated("Use error instead") this.iosError,
|
||||
this.error})
|
||||
required URLProtectionSpace_ protectionSpace,
|
||||
@Deprecated("Use failureResponse instead") this.iosFailureResponse,
|
||||
this.failureResponse,
|
||||
this.proposedCredential,
|
||||
@Deprecated("Use error instead") this.iosError,
|
||||
this.error})
|
||||
: super(protectionSpace: protectionSpace);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,4 +27,4 @@ class HTTPCookieSameSitePolicy_ {
|
|||
///Cookies will be sent in all contexts, i.e sending cross-origin is allowed.
|
||||
///`None` requires the `Secure` attribute in latest browser versions.
|
||||
static const NONE = const HTTPCookieSameSitePolicy_._internal("None");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,4 +14,4 @@ class InAppWebViewHitTestResult_ {
|
|||
String? extra;
|
||||
|
||||
InAppWebViewHitTestResult_({this.type, this.extra});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,13 +26,13 @@ class InAppWebViewHitTestResultType_ {
|
|||
|
||||
///[InAppWebViewHitTestResult] for hitting a HTML::a tag with src=http.
|
||||
static const SRC_ANCHOR_TYPE =
|
||||
const InAppWebViewHitTestResultType_._internal(7);
|
||||
const InAppWebViewHitTestResultType_._internal(7);
|
||||
|
||||
///[InAppWebViewHitTestResult] for hitting a HTML::a tag with src=http + HTML::img.
|
||||
static const SRC_IMAGE_ANCHOR_TYPE =
|
||||
const InAppWebViewHitTestResultType_._internal(8);
|
||||
const InAppWebViewHitTestResultType_._internal(8);
|
||||
|
||||
///[InAppWebViewHitTestResult] for hitting an edit text area.
|
||||
static const EDIT_TEXT_TYPE =
|
||||
const InAppWebViewHitTestResultType_._internal(9);
|
||||
}
|
||||
const InAppWebViewHitTestResultType_._internal(9);
|
||||
}
|
||||
|
|
|
@ -24,16 +24,14 @@ class InAppWebViewInitialData_ {
|
|||
Uri? androidHistoryUrl;
|
||||
|
||||
///The URL to use as the history entry. If `null` defaults to `about:blank`. If non-null, this must be a valid URL.
|
||||
@SupportedPlatforms(platforms: [
|
||||
AndroidPlatform()
|
||||
])
|
||||
@SupportedPlatforms(platforms: [AndroidPlatform()])
|
||||
Uri? historyUrl;
|
||||
|
||||
InAppWebViewInitialData_(
|
||||
{required this.data,
|
||||
this.mimeType = "text/html",
|
||||
this.encoding = "utf8",
|
||||
this.baseUrl,
|
||||
@Deprecated('Use historyUrl instead') this.androidHistoryUrl,
|
||||
this.historyUrl});
|
||||
}
|
||||
this.mimeType = "text/html",
|
||||
this.encoding = "utf8",
|
||||
this.baseUrl,
|
||||
@Deprecated('Use historyUrl instead') this.androidHistoryUrl,
|
||||
this.historyUrl});
|
||||
}
|
||||
|
|
|
@ -20,9 +20,9 @@ class InAppWebViewRect_ {
|
|||
@ExchangeableObjectConstructor()
|
||||
InAppWebViewRect_(
|
||||
{required this.x,
|
||||
required this.y,
|
||||
required this.width,
|
||||
required this.height}) {
|
||||
required this.y,
|
||||
required this.width,
|
||||
required this.height}) {
|
||||
assert(this.x >= 0 && this.y >= 0 && this.width >= 0 && this.height >= 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,4 +12,4 @@ import '../in_app_webview/in_app_webview_controller.dart';
|
|||
///
|
||||
///Also, a [JavaScriptHandlerCallback] can return json data to the JavaScript side.
|
||||
///In this case, simply return data that you want to send and it will be automatically json encoded using [jsonEncode] from the `dart:convert` library.
|
||||
typedef dynamic JavaScriptHandlerCallback(List<dynamic> arguments);
|
||||
typedef dynamic JavaScriptHandlerCallback(List<dynamic> arguments);
|
||||
|
|
|
@ -23,7 +23,7 @@ class JsAlertRequest_ {
|
|||
|
||||
JsAlertRequest_(
|
||||
{this.url,
|
||||
this.message,
|
||||
@Deprecated("Use isMainFrame instead") this.iosIsMainFrame,
|
||||
this.isMainFrame});
|
||||
}
|
||||
this.message,
|
||||
@Deprecated("Use isMainFrame instead") this.iosIsMainFrame,
|
||||
this.isMainFrame});
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ class JsAlertResponse_ {
|
|||
|
||||
JsAlertResponse_(
|
||||
{this.message = "",
|
||||
this.handledByClient = false,
|
||||
this.confirmButtonTitle = "",
|
||||
this.action = JsAlertResponseAction_.CONFIRM});
|
||||
}
|
||||
this.handledByClient = false,
|
||||
this.confirmButtonTitle = "",
|
||||
this.action = JsAlertResponseAction_.CONFIRM});
|
||||
}
|
||||
|
|
|
@ -13,4 +13,4 @@ class JsAlertResponseAction_ {
|
|||
|
||||
///Confirm that the user hit confirm button.
|
||||
static const CONFIRM = const JsAlertResponseAction_._internal(0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,4 +14,4 @@ class JsBeforeUnloadRequest_ {
|
|||
String? message;
|
||||
|
||||
JsBeforeUnloadRequest_({this.url, this.message});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,8 +26,8 @@ class JsBeforeUnloadResponse_ {
|
|||
|
||||
JsBeforeUnloadResponse_(
|
||||
{this.message = "",
|
||||
this.handledByClient = false,
|
||||
this.confirmButtonTitle = "",
|
||||
this.cancelButtonTitle = "",
|
||||
this.action = JsBeforeUnloadResponseAction_.CONFIRM});
|
||||
}
|
||||
this.handledByClient = false,
|
||||
this.confirmButtonTitle = "",
|
||||
this.cancelButtonTitle = "",
|
||||
this.action = JsBeforeUnloadResponseAction_.CONFIRM});
|
||||
}
|
||||
|
|
|
@ -16,4 +16,4 @@ class JsBeforeUnloadResponseAction_ {
|
|||
|
||||
///Confirm that the user hit cancel button.
|
||||
static const CANCEL = const JsBeforeUnloadResponseAction_._internal(1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ class JsConfirmRequest_ {
|
|||
|
||||
JsConfirmRequest_(
|
||||
{this.url,
|
||||
this.message,
|
||||
@Deprecated("Use isMainFrame instead") this.iosIsMainFrame,
|
||||
this.isMainFrame});
|
||||
}
|
||||
this.message,
|
||||
@Deprecated("Use isMainFrame instead") this.iosIsMainFrame,
|
||||
this.isMainFrame});
|
||||
}
|
||||
|
|
|
@ -26,8 +26,8 @@ class JsConfirmResponse_ {
|
|||
|
||||
JsConfirmResponse_(
|
||||
{this.message = "",
|
||||
this.handledByClient = false,
|
||||
this.confirmButtonTitle = "",
|
||||
this.cancelButtonTitle = "",
|
||||
this.action = JsConfirmResponseAction_.CANCEL});
|
||||
}
|
||||
this.handledByClient = false,
|
||||
this.confirmButtonTitle = "",
|
||||
this.cancelButtonTitle = "",
|
||||
this.action = JsConfirmResponseAction_.CANCEL});
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue