[MaliciousApkDownloadCheck] Implement dangerous download notification

This CL adds to the download progress notification to add a new state
representing a Dangerous verdict from MaliciousApkDownloadCheck (Safe
Browsing).

The notification uses the same icon and copy as the other bits of
MaliciousApkDownloadCheck UI. The dangerous notification offers a
"Delete from history" button which removes the dangerous download, and a
default action (activated by clicking the body of the notification)
which opens the Download Home list, where the dangerous download should
already be displayed.

The notification lasts 5 minutes and disappears thereafter, or can be
dismissed by the user directly interacting with it.

The notification is also hooked up to existing observer mechanisms, so
when the underlying download gets validated by the user (by bypassing
the download warning), the dangerous notification automatically goes
away. Thereafter, a normal notification for the post-validation
in-progress state should appear.

Screenshots/screencasts:
https://drive.google.com/drive/folders/14N1N3hXIOROy4aQd9eN-m30ly1_tVi_V

Bug: 397407934
Change-Id: Ia85b304f14ff4da69d0186b8d444383afdc4cf8b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6624610
Auto-Submit: Lily Chen <chlily@chromium.org>
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Reviewed-by: Min Qin <qinmin@chromium.org>
Reviewed-by: Michael Thiessen <mthiesse@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1473548}
18 files changed
tree: 3493b24efa79d460d61bd55b149271d041e957db
  1. .github/
  2. android_webview/
  3. apps/
  4. ash/
  5. base/
  6. build/
  7. build_overrides/
  8. buildtools/
  9. cc/
  10. chrome/
  11. chromecast/
  12. chromeos/
  13. codelabs/
  14. components/
  15. content/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. gpu/
  25. headless/
  26. infra/
  27. ios/
  28. ipc/
  29. media/
  30. mojo/
  31. native_client_sdk/
  32. net/
  33. pdf/
  34. ppapi/
  35. printing/
  36. remoting/
  37. rlz/
  38. sandbox/
  39. services/
  40. skia/
  41. sql/
  42. storage/
  43. styleguide/
  44. testing/
  45. third_party/
  46. tools/
  47. ui/
  48. url/
  49. webkit/
  50. .clang-format
  51. .clang-tidy
  52. .clangd
  53. .git-blame-ignore-revs
  54. .gitallowed
  55. .gitattributes
  56. .gitignore
  57. .gitmodules
  58. .gn
  59. .mailmap
  60. .rustfmt.toml
  61. .vpython3
  62. .yapfignore
  63. ATL_OWNERS
  64. AUTHORS
  65. BUILD.gn
  66. CODE_OF_CONDUCT.md
  67. codereview.settings
  68. CPPLINT.cfg
  69. CRYPTO_OWNERS
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. SECURITY_OWNERS
  80. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure.

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.