Commit a8ba3523 authored by Becca Hughes's avatar Becca Hughes Committed by Commit Bot

[Media Feeds] Add Clear-Site-Data tests

Add tests for clear-site-data which should
reset the media feed.

BUG=1053599

Change-Id: If539e178aad9c04c3891930420f9f7b8cbbe7a79
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2225231Reviewed-by: default avatarTommy Steimel <steimel@chromium.org>
Commit-Queue: Becca Hughes <beccahughes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#774168}
parent 8193991b
...@@ -46,6 +46,8 @@ const char kMediaFeedsAltTestURL[] = "/alt"; ...@@ -46,6 +46,8 @@ const char kMediaFeedsAltTestURL[] = "/alt";
const char kMediaFeedsMinTestURL[] = "/min"; const char kMediaFeedsMinTestURL[] = "/min";
const char kMediaFeedsCacheClearTestURL[] = "/cache-clear";
const char kMediaFeedsWellKnownURL[] = "/.well-known/media-feeds"; const char kMediaFeedsWellKnownURL[] = "/.well-known/media-feeds";
const char kMediaFeedsWellKnownResponse[] = R"END({ const char kMediaFeedsWellKnownResponse[] = R"END({
...@@ -231,6 +233,10 @@ class MediaFeedsBrowserTest : public InProcessBrowserTest { ...@@ -231,6 +233,10 @@ class MediaFeedsBrowserTest : public InProcessBrowserTest {
return url::Origin::Create(associated_origin_server_.GetURL("/")); return url::Origin::Create(associated_origin_server_.GetURL("/"));
} }
void SetClearSiteDataHeader(const std::string& value) {
clear_site_data_header_ = value;
}
bool HandledWellKnownRequest() const { return handled_well_known_; } bool HandledWellKnownRequest() const { return handled_well_known_; }
private: private:
...@@ -248,6 +254,10 @@ class MediaFeedsBrowserTest : public InProcessBrowserTest { ...@@ -248,6 +254,10 @@ class MediaFeedsBrowserTest : public InProcessBrowserTest {
return response; return response;
} else if (request.relative_url == kMediaFeedsAltTestURL) { } else if (request.relative_url == kMediaFeedsAltTestURL) {
return std::make_unique<net::test_server::BasicHttpResponse>(); return std::make_unique<net::test_server::BasicHttpResponse>();
} else if (request.relative_url == kMediaFeedsCacheClearTestURL) {
auto response = std::make_unique<net::test_server::BasicHttpResponse>();
response->AddCustomHeader("Clear-Site-Data", clear_site_data_header_);
return response;
} else if (base::EndsWith(request.relative_url, "json", } else if (base::EndsWith(request.relative_url, "json",
base::CompareCase::SENSITIVE)) { base::CompareCase::SENSITIVE)) {
if (full_test_data_.empty()) if (full_test_data_.empty())
...@@ -296,6 +306,8 @@ class MediaFeedsBrowserTest : public InProcessBrowserTest { ...@@ -296,6 +306,8 @@ class MediaFeedsBrowserTest : public InProcessBrowserTest {
base::test::ScopedFeatureList scoped_feature_list_; base::test::ScopedFeatureList scoped_feature_list_;
std::string full_test_data_; std::string full_test_data_;
std::string clear_site_data_header_;
}; };
IN_PROC_BROWSER_TEST_F(MediaFeedsBrowserTest, DiscoverAndFetch) { IN_PROC_BROWSER_TEST_F(MediaFeedsBrowserTest, DiscoverAndFetch) {
...@@ -985,6 +997,70 @@ IN_PROC_BROWSER_TEST_F(MediaFeedsBrowserTest, ...@@ -985,6 +997,70 @@ IN_PROC_BROWSER_TEST_F(MediaFeedsBrowserTest,
} }
} }
IN_PROC_BROWSER_TEST_F(MediaFeedsBrowserTest,
ResetMediaFeed_ClearSiteDataHeader_Cache) {
DiscoverFeed(kMediaFeedsTestURL);
{
auto feeds = GetDiscoveredFeeds();
ASSERT_EQ(1u, feeds.size());
EXPECT_EQ(media_feeds::mojom::ResetReason::kNone, feeds[0]->reset_reason);
// Fetch the feed.
base::RunLoop run_loop;
GetMediaFeedsService()->FetchMediaFeed(
feeds[0]->id,
base::BindLambdaForTesting(
[&](const std::string& ignored) { run_loop.Quit(); }));
run_loop.Run();
WaitForDB();
}
// If we set the clear site data header to cache then we should reset the
// feed.
SetClearSiteDataHeader("\"cache\"");
ui_test_utils::NavigateToURL(
browser(), GetServer()->GetURL(kMediaFeedsCacheClearTestURL));
WaitForDB();
{
auto feeds = GetDiscoveredFeeds();
ASSERT_EQ(1u, feeds.size());
EXPECT_EQ(media_feeds::mojom::ResetReason::kCache, feeds[0]->reset_reason);
}
}
IN_PROC_BROWSER_TEST_F(MediaFeedsBrowserTest,
ResetMediaFeed_ClearSiteDataHeader_ExecutionContexts) {
DiscoverFeed(kMediaFeedsTestURL);
{
auto feeds = GetDiscoveredFeeds();
ASSERT_EQ(1u, feeds.size());
EXPECT_EQ(media_feeds::mojom::ResetReason::kNone, feeds[0]->reset_reason);
// Fetch the feed.
base::RunLoop run_loop;
GetMediaFeedsService()->FetchMediaFeed(
feeds[0]->id,
base::BindLambdaForTesting(
[&](const std::string& ignored) { run_loop.Quit(); }));
run_loop.Run();
WaitForDB();
}
SetClearSiteDataHeader("\"executionContexts\"");
ui_test_utils::NavigateToURL(
browser(), GetServer()->GetURL(kMediaFeedsCacheClearTestURL));
WaitForDB();
{
auto feeds = GetDiscoveredFeeds();
ASSERT_EQ(1u, feeds.size());
EXPECT_EQ(media_feeds::mojom::ResetReason::kNone, feeds[0]->reset_reason);
}
}
// Parameterized test to check that media feed discovery works with different // Parameterized test to check that media feed discovery works with different
// header HTMLs. // header HTMLs.
class MediaFeedsDiscoveryBrowserTest class MediaFeedsDiscoveryBrowserTest
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment