blob: b8948812fdb1009a35b0958b506d55ad7ee1d73d [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/json/json_reader.h"
#include "components/subresource_filter/content/browser/ruleset_service.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/resource/resource_bundle.h"
#include "weblayer/browser/browser_process.h"
#include "weblayer/grit/weblayer_resources.h"
#include "weblayer/test/weblayer_browser_test.h"
namespace weblayer {
class SubresourceFilterBrowserTest : public WebLayerBrowserTest {
public:
SubresourceFilterBrowserTest() = default;
~SubresourceFilterBrowserTest() override = default;
SubresourceFilterBrowserTest(const SubresourceFilterBrowserTest&) = delete;
SubresourceFilterBrowserTest& operator=(const SubresourceFilterBrowserTest&) =
delete;
};
// Tests that the ruleset service is available.
IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, RulesetService) {
EXPECT_NE(BrowserProcess::GetInstance()->subresource_filter_ruleset_service(),
nullptr);
}
// Tests that the ruleset is published as part of startup.
IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, RulesArePublished) {
auto* ruleset_service =
BrowserProcess::GetInstance()->subresource_filter_ruleset_service();
// Publishing might or might not have already finished at this point; wait for
// it to finish if necessary.
if (!ruleset_service->GetMostRecentlyIndexedVersion().IsValid()) {
base::RunLoop run_loop;
ruleset_service->SetRulesetPublishedCallbackForTesting(
run_loop.QuitClosure());
run_loop.Run();
}
auto ruleset_version = ruleset_service->GetMostRecentlyIndexedVersion();
EXPECT_TRUE(ruleset_version.IsValid());
std::string most_recently_indexed_content_version =
ruleset_version.content_version;
std::string packaged_ruleset_manifest_string =
ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(
IDR_SUBRESOURCE_FILTER_UNINDEXED_RULESET_MANIFEST_JSON);
auto packaged_ruleset_manifest =
base::JSONReader::Read(packaged_ruleset_manifest_string);
std::string* packaged_content_version =
packaged_ruleset_manifest->FindStringKey("version");
EXPECT_EQ(most_recently_indexed_content_version, *packaged_content_version);
}
} // namespace weblayer