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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2584,6 +2584,18 @@ abstract class PigeonApiWebSettings(
/** Enables or disables content URL access within WebView. */
abstract fun setAllowContentAccess(pigeon_instance: android.webkit.WebSettings, enabled: Boolean)

/** Enables or disables universal cross-origin access from file URLs. */
abstract fun setAllowUniversalAccessFromFileURLs(
pigeon_instance: android.webkit.WebSettings,
enabled: Boolean
)

/** Enables or disables file URL access to other file URLs. */
abstract fun setAllowFileAccessFromFileURLs(
pigeon_instance: android.webkit.WebSettings,
enabled: Boolean
)

/** Sets whether Geolocation is enabled within WebView. */
abstract fun setGeolocationEnabled(pigeon_instance: android.webkit.WebSettings, enabled: Boolean)

Expand Down Expand Up @@ -2915,6 +2927,54 @@ abstract class PigeonApiWebSettings(
channel.setMessageHandler(null)
}
}
run {
val channel =
BasicMessageChannel<Any?>(
binaryMessenger,
"dev.flutter.pigeon.webview_flutter_android.WebSettings.setAllowUniversalAccessFromFileURLs",
codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val pigeon_instanceArg = args[0] as android.webkit.WebSettings
val enabledArg = args[1] as Boolean
val wrapped: List<Any?> =
try {
api.setAllowUniversalAccessFromFileURLs(pigeon_instanceArg, enabledArg)
listOf(null)
} catch (exception: Throwable) {
AndroidWebkitLibraryPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel =
BasicMessageChannel<Any?>(
binaryMessenger,
"dev.flutter.pigeon.webview_flutter_android.WebSettings.setAllowFileAccessFromFileURLs",
codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val pigeon_instanceArg = args[0] as android.webkit.WebSettings
val enabledArg = args[1] as Boolean
val wrapped: List<Any?> =
try {
api.setAllowFileAccessFromFileURLs(pigeon_instanceArg, enabledArg)
listOf(null)
} catch (exception: Throwable) {
AndroidWebkitLibraryPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run {
val channel =
BasicMessageChannel<Any?>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,18 @@ public void setAllowContentAccess(@NonNull WebSettings pigeon_instance, boolean
pigeon_instance.setAllowContentAccess(enabled);
}

@Override
public void setAllowFileAccessFromFileURLs(
@NonNull WebSettings pigeon_instance, boolean enabled) {
pigeon_instance.setAllowFileAccessFromFileURLs(enabled);
}
Comment thread
jackxuechen marked this conversation as resolved.

@Override
public void setAllowUniversalAccessFromFileURLs(
@NonNull WebSettings pigeon_instance, boolean enabled) {
pigeon_instance.setAllowUniversalAccessFromFileURLs(enabled);
}
Comment thread
jackxuechen marked this conversation as resolved.

@Override
public void setGeolocationEnabled(@NonNull WebSettings pigeon_instance, boolean enabled) {
pigeon_instance.setGeolocationEnabled(enabled);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2458,6 +2458,40 @@ class WebSettings extends PigeonInternalProxyApiBaseClass {
_extractReplyValueOrThrow(pigeonVar_replyList, pigeonVar_channelName, isNullValid: true);
}

/// Enables or disables universal cross-origin access from file URLs.
Future<void> setAllowUniversalAccessFromFileURLs(bool enabled) async {
final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = _pigeonVar_codecWebSettings;
final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger;
const pigeonVar_channelName =
'dev.flutter.pigeon.webview_flutter_android.WebSettings.setAllowUniversalAccessFromFileURLs';
final pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(<Object?>[this, enabled]);
final pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;

_extractReplyValueOrThrow(pigeonVar_replyList, pigeonVar_channelName, isNullValid: true);
}

/// Enables or disables file URL access to other file URLs.
Future<void> setAllowFileAccessFromFileURLs(bool enabled) async {
final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = _pigeonVar_codecWebSettings;
final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger;
const pigeonVar_channelName =
'dev.flutter.pigeon.webview_flutter_android.WebSettings.setAllowFileAccessFromFileURLs';
final pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final Future<Object?> pigeonVar_sendFuture = pigeonVar_channel.send(<Object?>[this, enabled]);
final pigeonVar_replyList = await pigeonVar_sendFuture as List<Object?>?;

_extractReplyValueOrThrow(pigeonVar_replyList, pigeonVar_channelName, isNullValid: true);
}

/// Sets whether Geolocation is enabled within WebView.
Future<void> setGeolocationEnabled(bool enabled) async {
final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = _pigeonVar_codecWebSettings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -620,6 +620,20 @@ class AndroidWebViewController extends PlatformWebViewController {
Future<void> setAllowContentAccess(bool enabled) =>
_webView.settings.setAllowContentAccess(enabled);

/// Sets the file URL access to other file URLs permission for the web view.
///
/// The default value is true for apps targeting API 15 and below, and false
/// when targeting API 16 and above.
Future<void> setAllowFileAccessFromFileURLs(bool enabled) =>
_webView.settings.setAllowFileAccessFromFileURLs(enabled);

/// Sets the universal cross-origin access from file URLs permission for the web view.
///
/// The default value is true for apps targeting API 15 and below, and false
/// when targeting API 16 and above.
Future<void> setAllowUniversalAccessFromFileURLs(bool enabled) =>
_webView.settings.setAllowUniversalAccessFromFileURLs(enabled);

/// Sets whether Geolocation is enabled.
///
/// The default is true.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,12 @@ abstract class WebSettings {
/// Enables or disables content URL access within WebView.
void setAllowContentAccess(bool enabled);

/// Enables or disables universal cross-origin access from file URLs.
void setAllowUniversalAccessFromFileURLs(bool enabled);

/// Enables or disables file URL access to other file URLs.
void setAllowFileAccessFromFileURLs(bool enabled);

/// Sets whether Geolocation is enabled within WebView.
void setGeolocationEnabled(bool enabled);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1753,6 +1753,38 @@ void main() {
verify(mockSettings.setAllowContentAccess(false)).called(1);
});

test('setAllowFileAccessFromFileURLs', () async {
final mockWebView = MockWebView();
final mockSettings = MockWebSettings();
final AndroidWebViewController controller = createControllerWithMocks(
mockWebView: mockWebView,
mockSettings: mockSettings,
);

clearInteractions(mockWebView);

await controller.setAllowFileAccessFromFileURLs(false);

verify(mockWebView.settings).called(1);
verify(mockSettings.setAllowFileAccessFromFileURLs(false)).called(1);
});

test('setAllowUniversalAccessFromFileURLs', () async {
final mockWebView = MockWebView();
final mockSettings = MockWebSettings();
final AndroidWebViewController controller = createControllerWithMocks(
mockWebView: mockWebView,
mockSettings: mockSettings,
);

clearInteractions(mockWebView);

await controller.setAllowUniversalAccessFromFileURLs(false);

verify(mockWebView.settings).called(1);
verify(mockSettings.setAllowUniversalAccessFromFileURLs(false)).called(1);
});

test('setGeolocationEnabled', () async {
final mockWebView = MockWebView();
final mockSettings = MockWebSettings();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,24 @@ class MockAndroidWebViewController extends _i1.Mock implements _i7.AndroidWebVie
)
as _i8.Future<void>);

@override
_i8.Future<void> setAllowFileAccessFromFileURLs(bool? enabled) =>
(super.noSuchMethod(
Invocation.method(#setAllowFileAccessFromFileURLs, [enabled]),
returnValue: _i8.Future<void>.value(),
returnValueForMissingStub: _i8.Future<void>.value(),
)
as _i8.Future<void>);

@override
_i8.Future<void> setAllowUniversalAccessFromFileURLs(bool? enabled) =>
(super.noSuchMethod(
Invocation.method(#setAllowUniversalAccessFromFileURLs, [enabled]),
returnValue: _i8.Future<void>.value(),
returnValueForMissingStub: _i8.Future<void>.value(),
)
as _i8.Future<void>);

@override
_i8.Future<void> setGeolocationEnabled(bool? enabled) =>
(super.noSuchMethod(
Expand Down Expand Up @@ -786,6 +804,15 @@ class MockAndroidWebViewController extends _i1.Mock implements _i7.AndroidWebVie
returnValueForMissingStub: _i8.Future<void>.value(),
)
as _i8.Future<void>);

@override
_i8.Future<void> setInsetsForWebContentToIgnore(List<_i7.AndroidWebViewInsets>? insets) =>
(super.noSuchMethod(
Invocation.method(#setInsetsForWebContentToIgnore, [insets]),
returnValue: _i8.Future<void>.value(),
returnValueForMissingStub: _i8.Future<void>.value(),
)
as _i8.Future<void>);
}

/// A class which mocks [AndroidWebViewWidgetCreationParams].
Expand Down Expand Up @@ -1718,6 +1745,24 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings {
)
as _i8.Future<void>);

@override
_i8.Future<void> setAllowUniversalAccessFromFileURLs(bool? enabled) =>
(super.noSuchMethod(
Invocation.method(#setAllowUniversalAccessFromFileURLs, [enabled]),
returnValue: _i8.Future<void>.value(),
returnValueForMissingStub: _i8.Future<void>.value(),
)
as _i8.Future<void>);

@override
_i8.Future<void> setAllowFileAccessFromFileURLs(bool? enabled) =>
(super.noSuchMethod(
Invocation.method(#setAllowFileAccessFromFileURLs, [enabled]),
returnValue: _i8.Future<void>.value(),
returnValueForMissingStub: _i8.Future<void>.value(),
)
as _i8.Future<void>);

@override
_i8.Future<void> setGeolocationEnabled(bool? enabled) =>
(super.noSuchMethod(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,24 @@ class MockAndroidWebViewController extends _i1.Mock implements _i6.AndroidWebVie
)
as _i5.Future<void>);

@override
_i5.Future<void> setAllowFileAccessFromFileURLs(bool? enabled) =>
(super.noSuchMethod(
Invocation.method(#setAllowFileAccessFromFileURLs, [enabled]),
returnValue: _i5.Future<void>.value(),
returnValueForMissingStub: _i5.Future<void>.value(),
)
as _i5.Future<void>);

@override
_i5.Future<void> setAllowUniversalAccessFromFileURLs(bool? enabled) =>
(super.noSuchMethod(
Invocation.method(#setAllowUniversalAccessFromFileURLs, [enabled]),
returnValue: _i5.Future<void>.value(),
returnValueForMissingStub: _i5.Future<void>.value(),
)
as _i5.Future<void>);

@override
_i5.Future<void> setGeolocationEnabled(bool? enabled) =>
(super.noSuchMethod(
Expand Down Expand Up @@ -593,4 +611,13 @@ class MockAndroidWebViewController extends _i1.Mock implements _i6.AndroidWebVie
returnValueForMissingStub: _i5.Future<void>.value(),
)
as _i5.Future<void>);

@override
_i5.Future<void> setInsetsForWebContentToIgnore(List<_i6.AndroidWebViewInsets>? insets) =>
(super.noSuchMethod(
Invocation.method(#setInsetsForWebContentToIgnore, [insets]),
returnValue: _i5.Future<void>.value(),
returnValueForMissingStub: _i5.Future<void>.value(),
)
as _i5.Future<void>);
}
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,24 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings {
)
as _i4.Future<void>);

@override
_i4.Future<void> setAllowUniversalAccessFromFileURLs(bool? enabled) =>
(super.noSuchMethod(
Invocation.method(#setAllowUniversalAccessFromFileURLs, [enabled]),
returnValue: _i4.Future<void>.value(),
returnValueForMissingStub: _i4.Future<void>.value(),
)
as _i4.Future<void>);

@override
_i4.Future<void> setAllowFileAccessFromFileURLs(bool? enabled) =>
(super.noSuchMethod(
Invocation.method(#setAllowFileAccessFromFileURLs, [enabled]),
returnValue: _i4.Future<void>.value(),
returnValueForMissingStub: _i4.Future<void>.value(),
)
as _i4.Future<void>);

@override
_i4.Future<void> setGeolocationEnabled(bool? enabled) =>
(super.noSuchMethod(
Expand Down