Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
e6618c8
standard creation
bparrishMines Jun 8, 2022
1bd8ca3
fix tests
bparrishMines Jun 8, 2022
6d67ecd
update mocks
bparrishMines Jun 8, 2022
8083132
ensure setup
bparrishMines Jun 8, 2022
abec006
current url
bparrishMines Jun 8, 2022
e5c820b
only set if nonnull
bparrishMines Jun 8, 2022
ed678fd
webview may have gotten it done
bparrishMines Jun 8, 2022
2edf7d7
some more objc polish
bparrishMines Jun 9, 2022
4ffc2de
formatting
bparrishMines Jun 9, 2022
8b7f28a
passing tests
bparrishMines Jun 9, 2022
613d5ac
prevent progress bug
bparrishMines Jun 9, 2022
6c059cf
pass error data back
bparrishMines Jun 9, 2022
1bfa38e
return errors instead
bparrishMines Jun 9, 2022
6aaf2c2
fix returning non bool
bparrishMines Jun 9, 2022
1ab7ceb
return expected string bool and double values
bparrishMines Jun 9, 2022
3c7090a
use objective c string as returning result
bparrishMines Jun 9, 2022
4ff2fc0
dart side of addiing dispose and create webview configuration
bparrishMines Jun 10, 2022
bd635a7
webviewconfiguration objc code
bparrishMines Jun 10, 2022
0cdcde3
formatting
bparrishMines Jun 10, 2022
6f9dbc1
store binary messenger
bparrishMines Jun 10, 2022
8bc168e
fix configuration identifier
bparrishMines Jun 10, 2022
5ebbb62
Merge branch 'main' of github.com:flutter/plugins into copies
bparrishMines Jun 10, 2022
191bd31
Merge branch 'main' of github.com:flutter/plugins into copies
bparrishMines Jun 13, 2022
c8585c0
new fix for nserror
bparrishMines Jun 14, 2022
37d8300
fix crash
bparrishMines Jun 14, 2022
e7b9d11
correct import
bparrishMines Jun 14, 2022
5537463
Merge branch 'main' of github.com:flutter/plugins into copies
bparrishMines Jun 15, 2022
b2892e2
formatting and test passing
bparrishMines Jun 15, 2022
f40115d
nonatomic
bparrishMines Jun 15, 2022
2a18e2c
duplicate code + missing comma
bparrishMines Jun 15, 2022
3011abe
missing commas
bparrishMines Jun 15, 2022
f3f58e3
another missing comma
bparrishMines Jun 21, 2022
353cab1
improve weak comments
bparrishMines Jun 22, 2022
d92b699
formatting
bparrishMines Jun 22, 2022
4710dc9
Merge branch 'main' of github.com:flutter/plugins into copies
bparrishMines Jun 22, 2022
7d7a273
Merge branch 'main' of github.com:flutter/plugins into copies
bparrishMines Jun 22, 2022
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
Prev Previous commit
Next Next commit
return errors instead
  • Loading branch information
bparrishMines committed Jun 9, 2022
commit 1bfa38e7b7e30e4ce0185d9853591ee7a4f93665
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,6 @@ - (void)evaluateJavaScriptForWebViewWithIdentifier:(nonnull NSNumber *)identifie
evaluateJavaScript:javaScriptString
completionHandler:^(id _Nullable result, NSError *_Nullable error) {
id returnValue = nil;
FlutterError *flutterError = nil;
if (!error) {
if (!result || [result isKindOfClass:[NSString class]] ||
[result isKindOfClass:[NSNumber class]]) {
Expand All @@ -183,12 +182,10 @@ - (void)evaluateJavaScriptForWebViewWithIdentifier:(nonnull NSNumber *)identifie
returnValue = [result description];
}
} else {
flutterError = [FlutterError errorWithCode:@"FWFEvaluateJavaScriptError"
message:@"Failed evaluating JavaScript."
details:FWFNSErrorDataFromNSError(error)];
returnValue = FWFNSErrorDataFromNSError(error);
}

completion(returnValue, flutterError);
completion(returnValue, nil);
}];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,20 +328,21 @@ class WebKitWebViewPlatformController extends WebViewPlatformController {

@override
Future<void> runJavascript(String javascript) async {
try {
await webView.evaluateJavaScript(javascript);
} on PlatformException catch (exception) {
// WebKit will throw an error when the type of the evaluated value is
// unsupported. This also goes for `null` and `undefined` on iOS 14+. For
// example, when running a void function. For ease of use, this specific
// error is ignored when no return value is expected.
// TODO(bparrishMines): Ensure the platform code includes the NSError in
// the FlutterError.details.
if (exception.details is! NSError ||
exception.details.code !=
WKErrorCode.javaScriptResultTypeIsUnsupported) {
rethrow;
}
final Object? result = await webView.evaluateJavaScript(javascript);
// WebKit will throw an error when the type of the evaluated value is
// unsupported. This also goes for `null` and `undefined` on iOS 14+. For
// example, when running a void function. For ease of use, this specific
// error is ignored when no return value is expected.
if (result is NSError &&
result.code == WKErrorCode.javaScriptResultTypeIsUnsupported) {
return;
} else if (result is NSError) {
throw PlatformException(
code: 'runJavascript_failed',
message: 'Failed running JavaScript',
details:
"JavaScript string was: '$javascript'\n${result.localizedDescription}",
);
}
}

Expand All @@ -353,6 +354,13 @@ class WebKitWebViewPlatformController extends WebViewPlatformController {
'Result of JavaScript execution returned a `null` value. '
'Use `runJavascript` when expecting a null return value.',
);
} else if (result is NSError) {
throw PlatformException(
code: 'runJavascriptReturningResult_failed',
message: 'Failed running JavaScript',
details:
"JavaScript string was: '$javascript'\n${result.localizedDescription}",
);
}
return result.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import 'dart:math';
import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
Expand Down Expand Up @@ -724,15 +723,15 @@ void main() {
(WidgetTester tester) async {
await buildWidget(tester);

when(mockWebView.evaluateJavaScript('runJavaScript'))
.thenThrow(PlatformException(
code: '',
details: const NSError(
code: WKErrorCode.javaScriptResultTypeIsUnsupported,
domain: '',
localizedDescription: '',
when(mockWebView.evaluateJavaScript('runJavaScript')).thenAnswer(
(_) => Future<Object?>.value(
const NSError(
code: WKErrorCode.javaScriptResultTypeIsUnsupported,
domain: '',
localizedDescription: '',
),
),
));
);
expect(
testController.runJavascript('runJavaScript'),
completes,
Expand Down