blob: 19c63416e90deebcd8aadf7d6660be26418ea9a0 [file] [log] [blame]
// Copyright 2021 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.
#ifndef WEBLAYER_TEST_SUBRESOURCE_FILTER_BROWSER_TEST_HARNESS_H_
#define WEBLAYER_TEST_SUBRESOURCE_FILTER_BROWSER_TEST_HARNESS_H_
#include <string>
#include <vector>
#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "components/subresource_filter/core/common/test_ruleset_creator.h"
#include "components/url_pattern_index/proto/rules.pb.h"
#include "weblayer/test/weblayer_browser_test.h"
namespace content {
class WebContents;
}
namespace subresource_filter {
class ContentSubresourceFilterThrottleManager;
}
namespace weblayer {
// A base class for //weblayer browsertests that directly test or rely on
// subresource filter functionality.
class SubresourceFilterBrowserTest : public WebLayerBrowserTest {
public:
SubresourceFilterBrowserTest();
~SubresourceFilterBrowserTest() override;
SubresourceFilterBrowserTest(const SubresourceFilterBrowserTest&) = delete;
SubresourceFilterBrowserTest& operator=(const SubresourceFilterBrowserTest&) =
delete;
void SetUpOnMainThread() override;
protected:
void SetRulesetToDisallowURLsWithPathSuffix(const std::string& suffix);
void SetRulesetWithRules(
const std::vector<url_pattern_index::proto::UrlRule>& rules);
content::WebContents* web_contents();
// Returns whether a script resource that sets document.scriptExecuted to true
// on load was loaded.
bool WasParsedScriptElementLoaded(content::RenderFrameHost* rfh);
// By default SubresourceFilterBrowsertest starts the embedded test server in
// SetUpOnMainThread(). Tests that wish to control the starting of the
// embedded test server themselves should override this method to return
// false.
virtual bool StartEmbeddedTestServerAutomatically();
// The ContentSubresourceFilterthrottleManager class is per-page, meaning
// each Page object will create its own instance. This method returns the
// throttle manager associated with the currently primary Page in the
// web_contents() (i.e. the one the user is currently seeing and interacting
// with, as opposed to a prerendering or BFCached page).
subresource_filter::ContentSubresourceFilterThrottleManager*
GetPrimaryPageThrottleManager();
private:
subresource_filter::testing::TestRulesetCreator test_ruleset_creator_;
base::test::ScopedFeatureList feature_list_;
};
} // namespace weblayer
#endif // WEBLAYER_TEST_SUBRESOURCE_FILTER_BROWSER_TEST_HARNESS_H_