Revert "[FilesBulkPinning] Ensure metadata changes invalidate all cached rows"

This reverts commit 78295daafd953f5fcce0cf6dfcde8641868f02f8.

Reason for revert: This has caused a regression on performance when
dropping a large number of files into Files app. Seems it
excessively redraws the list view causing it to hang.

Original change's description:
> [FilesBulkPinning] Ensure metadata changes invalidate all cached rows
>
> When metadata is retrieved the cache gets properly invalidated, however,
> only the items that are visible in the viewport get updated by the
> MetadataUpdateController. For items outside the viewport, these are
> cached in the FileListModel and when a user scrolls back the rows
> back into view, they can contain stale information.
>
> Currently many features appear to be invalidating their own individual
> metadata items (e.g. available offline toggle does the pinned icon,
> onDirectoryChanged does the modified time etc.). With the introduction
> of inline sync status this meant the status gets cached and not updated
> if out of view for long enough.
>
> This fix invalidates the indices that have new metadata changes and
> relies on the fact that the MetadataCacheSet only relays information for
> items which actually get changed (instead of blindly updating everything
> item even if nothing changes).
>
> Fixed: b:283204213
> Change-Id: If9e211a12465064b316a42799d1f973ce51e2bf8
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4592153
> Reviewed-by: Luciano Pacheco <lucmult@chromium.org>
> Commit-Queue: Ben Reich <benreich@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1154767}

Change-Id: Ia5c9c43e136c4a9a452b821f87ce6e5378d1ff38
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4635437
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Ben Reich <benreich@chromium.org>
Commit-Queue: Ben Reich <benreich@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1161019}
11 files changed
tree: 5e4b5a270dd0aee5a42eaf6105a42698997659b3
  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_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. weblayer/
  51. .clang-format
  52. .clang-tidy
  53. .eslintrc.js
  54. .git-blame-ignore-revs
  55. .gitattributes
  56. .gitignore
  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. DEPS
  68. DIR_METADATA
  69. LICENSE
  70. LICENSE.chromium_os
  71. OWNERS
  72. PRESUBMIT.py
  73. PRESUBMIT_test.py
  74. PRESUBMIT_test_mocks.py
  75. README.md
  76. 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.