#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include <stddef.h>
#include <algorithm>
#include <memory>
#include <optional>
#include <set>
#include <string>
#include <utility>
#include <vector>
#include "base/containers/contains.h"
#include "base/containers/to_value_list.h"
#include "base/files/file_util.h"
#include "base/files/scoped_temp_dir.h"
#include "base/functional/bind.h"
#include "base/json/json_string_value_serializer.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/path_service.h"
#include "base/rand_util.h"
#include "base/ranges/algorithm.h"
#include "base/run_loop.h"
#include "base/sequence_checker.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/lock.h"
#include "base/task/single_thread_task_runner.h"
#include "base/test/bind.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/simple_test_clock.h"
#include "base/test/test_timeouts.h"
#include "base/test/values_test_util.h"
#include "base/thread_annotations.h"
#include "base/threading/thread_restrictions.h"
#include "base/time/time.h"
#include "base/values.h"
#include "build/build_config.h"
#include "chrome/browser/extensions/api/extension_action/test_extension_action_api_observer.h"
#include "chrome/browser/extensions/extension_action_runner.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/extensions/load_error_reporter.h"
#include "chrome/browser/extensions/permissions/active_tab_permission_granter.h"
#include "chrome/browser/extensions/permissions/scripting_permissions_modifier.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/net/profile_network_context_service.h"
#include "chrome/browser/net/profile_network_context_service_factory.h"
#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/webui_url_constants.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/prefs/pref_service.h"
#include "components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.h"
#include "components/privacy_sandbox/privacy_sandbox_attestations/scoped_privacy_sandbox_attestations.h"
#include "components/privacy_sandbox/privacy_sandbox_settings.h"
#include "components/proxy_config/proxy_config_dictionary.h"
#include "components/proxy_config/proxy_config_pref_names.h"
#include "components/version_info/channel.h"
#include "components/web_package/web_bundle_builder.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/webui_config_map.h"
#include "content/public/common/content_features.h"
#include "content/public/common/url_constants.h"
#include "content/public/test/back_forward_cache_util.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/simple_url_loader_test_helper.h"
#include "content/public/test/test_navigation_observer.h"
#include "content/public/test/test_utils.h"
#include "content/public/test/web_transport_simple_test_server.h"
#include "extensions/browser/api/declarative_net_request/action_tracker.h"
#include "extensions/browser/api/declarative_net_request/composite_matcher.h"
#include "extensions/browser/api/declarative_net_request/constants.h"
#include "extensions/browser/api/declarative_net_request/declarative_net_request_api.h"
#include "extensions/browser/api/declarative_net_request/file_backed_ruleset_source.h"
#include "extensions/browser/api/declarative_net_request/prefs_helper.h"
#include "extensions/browser/api/declarative_net_request/rules_monitor_service.h"
#include "extensions/browser/api/declarative_net_request/ruleset_manager.h"
#include "extensions/browser/api/declarative_net_request/ruleset_matcher.h"
#include "extensions/browser/api/declarative_net_request/test_utils.h"
#include "extensions/browser/api/declarative_net_request/utils.h"
#include "extensions/browser/api/web_request/web_request_api.h"
#include "extensions/browser/api/web_request/web_request_info.h"
#include "extensions/browser/blocked_action_type.h"
#include "extensions/browser/extension_action.h"
#include "extensions/browser/extension_action_manager.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/extension_util.h"
#include "extensions/browser/test_extension_registry_observer.h"
#include "extensions/browser/warning_service.h"
#include "extensions/browser/warning_set.h"
#include "extensions/common/api/declarative_net_request/constants.h"
#include "extensions/common/api/declarative_net_request/test_utils.h"
#include "extensions/common/api/extension_action/action_info.h"
#include "extensions/common/constants.h"
#include "extensions/common/error_utils.h"
#include "extensions/common/extension_features.h"
#include "extensions/common/extension_id.h"
#include "extensions/common/features/feature_channel.h"
#include "extensions/common/file_util.h"
#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/switches.h"
#include "extensions/common/url_pattern.h"
#include "extensions/common/url_pattern_set.h"
#include "extensions/test/extension_test_message_listener.h"
#include "ipc/ipc_message.h"
#include "net/base/net_errors.h"
#include "net/dns/mock_host_resolver.h"
#include "net/http/http_request_headers.h"
#include "net/http/http_status_code.h"
#include "net/test/embedded_test_server/controllable_http_response.h"
#include "net/test/embedded_test_server/default_handlers.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/http_response.h"
#include "net/test/spawned_test_server/spawned_test_server.h"
#include "net/test/test_data_directory.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/cpp/simple_url_loader.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "third_party/blink/public/common/features.h"
#include "ui/webui/untrusted_web_ui_browsertest_util.h"
namespace extensions {
namespace declarative_net_request {
namespace {
dnr_api;
ElementsAreArray;
UnorderedElementsAre;
UnorderedElementsAreArray;
constexpr char kDefaultRulesetID[] = …;
bool WasFrameWithScriptLoaded(content::RenderFrameHost* render_frame_host) { … }
class RulesetLoadObserver : public RulesMonitorService::TestObserver { … };
class DeclarativeNetRequestBrowserTest
: public ExtensionBrowserTest,
public ::testing::WithParamInterface<
::testing::tuple<ExtensionLoadType, bool>> { … };
DeclarativeNetRequestBrowserTest_Packed;
DeclarativeNetRequestBrowserTest_Unpacked;
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
DISABLED_BlockRequests_UrlFilter) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_Separator) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_SeparatorMatchesEndOfURL) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_IsUrlFilterCaseSensitive) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_Domains) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_RequestDomains) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_DomainType) { … }
IN_PROC_BROWSER_TEST_P(
DeclarativeNetRequestBrowserTest,
BlockRequests_WebMainFrameNavigationsFromChromeUntrusted) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
CanNotBlockSubframeNavigationsFromChromeUntrusted) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, AllowBlock) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, AllowRedirect) { … }
#if BUILDFLAG(IS_WIN)
#define MAYBE_Enable_Disable_Reload_Uninstall …
#else
#define MAYBE_Enable_Disable_Reload_Uninstall …
#endif
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
MAYBE_Enable_Disable_Reload_Uninstall) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_MultipleExtensions) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
RedirectRequests_MultipleExtensions) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, BlockAndRedirect) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, RedirectPriority) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, UpgradeRules) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_Incognito) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, HostAccessPermission) { … }
#if BUILDFLAG(IS_MAC) && !defined(NDEBUG)
#define MAYBE_ChromeURLS …
#else
#define MAYBE_ChromeURLS …
#endif
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, MAYBE_ChromeURLS) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Packed,
PRE_BrowserRestart) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Packed,
BrowserRestart) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, ZeroRulesets) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
ErrorPageForBlockedMainFrameNavigation) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, MultipleRulesets) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, RendererCacheCleared) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
PacRequestsBypassRules) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
InterceptExtensionScheme) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, ImageCollapsed) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, IFrameCollapsed) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Packed,
CorruptedIndexedRuleset) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
WarningOnFailedRulesetLoad) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Packed,
ReindexOnRulesetVersionMismatch) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
RulesetPrefsDeletedOnUninstall) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
DISABLED_WithheldPermissions_Redirect) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
WithheldPermissions_Block) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, DynamicRules) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, Redirect) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
ActionsMatchedCountAsBadgeText) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, WebRequestEvents) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, WebRequestPriority) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, TabIdFiltering) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
GetBadgeTextForActionsMatched) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
ActionCountPreferenceMultipleWindows) { … }
#if BUILDFLAG(IS_MAC)
#define MAYBE_ActionsMatchedCountAsBadgeTextIncognito …
#else
#define MAYBE_ActionsMatchedCountAsBadgeTextIncognito …
#endif
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
MAYBE_ActionsMatchedCountAsBadgeTextIncognito) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
DISABLED_ActionsMatchedCountAsBadgeTextMainFrame) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
ModifyHeadersBadgeText) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
ActionsMatchedCountAsBadgeTextTabUpdate) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
OnRuleMatchedDebugAvailability) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Unpacked,
OnRuleMatchedDebugMultipleRules) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
GetMatchedRulesMultipleTabs) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
GetMatchedRulesMainFrame) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
GetMatchedRulesTimestampFiltering) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
GetMatchedRulesActiveTab) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
GetMatchedRulesNoThrottlingIfUserGesture) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Packed,
ExtensionRemovesOneRulesetOnUpdate) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Packed,
ExtensionRemovesAllRulesetsOnUpdate) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Packed,
PackedUpdateAfterUpdateStaticRules) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Packed,
RemoveStalePrefsOnDelayedUpdate) { … }
class DeclarativeNetRequestAllowAllRequestsBrowserTest
: public DeclarativeNetRequestBrowserTest { … };
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestAllowAllRequestsBrowserTest,
DISABLED_Test1) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestAllowAllRequestsBrowserTest,
Test2) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestAllowAllRequestsBrowserTest,
Test3) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestAllowAllRequestsBrowserTest,
DISABLED_Test4) { … }
#if BUILDFLAG(IS_MAC)
#define MAYBE_TestPostNavigationMatched …
#else
#define MAYBE_TestPostNavigationMatched …
#endif
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestAllowAllRequestsBrowserTest,
MAYBE_TestPostNavigationMatched) { … }
#if BUILDFLAG(IS_MAC)
#define MAYBE_TestPostNavigationNotMatched …
#else
#define MAYBE_TestPostNavigationNotMatched …
#endif
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestAllowAllRequestsBrowserTest,
MAYBE_TestPostNavigationNotMatched) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest_Packed,
UpdateRespectsPermission) { … }
class DeclarativeNetRequestHostPermissionsBrowserTest
: public DeclarativeNetRequestBrowserTest { … };
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestHostPermissionsBrowserTest,
AllURLs1) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestHostPermissionsBrowserTest,
NoPermissions) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestHostPermissionsBrowserTest,
SubframesRequireNoInitiatorPermissions) { … }
class DeclarativeNetRequestResourceTypeBrowserTest
: public DeclarativeNetRequestBrowserTest { … };
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestResourceTypeBrowserTest, Test1) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestResourceTypeBrowserTest, Test2) { … }
class DeclarativeNetRequestSubresourceWebBundlesBrowserTest
: public DeclarativeNetRequestBrowserTest { … };
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestSubresourceWebBundlesBrowserTest,
WebBundleRequestCanceled) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestSubresourceWebBundlesBrowserTest,
RequestCanceled) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestSubresourceWebBundlesBrowserTest,
RequestCanceledUuidInPackageUrl) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestSubresourceWebBundlesBrowserTest,
RequestRedirected) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestSubresourceWebBundlesBrowserTest,
WebBundleRequestRedirected) { … }
class DeclarativeNetRequestGlobalRulesBrowserTest
: public DeclarativeNetRequestBrowserTest { … };
DeclarativeNetRequestGlobalRulesBrowserTest_Packed;
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestGlobalRulesBrowserTest_Packed,
PRE_GlobalRulesBrowserRestart) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestGlobalRulesBrowserTest_Packed,
GlobalRulesBrowserRestart) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestGlobalRulesBrowserTest_Packed,
PackedUpdateAndReload) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestGlobalRulesBrowserTest_Packed,
UpdateEnabledRulesetsAfterPackedUpdate) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestGlobalRulesBrowserTest_Packed,
DISABLED_GetAvailableStaticRuleCountAfterPackedUpdate) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_Methods) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
BlockRequests_WebSocket) { … }
class DeclarativeNetRequestWebTransportTest
: public DeclarativeNetRequestBrowserTest { … };
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestWebTransportTest, BlockRequests) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, FledgeAuctionScripts) { … }
class DeclarativeNetRequestBackForwardCacheBrowserTest
: public DeclarativeNetRequestBrowserTest { … };
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBackForwardCacheBrowserTest,
BackForwardCacheClearedOnAddingDynamicRules) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBackForwardCacheBrowserTest,
BackForwardCacheClearedOnUpdatingSessionRules) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBackForwardCacheBrowserTest,
BackForwardCacheClearedOnUpdatingEnabledRulesets) { … }
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBackForwardCacheBrowserTest,
BackForwardCacheClearedOnAddExtension) { … }
class DeclarativeNetRequestControllableResponseTest
: public DeclarativeNetRequestBrowserTest { … };
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestControllableResponseTest,
EraseActionsOnExtensionDisabled) { … }
class DNRMatchResponseHeadersBrowserTest
: public DeclarativeNetRequestBrowserTest { … };
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest, BlockRequests) { … }
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest, ImageCollapsed) { … }
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest, RedirectAndUpgrade) { … }
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest,
DifferentRequestPhaseRuleInteractions) { … }
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest, AllowAllRequests) { … }
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest,
AllowAllRequests_BlockedFrame) { … }
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest,
GetMatchedRules_SingleExtension) { … }
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest,
GetMatchedRules_MultipleExtensions) { … }
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest,
ModifyHeaders_SingleExtension) { … }
IN_PROC_BROWSER_TEST_P(DNRMatchResponseHeadersBrowserTest,
ModifyHeaders_MultipleExtensions) { … }
DeclarativeNetRequestAllowChromeURLsBrowserTest;
IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestAllowChromeURLsBrowserTest,
CrossExtensionRequestBlocking) { … }
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
INSTANTIATE_TEST_SUITE_P(…);
}
}
}