Throttling: fix users stuck with invalid throttling settings

Following a CL last year (crrev.com/c/5582013) which landed in M127, we
did not correctly migrate users whose local settings may have become
invalid with that CL.

As a result of crrev.com/c/6317766, users with these old values end up
with a DevTools that crashes if they have emulation mode on, or if they
don't, an empty performance panel.

This CL implements two changes:

1. A migration to pull users with the old settings stored locally up to
   date with the new ones.
2. A fail-safe in the Network Condition serializer to ensure that if
   parsing goes wrong, we fallback to "No throttling". This is not
   ideal, but it is better than a broken DevTools.

As a future follow-up, we should update how we store these settings; in
particular the network conditions with `title` and `i18nPresetKey` is
confusing; we should have some stable, non-UI facing string/ID that we
use to look these up. Those IDs can then never change, and the user
strings can change safely without having to worry about persisted
settings.

R=szuend@chromium.org

Bug: 420384038
Change-Id: I805483d499da7eb762ab50378f9d008199823ba1
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6620929
Reviewed-by: Simon Zünd <szuend@chromium.org>
Auto-Submit: Jack Franklin <jacktfranklin@chromium.org>
Reviewed-by: Danil Somsikov <dsv@chromium.org>
Commit-Queue: Jack Franklin <jacktfranklin@chromium.org>
4 files changed
tree: 63f2cf5cfe42fcdc223c1c2089f800153b3bcdc6
  1. .vscode/
  2. build_overrides/
  3. config/
  4. docs/
  5. extension-api/
  6. extensions/
  7. front_end/
  8. inspector_overlay/
  9. node_modules/
  10. scripts/
  11. test/
  12. third_party/
  13. v8/
  14. .clang-format
  15. .clang-format-ignore
  16. .editorconfig
  17. .git-blame-ignore-revs
  18. .gitallowed
  19. .gitattributes
  20. .gitignore
  21. .gitmodules
  22. .gn
  23. .mailmap
  24. .npmignore
  25. .npmrc
  26. .style.yapf
  27. .stylelintignore
  28. .stylelintrc.json
  29. AUTHORS
  30. BUILD.gn
  31. codereview.settings
  32. CONTRIBUTING.md
  33. DEPS
  34. DIR_METADATA
  35. eslint.config.mjs
  36. favicon.ico
  37. LICENSE
  38. OWNERS
  39. package-lock.json
  40. package.json
  41. PRESUBMIT.py
  42. README.md
  43. WATCHLISTS
README.md

Chrome DevTools frontend

npm package

The client-side of the Chrome DevTools, including all TypeScript & CSS to run the DevTools webapp.

Source code and documentation

The frontend is available on chromium.googlesource.com. Check out the Chromium DevTools documentation for instructions to set up, use, and maintain a DevTools front-end checkout, as well as design guidelines, and architectural documentation.

Source mirrors

DevTools frontend repository is mirrored on GitHub.

DevTools frontend is also available on NPM as the chrome-devtools-frontend package. It's not currently available via CJS or ES modules, so consuming this package in other tools may require some effort.

The version number of the npm package (e.g. 1.0.373466) refers to the Chromium commit position of latest frontend git commit. It's incremented with every Chromium commit, however the package is updated roughly daily.

Getting in touch

There are a few options to keep an eye on the latest and greatest of DevTools development: