[M103][DownloadBubble] Limit number of downloads shown on the bubble

Limit the downloads shown on the bubble to a maximum of 100. This
will prevent OOM crashes happening.

The value of 100 is chosen after looking at the
Download.Bubble.FullViewSize and Download.Bubble.PartialViewSize
metrics. For the canary/dev channels, 95 and 99 percentiles for the
partial view size are ~6 and 58, and for the main view are 50 and
100 (max). Even in the unlikely case, the user is able to go to
chrome://downloads for the full list of all downloads.

(cherry picked from commit dd0e146c07c8276057bcef1eceaf9e6a5bbbadb4)

Bug: 1282247
Bug: 1315554
Bug: 1320415
Change-Id: I76680cc7c9cb0d7bd542c0f2a616123ffefaaab2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3646559
Commit-Queue: Min Qin <qinmin@chromium.org>
Reviewed-by: Min Qin <qinmin@chromium.org>
Auto-Submit: Rohit Bhatia <bhatiarohit@google.com>
Cr-Original-Commit-Position: refs/heads/main@{#1003158}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3703146
Reviewed-by: Xinghui Lu <xinghuilu@chromium.org>
Commit-Queue: Rohit Bhatia <bhatiarohit@google.com>
Cr-Commit-Position: refs/branch-heads/5060@{#804}
Cr-Branched-From: b83393d0f4038aeaf67f970a024d8101df7348d1-refs/heads/main@{#1002911}
1 file changed
tree: ac1425132ef4a62eb9357d3a83acda8d44551f90
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia/
  22. fuchsia_webengine/
  23. gin/
  24. google_apis/
  25. google_update/
  26. gpu/
  27. headless/
  28. infra/
  29. ios/
  30. ipc/
  31. media/
  32. mojo/
  33. native_client_sdk/
  34. net/
  35. pdf/
  36. ppapi/
  37. printing/
  38. remoting/
  39. rlz/
  40. sandbox/
  41. services/
  42. skia/
  43. sql/
  44. storage/
  45. styleguide/
  46. testing/
  47. third_party/
  48. tools/
  49. ui/
  50. url/
  51. weblayer/
  52. .clang-format
  53. .clang-tidy
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitattributes
  57. .gitignore
  58. .gn
  59. .mailmap
  60. .rustfmt.toml
  61. .vpython
  62. .vpython3
  63. .yapfignore
  64. AUTHORS
  65. BUILD.gn
  66. CODE_OF_CONDUCT.md
  67. codereview.settings
  68. DEPS
  69. DIR_METADATA
  70. ENG_REVIEW_OWNERS
  71. LICENSE
  72. LICENSE.chromium_os
  73. OWNERS
  74. PRESUBMIT.py
  75. PRESUBMIT_test.py
  76. PRESUBMIT_test_mocks.py
  77. README.md
  78. 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.