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

Filter by extension

Filter by extension


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

* Adds support to set whether to draw the scrollbar. See
`AndroidWebViewController.setVerticalScrollBarEnabled`,
`AndroidWebViewController.setHorizontalScrollBarEnabled`,
`AndroidWebViewController.supportsSetScrollBarsEnabled`.

## 4.4.2

* Updates pigeon generated code to fix `ImplicitSamInstance` and `SyntheticAccessor` Kotlin lint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4840,6 +4840,20 @@ abstract class PigeonApiView(
/** Return the scrolled position of this view. */
abstract fun getScrollPosition(pigeon_instance: android.view.View): WebViewPoint

/**
* Define whether the vertical scrollbar should be drawn or not.
*
* The scrollbar is not drawn by default.
*/
abstract fun setVerticalScrollBarEnabled(pigeon_instance: android.view.View, enabled: Boolean)

/**
* Define whether the horizontal scrollbar should be drawn or not.
*
* The scrollbar is not drawn by default.
*/
abstract fun setHorizontalScrollBarEnabled(pigeon_instance: android.view.View, enabled: Boolean)

/** Set the over-scroll mode for this view. */
abstract fun setOverScrollMode(pigeon_instance: android.view.View, mode: OverScrollMode)

Expand Down Expand Up @@ -4915,6 +4929,54 @@ abstract class PigeonApiView(
channel.setMessageHandler(null)
}
}
run {
val channel =
BasicMessageChannel<Any?>(
binaryMessenger,
"dev.flutter.pigeon.webview_flutter_android.View.setVerticalScrollBarEnabled",
codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val pigeon_instanceArg = args[0] as android.view.View
val enabledArg = args[1] as Boolean
val wrapped: List<Any?> =
try {
api.setVerticalScrollBarEnabled(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.View.setHorizontalScrollBarEnabled",
codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val pigeon_instanceArg = args[0] as android.view.View
val enabledArg = args[1] as Boolean
val wrapped: List<Any?> =
try {
api.setHorizontalScrollBarEnabled(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 @@ -41,6 +41,16 @@ public WebViewPoint getScrollPosition(@NonNull View pigeon_instance) {
return new WebViewPoint(pigeon_instance.getScrollX(), pigeon_instance.getScrollY());
}

@Override
public void setVerticalScrollBarEnabled(@NonNull View pigeon_instance, boolean enabled) {
pigeon_instance.setVerticalScrollBarEnabled(enabled);
}

@Override
public void setHorizontalScrollBarEnabled(@NonNull View pigeon_instance, boolean enabled) {
pigeon_instance.setHorizontalScrollBarEnabled(enabled);
}

@Override
public void setOverScrollMode(@NonNull View pigeon_instance, @NonNull OverScrollMode mode) {
switch (mode) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,28 @@ public void getScrollPosition() {
assertEquals(value.getY(), api.getScrollPosition(instance).getY());
}

@Test
public void setVerticalScrollBarEnabled() {
final PigeonApiView api = new TestProxyApiRegistrar().getPigeonApiView();

final View instance = mock(View.class);
final boolean enabled = true;
api.setVerticalScrollBarEnabled(instance, enabled);

verify(instance).setVerticalScrollBarEnabled(enabled);
}

@Test
public void setHorizontalScrollBarEnabled() {
final PigeonApiView api = new TestProxyApiRegistrar().getPigeonApiView();

final View instance = mock(View.class);
final boolean enabled = false;
api.setHorizontalScrollBarEnabled(instance, enabled);

verify(instance).setHorizontalScrollBarEnabled(enabled);
}

@Test
public void setOverScrollMode() {
final PigeonApiView api = new TestProxyApiRegistrar().getPigeonApiView();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ dependencies:
# The example app is bundled with the plugin so we use a path dependency on
# the parent directory to use the current plugin's version.
path: ../
webview_flutter_platform_interface: ^2.11.0
webview_flutter_platform_interface: ^2.12.0

dev_dependencies:
espresso: ^0.4.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6611,6 +6611,70 @@ class View extends PigeonInternalProxyApiBaseClass {
}
}

/// Define whether the vertical scrollbar should be drawn or not.
///
/// The scrollbar is not drawn by default.
Future<void> setVerticalScrollBarEnabled(bool enabled) async {
final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec =
_pigeonVar_codecView;
final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger;
const String pigeonVar_channelName =
'dev.flutter.pigeon.webview_flutter_android.View.setVerticalScrollBarEnabled';
final BasicMessageChannel<Object?> pigeonVar_channel =
BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final Future<Object?> pigeonVar_sendFuture =
pigeonVar_channel.send(<Object?>[this, enabled]);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_sendFuture as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}

/// Define whether the horizontal scrollbar should be drawn or not.
///
/// The scrollbar is not drawn by default.
Future<void> setHorizontalScrollBarEnabled(bool enabled) async {
final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec =
_pigeonVar_codecView;
final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger;
const String pigeonVar_channelName =
'dev.flutter.pigeon.webview_flutter_android.View.setHorizontalScrollBarEnabled';
final BasicMessageChannel<Object?> pigeonVar_channel =
BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final Future<Object?> pigeonVar_sendFuture =
pigeonVar_channel.send(<Object?>[this, enabled]);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_sendFuture as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}

/// Set the over-scroll mode for this view.
Future<void> setOverScrollMode(OverScrollMode mode) async {
final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -732,6 +732,17 @@ class AndroidWebViewController extends PlatformWebViewController {
return _webChromeClient.setSynchronousReturnValueForOnJsPrompt(true);
}

@override
Future<void> setVerticalScrollBarEnabled(bool enabled) =>
_webView.setVerticalScrollBarEnabled(enabled);

@override
Future<void> setHorizontalScrollBarEnabled(bool enabled) =>
_webView.setHorizontalScrollBarEnabled(enabled);

@override
bool supportsSetScrollBarsEnabled() => true;

@override
Future<void> setOverScrollMode(WebViewOverScrollMode mode) {
return switch (mode) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -852,6 +852,16 @@ abstract class View {
/// Return the scrolled position of this view.
WebViewPoint getScrollPosition();

/// Define whether the vertical scrollbar should be drawn or not.
///
/// The scrollbar is not drawn by default.
void setVerticalScrollBarEnabled(bool enabled);

/// Define whether the horizontal scrollbar should be drawn or not.
///
/// The scrollbar is not drawn by default.
void setHorizontalScrollBarEnabled(bool enabled);

/// Set the over-scroll mode for this view.
void setOverScrollMode(OverScrollMode mode);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: webview_flutter_android
description: A Flutter plugin that provides a WebView widget on Android.
repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_android
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22
version: 4.4.2
version: 4.5.0

environment:
sdk: ^3.6.0
Expand All @@ -20,7 +20,7 @@ flutter:
dependencies:
flutter:
sdk: flutter
webview_flutter_platform_interface: ^2.11.0
webview_flutter_platform_interface: ^2.12.0

dev_dependencies:
build_runner: ^2.1.4
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1451,6 +1451,28 @@ void main() {
verify(mockWebView.scrollBy(4, 2)).called(1);
});

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

await controller.setVerticalScrollBarEnabled(false);

verify(mockWebView.setVerticalScrollBarEnabled(false)).called(1);
});

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

await controller.setHorizontalScrollBarEnabled(false);

verify(mockWebView.setHorizontalScrollBarEnabled(false)).called(1);
});

test('getScrollPosition', () async {
final MockWebView mockWebView = MockWebView();
final AndroidWebViewController controller = createControllerWithMocks(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,22 @@ class MockAndroidWebViewController extends _i1.Mock
returnValueForMissingStub: _i8.Future<void>.value(),
) as _i8.Future<void>);

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

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

@override
_i8.Future<void> setOverScrollMode(_i3.WebViewOverScrollMode? mode) =>
(super.noSuchMethod(
Expand Down Expand Up @@ -2485,6 +2501,22 @@ class MockWebView extends _i1.Mock implements _i2.WebView {
),
) as _i8.Future<_i2.WebViewPoint>);

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

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

@override
_i8.Future<void> setOverScrollMode(_i2.OverScrollMode? mode) =>
(super.noSuchMethod(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,22 @@ class MockAndroidWebViewController extends _i1.Mock
returnValueForMissingStub: _i5.Future<void>.value(),
) as _i5.Future<void>);

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

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

@override
_i5.Future<void> setOverScrollMode(_i3.WebViewOverScrollMode? mode) =>
(super.noSuchMethod(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,22 @@ class MockWebView extends _i1.Mock implements _i2.WebView {
),
) as _i4.Future<_i2.WebViewPoint>);

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

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

@override
_i4.Future<void> setOverScrollMode(_i2.OverScrollMode? mode) =>
(super.noSuchMethod(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 3.21.0

* Adds support to set whether to draw the scrollbar. See
`WebKitWebViewController.setVerticalScrollBarEnabled`,
`WebKitWebViewController.setHorizontalScrollBarEnabled`,
`WebKitWebViewController.supportsSetScrollBarsEnabled`.

## 3.20.0

* Adds support to disable a preview of the destination for a link. See
Expand Down
Loading