Skip to content

[cronet_http] Upgrade jni and jnigen to 0.14.2 #1793

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jul 18, 2025
Merged

Conversation

HosseinYousefi
Copy link
Member

@HosseinYousefi HosseinYousefi commented Jul 18, 2025

  • When migrating to the new declarative plugin style the repositories were accidentally removed from example/android/build.gradle, adding those back for jnigen to work again.
  • Upgraded jni and jnigen to 0.14.2 and regenerated the bindings.
  • Fixed the code that now is generated in a null-safe way.

@brianquinlan you may want to take a closer look at my changes here because I only added !s where it was previously assumed that the resulting JObject is non-null.

Another change I had to make was to make all of the method parameter types of UrlRequestCallbackProxy nullable.

As I wrote in the comments:

// Due to a bug (https://github.com/dart-lang/native/issues/2421) where JNIgen
// does not synchronize the nullabilities across the class hierarchy and the
// fact that UrlRequest.Callback is a Java class with no nullability
// annotations, generating both `UrlRequestCallbackProxy` and
// `UrlRequest.Callback` together with different nullabilities causes the
// super method to have a looser type for parameters which is a Dart compilation
// error. 
// That is why all of the parameters of this class are defined as nullable to
// match `UrlRequest.Callback` while in reality only `onFailed`'s `info`
// parameter is nullable as specified in the cronet source code:
// https://source.chromium.org/chromium/chromium/src/+/main:components/cronet/android/api/src/org/chromium/net/UrlRequest.java;l=232

Copy link

Package publishing

Package Version Status Publish tag (post-merge)
package:cronet_http 1.4.0-wip WIP (no publish necessary)
package:cupertino_http 2.3.0-wip WIP (no publish necessary)
package:http 1.5.0-beta.2 already published at pub.dev
package:http2 3.0.0 ready to publish http2-v3.0.0
package:http_multi_server 3.2.2 already published at pub.dev
package:http_parser 4.1.2 already published at pub.dev
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 1.0.1 already published at pub.dev
package:web_socket_channel 3.0.3 already published at pub.dev

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

Copy link

github-actions bot commented Jul 18, 2025

PR Health

Breaking changes ⚠️
Package Change Current Version New Version Needed Version Looking good?
cronet_http Breaking 1.3.4 1.4.0-wip 2.0.0
Got "1.4.0-wip" expected >= "2.0.0" (breaking changes)
⚠️

This check can be disabled by tagging the PR with skip-breaking-check.

Changelog Entry ✔️
Package Changed Files

Changes to files need to be accounted for in their respective changelogs.

Coverage ⚠️
File Coverage
pkgs/cronet_http/lib/src/cronet_client.dart 💔 Not covered
pkgs/cronet_http/lib/src/jni/jni_bindings.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) 2025, 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/http/example/main.dart

Copy link
Collaborator

@brianquinlan brianquinlan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks so much for doing this!

@brianquinlan brianquinlan merged commit 8c49ef5 into master Jul 18, 2025
38 checks passed
@brianquinlan brianquinlan deleted the upgrade-jnigen branch July 18, 2025 15:42
copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request Jul 22, 2025
Revisions updated by `dart tools/rev_sdk_deps.dart`.

ai (https://github.com/dart-lang/ai/compare/61ba1ea..40607dc):
  40607dc  2025-07-21  Jacob MacDonald  rename ElicitationHandler.reject to ElicitationHandler.decline (dart-lang/ai#240)
  ec6efa4  2025-07-21  Kostia Sokolovskyi  Fix ping request handling from non-dart clients. (dart-lang/ai#239)
  00889b4  2025-07-17  Jacob MacDonald  release dart_mcp version 0.3.2 (dart-lang/ai#237)
  5e93ef4  2025-07-17  Jacob MacDonald  Deprecate EnumSchema and JsonType.enumeration (dart-lang/ai#236)
  66af21b  2025-07-17  Jacob MacDonald  fix the firstMatchOnly and matchRoot schemas to be booleans (dart-lang/ai#235)
  141fbe1  2025-07-17  Jacob MacDonald  release dart_mcp 0.3.1 (dart-lang/ai#234)
  ce519e8  2025-07-17  Jacob MacDonald  Add flutter driver tool (dart-lang/ai#223)
  3bf650e  2025-07-16  Jacob MacDonald  add completions support to the prompts example (dart-lang/ai#233)
  aed93b4  2025-07-16  Jacob MacDonald  Deprecate the WithElicitationhandler interface (dart-lang/ai#231)
  01cf3d4  2025-07-16  Jacob MacDonald  Require dart_mcp version 0.3.1 (dart-lang/ai#232)
  5c28640  2025-07-16  Jacob MacDonald  add a sampling example (dart-lang/ai#230)
  df0c4f1  2025-07-16  Jacob MacDonald  add elicitation example, fix some issues with the elicitation APIs (dart-lang/ai#229)

http (https://github.com/dart-lang/http/compare/2d9681d..4a90d16):
  4a90d16  2025-07-21  Alex Li  [cronet_http] Update Cronet dependencies version (dart-lang/http#1796)
  5c06c6c  2025-07-18  Brian Quinlan  Prepare to release cronet 1.4.0 (dart-lang/http#1794)
  8c49ef5  2025-07-18  Hossein Yousefi  [cronet_http] Upgrade jni and jnigen to 0.14.2 (dart-lang/http#1793)
  ca07b4c  2025-07-17  Brian Quinlan  Add request cancellation to cupertino_http (dart-lang/http#1779)
  984cc43  2025-07-15  Brian Quinlan  Fix a bug where ConnectionException.toString didn't stringify NSError (dart-lang/http#1785)

protobuf (https://github.com/dart-lang/protobuf/compare/04bd6ac..4916e6f):
  4916e6f  2025-07-21  Ömer Sinan Ağacan  CI: Test PRs and commits to all branches, instead of just master (google/protobuf.dart#1029)
  a9822d8  2025-07-16  Devon Carew  prep for publishing protobuf 4.1.1, protoc_plugin 22.5.0 (google/protobuf.dart#1025)
  38f1549  2025-07-15  Devon Carew  update the generator to emit formatted files (google/protobuf.dart#1020)

test (https://github.com/dart-lang/test/compare/2be5ca0..c201cc9):
  c201cc98  2025-07-21  Nate Bosch  Expand Analyzer constraints to allow 8.x (dart-lang/test#2518)

tools (https://github.com/dart-lang/tools/compare/a4335eb..2a2a2d6):
  2a2a2d61  2025-07-17  Nikechukwu  [code_builder] Set `external` and `static` in correct order (dart-lang/tools#2120)

web (https://github.com/dart-lang/web/compare/7e0853d..767151e):
  767151e  2025-07-21  Nikechukwu  [web_generator] Bug Fixes in Entrypoint `gen_interop_bindings.dart` (dart-lang/web#423)
  1f80532  2025-07-21  Nikechukwu  [interop] Support `typeof` type declarations (dart-lang/web#417)
  affce52  2025-07-17  Kevin Moore  generator: drop build bits. Not used. (dart-lang/web#419)
  0a16c09  2025-07-17  Nikechukwu  [interop] Support Classes and Interfaces (dart-lang/web#415)

Change-Id: I9fbe6d7c15d63b19e45829628e7c5dfb3e87ca6c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/441820
Auto-Submit: Devon Carew <[email protected]>
Reviewed-by: Konstantin Shcheglov <[email protected]>
Commit-Queue: Konstantin Shcheglov <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[cronet_http] update to jni 0.14.0 JNI dependency should be updated, Starting November 1st, 2025 all apps must support 16 KB page sizes
2 participants