net/disk_cache/sql: Ensure in-memory index is loaded before eviction.

This change modifies SqlPersistentStore::StartEviction to always ensure
that the in-memory index is loaded before proceeding with the eviction
process. This is achieved by calling MaybeLoadInMemoryIndex and
continuing the eviction logic in a callback.

This ensures that the eviction process can reliably use information
from the in-memory index to make better eviction decisions in the next
cl.

Key changes:
- Added eviction_in_progress_ to SqlPersistentStore to track the
  eviction state across asynchronous index loading.
- StartEviction now calls MaybeLoadInMemoryIndex and defers its logic
  to StartEvictionInternal.
- GetEvictionUrgency now checks eviction_in_progress_ to prevent
  multiple concurrent eviction triggers.
- Updated unit tests to handle the fact that StartEviction now
  returns index loading errors immediately if the store is in a
  failed or closed state.
- Refactored StartAndPauseEviction in tests to use RunLoop for
  clearer signaling.

Bug: 478753978
Change-Id: I20e8868a918d6bd7cb7f70d6800f5fe4bdaddec0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7591636
Commit-Queue: Tsuyoshi Horo <[email protected]>
Reviewed-by: Maks Orlovich <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1587470}
NOKEYCHECK=True
GitOrigin-RevId: 857d6b21a52023b8033cb87ccb50b79ef7bddae8
3 files changed