@@ -54,17 +54,33 @@ void main() {
5454 verify (mockElement.src = 'test url' );
5555 });
5656
57- test ('loadHtmlString loads html into iframe' , () {
58- // Setup
59- final MockIFrameElement mockElement = MockIFrameElement ();
60- final WebWebViewPlatformController controller =
61- WebWebViewPlatformController (
62- mockElement,
63- );
64- // Run
65- controller.loadHtmlString ('test html' );
66- // Verify
67- verify (mockElement.src = 'data:text/html,${Uri .encodeFull ('test html' )}' );
57+ group ('loadHtmlString' , () {
58+ test ('loadHtmlString loads html into iframe' , () {
59+ // Setup
60+ final MockIFrameElement mockElement = MockIFrameElement ();
61+ final WebWebViewPlatformController controller =
62+ WebWebViewPlatformController (
63+ mockElement,
64+ );
65+ // Run
66+ controller.loadHtmlString ('test html' );
67+ // Verify
68+ verify (mockElement.src =
69+ 'data:text/html;charset=utf-8,${Uri .encodeFull ('test html' )}' );
70+ });
71+
72+ test ('loadHtmlString escapes "#" correctly' , () {
73+ // Setup
74+ final MockIFrameElement mockElement = MockIFrameElement ();
75+ final WebWebViewPlatformController controller =
76+ WebWebViewPlatformController (
77+ mockElement,
78+ );
79+ // Run
80+ controller.loadHtmlString ('#' );
81+ // Verify
82+ verify (mockElement.src = argThat (contains ('%23' )));
83+ });
6884 });
6985
7086 group ('loadRequest' , () {
@@ -122,8 +138,40 @@ void main() {
122138 requestHeaders: < String , String > {'Foo' : 'Bar' },
123139 sendData: Uint8List .fromList ('test body' .codeUnits),
124140 ));
125- verify (
126- mockElement.src = 'data:text/plain,${Uri .encodeFull ('test data' )}' );
141+ verify (mockElement.src =
142+ 'data:;charset=utf-8,${Uri .encodeFull ('test data' )}' );
143+ });
144+
145+ test ('loadRequest escapes "#" correctly' , () async {
146+ // Setup
147+ final MockIFrameElement mockElement = MockIFrameElement ();
148+ final WebWebViewPlatformController controller =
149+ WebWebViewPlatformController (
150+ mockElement,
151+ );
152+ final MockHttpRequest mockHttpRequest = MockHttpRequest ();
153+ when (mockHttpRequest.getResponseHeader ('content-type' ))
154+ .thenReturn ('text/html' );
155+ when (mockHttpRequest.responseText).thenReturn ('#' );
156+ final MockHttpRequestFactory mockHttpRequestFactory =
157+ MockHttpRequestFactory ();
158+ when (mockHttpRequestFactory.request (
159+ any,
160+ method: anyNamed ('method' ),
161+ requestHeaders: anyNamed ('requestHeaders' ),
162+ sendData: anyNamed ('sendData' ),
163+ )).thenAnswer ((_) => Future <HttpRequest >.value (mockHttpRequest));
164+ controller.httpRequestFactory = mockHttpRequestFactory;
165+ // Run
166+ await controller.loadRequest (
167+ WebViewRequest (
168+ uri: Uri .parse ('https://flutter.dev' ),
169+ method: WebViewRequestMethod .post,
170+ body: Uint8List .fromList ('test body' .codeUnits),
171+ headers: < String , String > {'Foo' : 'Bar' }),
172+ );
173+ // Verify
174+ verify (mockElement.src = argThat (contains ('%23' )));
127175 });
128176 });
129177 });
0 commit comments