Conversation
|
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
|
@googlebot I signed it! |
|
Hope this gets merged, it would really help |
|
@tlueder @jasonroland @piotrsed any updates on this? |
|
Hi, I can rebase this. But without a clear path forward I don't see the point. Currently I just use this plugin from my repro via dependency override, works great. |
| }, | ||
| ), | ||
| ); | ||
| response = await ioRequest.close(); |
There was a problem hiding this comment.
It's been a while since I've last had a look at this.
But I need the response from the ioRequest for the code that follows and I guess that was the easiest way I could think of.
But if that is not a good idea or best practice I'm all in for improvements.
|
Please fix merge conflicts! |
|
@kevmoo done |
|
This looks like a breaking change, and we have been avoiding breaking API changes. This is only breaking for a subset of users, but I don't know what proportion. We are currently getting through a major version bump without too much difficulty, but that was a version bump without breaking API changes. cc @brianquinlan for thoughts on the practicality of a breaking API change and another version bump. |
|
This is a API change for sure but I would argue against a breaking one. This adds a new optional feature. And should not break anything for anyone not using it. Can you elaborate what you mean by "This is only breaking for a subset of users"? |
|
This is breaking for classes with overrides of the changed methods. |
|
Of course, I haven't even thought about that. |
interface class ProgressTracker {
void onSendProgress(int loaded, int total);
}
class ProgressTrackingRequest extends StreamedRequest implements ProgressTracker {
...
}And if (request is ProgressTracker) {
request.onSendProcess(...);
}That's a bit ugly.
|
|
PR HealthBreaking changes ✔️
Changelog Entry ✔️
Changes to files need to be accounted for in their respective changelogs.
Coverage
|
| File | Coverage |
|---|---|
| pkgs/http/lib/http.dart | 💚 100 % |
| pkgs/http/lib/retry.dart | 💚 92 % |
| pkgs/http/lib/src/base_client.dart | 💚 97 % |
| pkgs/http/lib/src/base_request.dart | 💚 88 % |
| pkgs/http/lib/src/browser_client.dart | 💔 Not covered |
| pkgs/http/lib/src/client.dart | 💚 100 % |
| pkgs/http/lib/src/io_client.dart | 💚 76 % |
| pkgs/http/lib/src/mock_client.dart | 💚 100 % |
| pkgs/http/lib/src/progress.dart | 💔 Not covered |
This check for test coverage is informational (issues shown here will not fail the PR).
This check can be disabled by tagging the PR with skip-coverage-check.
API leaks ✔️
The following packages contain symbols visible in the public API, but not exported by the library. Export these symbols or remove them from your publicly visible API.
| Package | Leaked API symbols |
|---|
License Headers ✔️
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
| Files |
|---|
| no missing headers |
All source files should start with a license header.
Unrelated files missing license headers
| Files |
|---|
| pkgs/cronet_http/lib/src/jni/jni_bindings.dart |
| pkgs/cupertino_http/lib/src/native_cupertino_bindings.dart |
| pkgs/http/example/main.dart |
| pkgs/http_client_conformance_tests/example/client_test.dart |
| pkgs/http_client_conformance_tests/lib/src/compressed_response_body_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/compressed_response_body_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/dummy_isolate.dart |
| pkgs/http_client_conformance_tests/lib/src/multipart_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/multipart_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/multiple_clients_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/multiple_clients_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/redirect_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/redirect_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/request_body_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/request_body_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/request_body_streamed_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/request_body_streamed_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/request_cookies_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/request_cookies_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/request_headers_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/request_headers_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/request_methods_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/request_methods_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/response_body_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/response_body_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/response_body_streamed_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/response_body_streamed_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/response_cookies_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/response_cookies_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/response_headers_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/response_headers_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/response_status_line_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/response_status_line_server_web.dart |
| pkgs/http_client_conformance_tests/lib/src/server_errors_server_vm.dart |
| pkgs/http_client_conformance_tests/lib/src/server_errors_server_web.dart |
| pkgs/http_profile/lib/http_profile.dart |
| pkgs/java_http/lib/src/third_party/java/io/BufferedInputStream.dart |
| pkgs/java_http/lib/src/third_party/java/io/InputStream.dart |
| pkgs/java_http/lib/src/third_party/java/io/OutputStream.dart |
| pkgs/java_http/lib/src/third_party/java/io/_package.dart |
| pkgs/java_http/lib/src/third_party/java/lang/System.dart |
| pkgs/java_http/lib/src/third_party/java/lang/_package.dart |
| pkgs/java_http/lib/src/third_party/java/net/HttpURLConnection.dart |
| pkgs/java_http/lib/src/third_party/java/net/URL.dart |
| pkgs/java_http/lib/src/third_party/java/net/URLConnection.dart |
| pkgs/java_http/lib/src/third_party/java/net/_package.dart |
| pkgs/ok_http/lib/src/jni/bindings.dart |
| pkgs/web_socket/example/web_socket_example.dart |
| pkgs/web_socket/lib/testing.dart |
| pkgs/web_socket_conformance_tests/example/client_test.dart |
| pkgs/web_socket_conformance_tests/lib/src/close_local_server_vm.dart |
| pkgs/web_socket_conformance_tests/lib/src/close_local_server_web.dart |
| pkgs/web_socket_conformance_tests/lib/src/close_remote_server_vm.dart |
| pkgs/web_socket_conformance_tests/lib/src/close_remote_server_web.dart |
| pkgs/web_socket_conformance_tests/lib/src/continuously_writing_server_vm.dart |
| pkgs/web_socket_conformance_tests/lib/src/continuously_writing_server_web.dart |
| pkgs/web_socket_conformance_tests/lib/src/disconnect_after_upgrade_server_vm.dart |
| pkgs/web_socket_conformance_tests/lib/src/disconnect_after_upgrade_server_web.dart |
| pkgs/web_socket_conformance_tests/lib/src/echo_server_vm.dart |
| pkgs/web_socket_conformance_tests/lib/src/echo_server_web.dart |
| pkgs/web_socket_conformance_tests/lib/src/no_upgrade_server_vm.dart |
| pkgs/web_socket_conformance_tests/lib/src/no_upgrade_server_web.dart |
| pkgs/web_socket_conformance_tests/lib/src/peer_protocol_errors_server_vm.dart |
| pkgs/web_socket_conformance_tests/lib/src/peer_protocol_errors_server_web.dart |
| pkgs/web_socket_conformance_tests/lib/src/protocol_server_vm.dart |
| pkgs/web_socket_conformance_tests/lib/src/protocol_server_web.dart |
Package publish validation ✔️
| Package | Version | Status |
|---|---|---|
| package:cronet_http | 1.3.2 | already published at pub.dev |
| package:cupertino_http | 1.5.1 | already published at pub.dev |
| package:http | 1.2.3-wip | WIP (no publish necessary) |
| package:http_profile | 0.1.1-wip | WIP (no publish necessary) |
| package:ok_http | 0.1.1-wip | WIP (no publish necessary) |
| package:web_socket | 0.1.6 | already published at pub.dev |
Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.
|
Hey @kevmoo What is your expectation here in terms of review? |
An alternative would be to add those as fields to a new class When we decide to release |
|
Hi @brianquinlan, sorry for the noice here. I needed my branch updated and forgot that it is linked to this MR. I don't know what I can or should do to advance this MR. |
|
I think that we have to coordinate landing this (or something like this) with an semver major release and I don't have the bandwidth to work on that right now. |
|
What's your proposed workaround to observe the upload progress in Flutter applications at this time? |
This fixes the upload part of #465
I had also tried to include the download progress, but that did not work as expected.
And it is why easier to do this while consuming the response stream.