1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/glic/media/glic_media_page_cache.h"
#include "base/test/mock_callback.h"
#include "base/test/scoped_feature_list.h"
#include "chrome/browser/accessibility/live_caption/live_caption_controller_factory.h"
#include "chrome/browser/prefs/browser_prefs.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "components/live_caption/live_caption_controller.h"
#include "components/live_caption/pref_names.h"
#include "components/optimization_guide/content/browser/page_content_proto_provider.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/testing_pref_service.h"
#include "components/sync_preferences/testing_pref_service_syncable.h"
#include "content/public/browser/web_contents.h"
#include "media/base/media_switches.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace glic {
class GlicMediaPageCacheTest : public testing::Test {};
TEST_F(GlicMediaPageCacheTest, AddsInOrder) {
GlicMediaPageCache cache;
GlicMediaPageCache::Entry entry1;
GlicMediaPageCache::Entry entry2;
// First item goes at the front(!).
cache.PlaceAtFront(&entry1);
EXPECT_EQ(cache.front(), &entry1);
// Second item should push it back.
cache.PlaceAtFront(&entry2);
EXPECT_EQ(cache.front(), &entry2);
EXPECT_EQ(cache.front()->next(), &entry1);
// Re-adding the first item should work, and move it to the front again.
cache.PlaceAtFront(&entry1);
EXPECT_EQ(cache.front(), &entry1);
EXPECT_EQ(cache.front()->next(), &entry2);
}
TEST_F(GlicMediaPageCacheTest, CacheClearsOnDestruction) {
std::unique_ptr<GlicMediaPageCache> cache =
std::make_unique<GlicMediaPageCache>();
GlicMediaPageCache::Entry entry;
EXPECT_EQ(entry.cache(), nullptr);
cache->PlaceAtFront(&entry);
EXPECT_NE(entry.next(), nullptr);
EXPECT_EQ(entry.cache(), cache.get());
// Reset the cache and make sure that `entry` was removed.
cache.reset();
EXPECT_EQ(entry.next(), nullptr);
EXPECT_EQ(entry.cache(), nullptr);
}
TEST_F(GlicMediaPageCacheTest, EntriesAutoRemoveOnDestruction) {
GlicMediaPageCache cache;
std::unique_ptr<GlicMediaPageCache::Entry> entry =
std::make_unique<GlicMediaPageCache::Entry>();
cache.PlaceAtFront(entry.get());
EXPECT_FALSE(cache.cache_for_testing().empty());
entry.reset();
EXPECT_TRUE(cache.cache_for_testing().empty());
}
} // namespace glic
|