tree 20441d0620c82f5b21f17c803351b279eba6c22a
parent c6277b366df72606716bb2a09abcd5f70cdc0664
author Sam Rawlins <srawlins@google.com> 1793644032 -0800
committer GitHub <noreply@github.com> 1793644032 -0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJq6NYACRC1aQ7uu5UhlAAAzsEQAJ9kt7X0GweRm/bArN/1tswd
 wkxgTVA+x6QL7qf/qduM9i6yk4IDDbZyH6cmngrVJh+6PbOWR1Pf9Oadyr+IS6qp
 5vD+xgczmdwX4rg3DsSw3+KTK9vZ7E0bXAu5/6ZBjqGIUu79a0Sp+coUAfZpU0zy
 V49+ecrXDuhmVQCOAO0/q1HO3zCDKDLtskjh4PxX/C4u6Byuz6ZrV7ki9XmR+pR1
 jxvxbEDbQoUVeE58Dfkdkgiu0lTV84r8kYMXo292W/l42j9YjXA3SAfi/ui4sXm7
 73/p3OFnhiz7gWu1t8LUgdgg4ONDkrAd5BFbwkr6Gc9UDH4bDhNPGgl/8KWnp7ai
 WfC3UvfujfovAL8SZH2ziFLgeKs/KTGrisHB+b+KzwTrN55XetVU+D4GbU209Gzq
 UQPrzAVC3gfIEW3mMAmosblfAeIIpv0kbhxCfUtbGb8GKW9bJY/rXOxiOPEiUUOA
 IgHWEqQ9HZ1YBJ8bczYVfhQRpVL8dUZ/hB6FYV0FKywTq75yRD+yyi3UMQnZQf9O
 svsbBNgxpFvJCS5Ue18GwIm9sA6/ImRkl+AxA4cJAlMlQxQN8ADeRQuoe+oP1PBm
 ivJ/ZRJBMljYFe6kn8tRQf2uOqZhLXbfkz/btlbzUJEGFZEa5t25MFg3Y5NtD9f2
 TZPPyhhn6X6jMilOPYTS
 =7+y0
 -----END PGP SIGNATURE-----
 

Fix performance when JSON is invalid (#10005)

* Fixes https://github.com/flutter/devtools/issues/4172

1. **Fixed performance_model.dart:68-71**:
  * Updated isEmpty to verify that there is no trace binary, no frames, and no rebuild model.

2. **Guarded Perfetto trace loading in timeline_events_controller.dart:501-506**:
  * Avoided attempting to process track events or load a trace into Perfetto when perfettoTraceBinary is null or empty, allowing offline Flutter frames to display cleanly.
3. **Added validation in import_export.dart:72-106**:
  * Added null-safety check for activeScreenId with user-facing notification if missing from the snapshot.
  * Added a check verifying that the JSON contains data for activeScreenId (json.containsKey(activeScreenId) && json[activeScreenId] != null), preventing navigation to a broken snapshot screen and immediately notifying the user.
4. **Added error handling and notifications in offline_data.dart:173-200**:
  * Pushes a notification if the file data for that screen is empty (!shouldLoad(screenData)).
  * Wraps deserialization and loading in a try / catch block to log and display an error message if parsing fails.
5. Tests & Release Notes:
  * Added tests in import_export_test.dart for missing activeScreenId and missing screen data.
  * Added unit tests in performance_model_test.dart for OfflinePerformanceData.isEmpty.
  * Created offline_data_test.dart testing OfflineScreenControllerMixin loading, empty payload notifications, and error handling.
  * Documented the changes in NEXT_RELEASE_NOTES.md.

* feedback

* feedback