From 12588bfc416d9b8e346114ef447707b56bed4c2d Mon Sep 17 00:00:00 2001 From: Hugo Olthof Date: Wed, 17 May 2023 10:22:40 +0200 Subject: [PATCH 1/9] Adds the web resource request to HttpResponseError --- .../lib/src/types/http_response_error.dart | 6 ++++++ .../lib/src/types/web_resource_request.dart | 21 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart index e51b8cf7e2c..252b1765676 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart @@ -4,6 +4,8 @@ import 'package:flutter/foundation.dart'; +import 'web_resource_request.dart'; + /// Error returned in `PlatformNavigationDelegate.setOnHttpError` when an HTTP /// response error has been received. /// @@ -38,8 +40,12 @@ class HttpResponseError { /// Used by the platform implementation to create a new [HttpResponseError]. const HttpResponseError({ required this.statusCode, + this.request }); /// The HTTP status code. final int statusCode; + + /// The associated request. + final WebResourceRequest? request; } diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart new file mode 100644 index 00000000000..fd71288fcb0 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart @@ -0,0 +1,21 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/foundation.dart'; + +/// Defines the parameters of the web resource request from the associated response. +@immutable +class WebResourceRequest { + /// Used by the platform implementation to create a new [WebResourceRequest]. + const WebResourceRequest({ + required this.url, + required this.isForMainFrame + }); + + /// The URL for which the resource request was made. + final String url; + + /// Indicates whether the request was made in the web site's main frame or a subframe. + final bool isForMainFrame; +} \ No newline at end of file From 5016358d5dbefb709fd665afb6c0e16fbe3122d3 Mon Sep 17 00:00:00 2001 From: Hugo Olthof Date: Wed, 17 May 2023 10:23:29 +0200 Subject: [PATCH 2/9] Adds empty line --- .../lib/src/types/web_resource_request.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart index fd71288fcb0..4f4241e8afb 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart @@ -18,4 +18,4 @@ class WebResourceRequest { /// Indicates whether the request was made in the web site's main frame or a subframe. final bool isForMainFrame; -} \ No newline at end of file +} From c7600f0379b348690eca5c8b87839b4852e36358 Mon Sep 17 00:00:00 2001 From: Hugo Olthof Date: Wed, 17 May 2023 10:29:00 +0200 Subject: [PATCH 3/9] Bumps version and updates the changelog --- .../CHANGELOG.md | 4 ++++ .../lib/src/types/http_response_error.dart | 13 ++++++++---- .../lib/src/types/web_resource_request.dart | 21 ------------------- .../pubspec.yaml | 2 +- 4 files changed, 14 insertions(+), 26 deletions(-) delete mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md index e708df3f64b..5749b8b518f 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.9.0 + +* Adds `WebResourceRequest` to `HttpResponseError`. + ## 2.8.0 * Adds support to track scroll position changes. See `PlatformWebViewController.setOnScrollPositionChange`. diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart index 252b1765676..9437e5794ca 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart @@ -4,7 +4,8 @@ import 'package:flutter/foundation.dart'; -import 'web_resource_request.dart'; +import '../../webview_flutter_platform_interface.dart'; +import 'web_resource_response.dart'; /// Error returned in `PlatformNavigationDelegate.setOnHttpError` when an HTTP /// response error has been received. @@ -40,12 +41,16 @@ class HttpResponseError { /// Used by the platform implementation to create a new [HttpResponseError]. const HttpResponseError({ required this.statusCode, - this.request + this.requestParams, + this.response, }); /// The HTTP status code. final int statusCode; - /// The associated request. - final WebResourceRequest? request; + /// The associated request parameters. + final LoadRequestParams? requestParams; + + /// The associated response. + final WebResourceResponse? response; } diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart deleted file mode 100644 index 4f4241e8afb..00000000000 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/foundation.dart'; - -/// Defines the parameters of the web resource request from the associated response. -@immutable -class WebResourceRequest { - /// Used by the platform implementation to create a new [WebResourceRequest]. - const WebResourceRequest({ - required this.url, - required this.isForMainFrame - }); - - /// The URL for which the resource request was made. - final String url; - - /// Indicates whether the request was made in the web site's main frame or a subframe. - final bool isForMainFrame; -} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml index 774da3ce458..1a900c2b4d4 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml @@ -4,7 +4,7 @@ repository: https://github.com/flutter/packages/tree/main/packages/webview_flutt issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview_flutter%22 # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 2.8.0 +version: 2.9.0 environment: sdk: ">=3.0.0 <4.0.0" From bc00802c8775941a5e1faf7a2c3f9ed25c9c3b23 Mon Sep 17 00:00:00 2001 From: Hugo Olthof Date: Thu, 25 May 2023 16:58:14 +0200 Subject: [PATCH 4/9] Adds WebResourceResponse class --- .../lib/src/types/web_resource_response.dart | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart new file mode 100644 index 00000000000..01dd778672f --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart @@ -0,0 +1,52 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/foundation.dart'; + +/// Contains information about the response for the request. +/// +/// Platform specific implementations can add additional fields by extending +/// this class. +/// +/// {@tool sample} +/// This example demonstrates how to extend the [WebResourceResponse] to +/// provide additional platform specific parameters. +/// +/// When extending [WebResourceResponse] additional parameters should always +/// accept `null` or have a default value to prevent breaking changes. +/// +/// ```dart +/// class AndroidWebResourceResponse extends WebResourceResponse { +/// WebResourceResponse._({ +/// required WebResourceResponse response, +/// }) : super( +/// uri: response.uri, +/// headers: params.headers, +/// ); +/// +/// factory AndroidWebResourceResponse.fromWebResourceResponse( +/// WebResourceResponse response, { +/// Uri? historyUrl, +/// }) { +/// return AndroidWebResourceResponse._(response, historyUrl: historyUrl); +/// } +/// +/// final Uri? historyUrl; +/// } +/// ``` +/// {@end-tool} +@immutable +class WebResourceResponse { + /// Used by the platform implementation to create a new [WebResourceResponse]. + const WebResourceResponse({ + required this.uri, + this.headers = const {}, + }); + + /// URI for the request. + final Uri uri; + + /// Headers for the request. + final Map headers; +} From 71f3d19d069006c8cc90b04a4893c331059b2a29 Mon Sep 17 00:00:00 2001 From: Hugo Olthof Date: Thu, 25 May 2023 17:01:30 +0200 Subject: [PATCH 5/9] Updates changelog --- .../webview_flutter_platform_interface/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md index 5749b8b518f..965bae71d51 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md @@ -1,6 +1,6 @@ ## 2.9.0 -* Adds `WebResourceRequest` to `HttpResponseError`. +* Adds `LoadRequestParams` and `WebResourceResponse` to `HttpResponseError`. ## 2.8.0 From 9c519f5de12c46f47ef752ef901b2f4995f7e23e Mon Sep 17 00:00:00 2001 From: Hugo Olthof Date: Thu, 13 Jul 2023 22:31:03 +0200 Subject: [PATCH 6/9] Implemented feedback --- .../lib/src/types/http_response_error.dart | 8 ++-- .../lib/src/types/web_resource_request.dart | 47 +++++++++++++++++++ .../lib/src/types/web_resource_response.dart | 16 +++---- 3 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart index 9437e5794ca..d22adbbc24a 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart @@ -4,7 +4,7 @@ import 'package:flutter/foundation.dart'; -import '../../webview_flutter_platform_interface.dart'; +import 'web_resource_request.dart'; import 'web_resource_response.dart'; /// Error returned in `PlatformNavigationDelegate.setOnHttpError` when an HTTP @@ -41,15 +41,15 @@ class HttpResponseError { /// Used by the platform implementation to create a new [HttpResponseError]. const HttpResponseError({ required this.statusCode, - this.requestParams, + this.request, this.response, }); /// The HTTP status code. final int statusCode; - /// The associated request parameters. - final LoadRequestParams? requestParams; + /// The associated request. + final WebResourceRequest? request; /// The associated response. final WebResourceResponse? response; diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart new file mode 100644 index 00000000000..0977dd24bac --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart @@ -0,0 +1,47 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/foundation.dart'; + +/// Defines the parameters of the web resource request from the associated request. +/// +/// Platform specific implementations can add additional fields by extending +/// this class. +/// +/// {@tool sample} +/// This example demonstrates how to extend the [WebResourceRequest] to +/// provide additional platform specific parameters. +/// +/// When extending [WebResourceRequest] additional parameters should always +/// accept `null` or have a default value to prevent breaking changes. +/// +/// ```dart +/// class AndroidWebResourceRequest extends WebResourceRequest { +/// WebResourceRequest._({ +/// required WebResourceRequest request, +/// }) : super( +/// uri: request.uri, +/// ); +/// +/// factory AndroidWebResourceRequest.fromWebResourceRequest( +/// WebResourceRequest request, { +/// Map headers, +/// }) { +/// return AndroidWebResourceRequest._(request, headers: headers); +/// } +/// +/// final Map headers; +/// } +/// ``` +/// {@end-tool} +@immutable +class WebResourceRequest { + /// Used by the platform implementation to create a new [WebResourceRequest]. + const WebResourceRequest({ + required this.uri + }); + + /// URI for the request. + final Uri uri; +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart index 01dd778672f..b42ae39fca3 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart @@ -4,12 +4,13 @@ import 'package:flutter/foundation.dart'; -/// Contains information about the response for the request. +import 'web_resource_request.dart'; + +/// Contains information about the response for a request. /// /// Platform specific implementations can add additional fields by extending /// this class. /// -/// {@tool sample} /// This example demonstrates how to extend the [WebResourceResponse] to /// provide additional platform specific parameters. /// @@ -21,8 +22,8 @@ import 'package:flutter/foundation.dart'; /// WebResourceResponse._({ /// required WebResourceResponse response, /// }) : super( -/// uri: response.uri, -/// headers: params.headers, +/// request: response.request, +/// headers: response.headers, /// ); /// /// factory AndroidWebResourceResponse.fromWebResourceResponse( @@ -35,17 +36,16 @@ import 'package:flutter/foundation.dart'; /// final Uri? historyUrl; /// } /// ``` -/// {@end-tool} @immutable class WebResourceResponse { /// Used by the platform implementation to create a new [WebResourceResponse]. const WebResourceResponse({ - required this.uri, + required this.request, this.headers = const {}, }); - /// URI for the request. - final Uri uri; + /// The request + final WebResourceRequest request; /// Headers for the request. final Map headers; From 1cdaa00f80903c5cd6924b28828d1402721ebd04 Mon Sep 17 00:00:00 2001 From: Hugo Olthof Date: Sun, 16 Jul 2023 12:06:41 +0200 Subject: [PATCH 7/9] Fixes formatting --- .../lib/src/types/web_resource_request.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart index 0977dd24bac..d107d3f69b0 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart @@ -38,9 +38,7 @@ import 'package:flutter/foundation.dart'; @immutable class WebResourceRequest { /// Used by the platform implementation to create a new [WebResourceRequest]. - const WebResourceRequest({ - required this.uri - }); + const WebResourceRequest({required this.uri}); /// URI for the request. final Uri uri; From 66986c22c3793b24c214928fe6f283ca5125bc23 Mon Sep 17 00:00:00 2001 From: Hugo Olthof Date: Mon, 14 Aug 2023 17:12:51 +0200 Subject: [PATCH 8/9] Moves statusCode to HttpResponseError --- .../webview_flutter_platform_interface/CHANGELOG.md | 2 +- .../lib/src/types/http_response_error.dart | 4 ---- .../lib/src/types/web_resource_request.dart | 2 -- .../lib/src/types/web_resource_response.dart | 4 ++++ 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md index 965bae71d51..1f9edc0a754 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md @@ -1,6 +1,6 @@ ## 2.9.0 -* Adds `LoadRequestParams` and `WebResourceResponse` to `HttpResponseError`. +* Adds `WebResourceRequest` and `WebResourceResponse` to `HttpResponseError`. ## 2.8.0 diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart index d22adbbc24a..beca1f680df 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_response_error.dart @@ -40,14 +40,10 @@ import 'web_resource_response.dart'; class HttpResponseError { /// Used by the platform implementation to create a new [HttpResponseError]. const HttpResponseError({ - required this.statusCode, this.request, this.response, }); - /// The HTTP status code. - final int statusCode; - /// The associated request. final WebResourceRequest? request; diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart index d107d3f69b0..18ba83badbe 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_request.dart @@ -9,7 +9,6 @@ import 'package:flutter/foundation.dart'; /// Platform specific implementations can add additional fields by extending /// this class. /// -/// {@tool sample} /// This example demonstrates how to extend the [WebResourceRequest] to /// provide additional platform specific parameters. /// @@ -34,7 +33,6 @@ import 'package:flutter/foundation.dart'; /// final Map headers; /// } /// ``` -/// {@end-tool} @immutable class WebResourceRequest { /// Used by the platform implementation to create a new [WebResourceRequest]. diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart index b42ae39fca3..975aa247885 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart @@ -41,12 +41,16 @@ class WebResourceResponse { /// Used by the platform implementation to create a new [WebResourceResponse]. const WebResourceResponse({ required this.request, + required this.statusCode, this.headers = const {}, }); /// The request final WebResourceRequest request; + /// The HTTP status code. + final int statusCode; + /// Headers for the request. final Map headers; } From 7e861b7bf6564468e4ee5405003bbbccfcf07d20 Mon Sep 17 00:00:00 2001 From: Hugo Olthof Date: Wed, 13 Dec 2023 16:51:27 +0100 Subject: [PATCH 9/9] Changed request type in WebResourceResponse to String --- .../lib/src/types/web_resource_response.dart | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart index 975aa247885..6f8b5285e27 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_response.dart @@ -4,8 +4,6 @@ import 'package:flutter/foundation.dart'; -import 'web_resource_request.dart'; - /// Contains information about the response for a request. /// /// Platform specific implementations can add additional fields by extending @@ -22,7 +20,8 @@ import 'web_resource_request.dart'; /// WebResourceResponse._({ /// required WebResourceResponse response, /// }) : super( -/// request: response.request, +/// uri: response.uri, +/// statusCode: response.statusCode, /// headers: response.headers, /// ); /// @@ -40,13 +39,13 @@ import 'web_resource_request.dart'; class WebResourceResponse { /// Used by the platform implementation to create a new [WebResourceResponse]. const WebResourceResponse({ - required this.request, + required this.uri, required this.statusCode, this.headers = const {}, }); - /// The request - final WebResourceRequest request; + /// The URI that this response is associated with. + final String? uri; /// The HTTP status code. final int statusCode;