compute pressure: Calculate ownContributionEstimate

`ownContributionEstimate` provides the information on how much the
rendering process is contributing to the current compute pressure.
It is only an estimate.

This path is the first patch of a two patches patchset.

This patch implements the implementation specific part of spec
changes[1]. It includes the changes in //services and //content

OwnContributionEstimate is calculated in //content/browser, because
it is a logical place where we can have the concept of process.
To calculate the own contribution estimate, the global cpu_utilization,
from service::mojom::PressureUpdate is used as well as the cumulative
CPU usage for the process under scrutiny.
The cumulative CPU usage is available by using Process::ProcessMetrics
class.

The ownContributionEstimate value exposition to //Blink or the WebAPI,
as well as the CDP and testdriver changes are addressed in the second
patch.

[1] https://w3c.github.io/compute-pressure/?experimental=1#the-owncontributionestimate-attribute

Bug: 402033762
Change-Id: I63af1835e011297669859f68b78300f69e46857d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6309002
Reviewed-by: Mike West <mkwst@chromium.org>
Commit-Queue: Arnaud Mandy <arnaud.mandy@intel.com>
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1458748}
32 files changed
tree: 0f42cb50d4256eef4b4885441264f155449d16cc
  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. crypto/
  16. dbus/
  17. device/
  18. docs/
  19. extensions/
  20. fuchsia_web/
  21. gin/
  22. google_apis/
  23. gpu/
  24. headless/
  25. infra/
  26. ios/
  27. ipc/
  28. media/
  29. mojo/
  30. native_client_sdk/
  31. net/
  32. pdf/
  33. ppapi/
  34. printing/
  35. remoting/
  36. rlz/
  37. sandbox/
  38. services/
  39. skia/
  40. sql/
  41. storage/
  42. styleguide/
  43. testing/
  44. third_party/
  45. tools/
  46. ui/
  47. url/
  48. webkit/
  49. .clang-format
  50. .clang-tidy
  51. .clangd
  52. .git-blame-ignore-revs
  53. .gitallowed
  54. .gitattributes
  55. .gitignore
  56. .gitmodules
  57. .gn
  58. .mailmap
  59. .rustfmt.toml
  60. .vpython3
  61. .yapfignore
  62. ATL_OWNERS
  63. AUTHORS
  64. BUILD.gn
  65. CODE_OF_CONDUCT.md
  66. codereview.settings
  67. CPPLINT.cfg
  68. CRYPTO_OWNERS
  69. DEPS
  70. DIR_METADATA
  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.