[GdpIntegration] Allow re-triggering a badge on re-activation

This behavior is needed for the profile creation flow via the starter badge.

It works as follows:
* User sees the starter badge with the option to "Create profile"
* User creates a profile using this flow
* After the profile creation, we want to show the starter badge again.

However, since the starter badge is already triggered, it won't
be re-triggered here.

It's safe to remove this constraint because, on reinitialization,
`UserBadges` already checks for whether the user received a given
badge or not.

For activity badges:
* If a badge is shown to user, it means it's already awarded.
So, when this badge is re-initialized, `UserBadges` sees it through
the `getAwardedBadgeNames` call.

For the starter badge, its trigger is based on 3 conditions:
1. User has a GDP profile, the setting is on: then the starter badge is awarded.
2. User has a GDP profile, the setting is off: then the starter badge
is shown as a nudge for the "Receive badges" setting.
3. User doesn't have a GDP profile: then the starter badge
is shown as a nudge to create a profile.

* For the 1st case, the mechanism works as if this is an activity badge.
* For the 2nd case, the reinitialization occurs when the user
sets the setting as `on`. After re-initialization, we still
want to continue triggering the starter badge (so that the
user can take it as an award).
* For the 3rd case, the reinitialization occurs when the user
creates a GDP profile. After re-initialization, we want to
trigger the starter badge so that they would get notified
about succesful account creation. (The case I'm fixing in this CL)

Bug: 443998148
Change-Id: I0b3f58b8ba3dfcdc9df22a86d6969c92522c9bf2
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6931554
Reviewed-by: Simon Zünd <[email protected]>
Commit-Queue: Ergün Erdoğmuş <[email protected]>
2 files changed
tree: bc6cd878ce47db2766bfee7c2da82c012d287b37
  1. .gemini/
  2. .github/
  3. .vscode/
  4. build_overrides/
  5. config/
  6. docs/
  7. extension-api/
  8. extensions/
  9. front_end/
  10. inspector_overlay/
  11. node_modules/
  12. scripts/
  13. test/
  14. third_party/
  15. v8/
  16. .clang-format
  17. .clang-format-ignore
  18. .editorconfig
  19. .geminiignore
  20. .git-blame-ignore-revs
  21. .gitallowed
  22. .gitattributes
  23. .gitignore
  24. .gitmodules
  25. .gn
  26. .mailmap
  27. .npmignore
  28. .npmrc
  29. .style.yapf
  30. .stylelintignore
  31. .stylelintrc.json
  32. AUTHORS
  33. BUILD.gn
  34. codereview.settings
  35. CONTRIBUTING.md
  36. DEPS
  37. DIR_METADATA
  38. eslint.config.mjs
  39. favicon.ico
  40. LICENSE
  41. OWNERS
  42. package-lock.json
  43. package.json
  44. PRESUBMIT.py
  45. README.md
  46. 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: