Commit ca09adbd authored by Doug Arnett's avatar Doug Arnett Committed by Commit Bot

Adds basic intervention-internals support for DeferAllScript

Adds DeferAllScript enabled status display and flags link to
intervention-internals page.

Bug: 965277
Change-Id: I2fc616b3db3e1e12e60972bf8beccaf7ef2625be
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1696360
Commit-Queue: Doug Arnett <dougarnett@chromium.org>
Reviewed-by: default avatarTarun Bansal <tbansal@chromium.org>
Cr-Commit-Position: refs/heads/master@{#676541}
parent 266da78a
...@@ -32,6 +32,7 @@ const char kLitePageRedirectHtmlId[] = "lite-page-redirect-status"; ...@@ -32,6 +32,7 @@ const char kLitePageRedirectHtmlId[] = "lite-page-redirect-status";
const char kNoScriptPreviewsHtmlId[] = "noscript-preview-status"; const char kNoScriptPreviewsHtmlId[] = "noscript-preview-status";
const char kResourceLoadingHintsHtmlId[] = "resource-loading-hints-status"; const char kResourceLoadingHintsHtmlId[] = "resource-loading-hints-status";
const char kOfflinePreviewsHtmlId[] = "offline-preview-status"; const char kOfflinePreviewsHtmlId[] = "offline-preview-status";
const char kDeferAllScriptPreviewsHtmlId[] = "defer-all-script-preview-status";
// Descriptions for previews. // Descriptions for previews.
const char kPreviewsAllowedDescription[] = "Previews Allowed"; const char kPreviewsAllowedDescription[] = "Previews Allowed";
...@@ -39,6 +40,7 @@ const char kLitePageRedirectDescription[] = ...@@ -39,6 +40,7 @@ const char kLitePageRedirectDescription[] =
"Lite Page Redirect / Server Previews"; "Lite Page Redirect / Server Previews";
const char kNoScriptDescription[] = "NoScript Previews"; const char kNoScriptDescription[] = "NoScript Previews";
const char kResourceLoadingHintsDescription[] = "ResourceLoadingHints Previews"; const char kResourceLoadingHintsDescription[] = "ResourceLoadingHints Previews";
const char kDeferAllScriptPreviewsDescription[] = "DeferAllScript Previews";
const char kOfflineDesciption[] = "Offline Previews"; const char kOfflineDesciption[] = "Offline Previews";
// Flag feature name. // Flag feature name.
...@@ -46,6 +48,7 @@ const char kPreviewsAllowedFeatureName[] = "Previews"; ...@@ -46,6 +48,7 @@ const char kPreviewsAllowedFeatureName[] = "Previews";
const char kLitePageRedirectFeatureName[] = "LitePageServerPreviews"; const char kLitePageRedirectFeatureName[] = "LitePageServerPreviews";
const char kNoScriptFeatureName[] = "NoScriptPreviews"; const char kNoScriptFeatureName[] = "NoScriptPreviews";
const char kResourceLoadingHintsFeatureName[] = "ResourceLoadingHints"; const char kResourceLoadingHintsFeatureName[] = "ResourceLoadingHints";
const char kDeferAllScriptFeatureName[] = "DeferAllScript";
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
const char kOfflinePageFeatureName[] = "OfflinePreviews"; const char kOfflinePageFeatureName[] = "OfflinePreviews";
#endif // OS_ANDROID #endif // OS_ANDROID
...@@ -56,6 +59,7 @@ const char kPreviewsAllowedFlagHtmlId[] = "previews-flag"; ...@@ -56,6 +59,7 @@ const char kPreviewsAllowedFlagHtmlId[] = "previews-flag";
const char kOfflinePageFlagHtmlId[] = "offline-page-flag"; const char kOfflinePageFlagHtmlId[] = "offline-page-flag";
const char kLitePageRedirectFlagHtmlId[] = "lite-page-redirect-flag"; const char kLitePageRedirectFlagHtmlId[] = "lite-page-redirect-flag";
const char kResourceLoadingHintsFlagHtmlId[] = "resource-loading-hints-flag"; const char kResourceLoadingHintsFlagHtmlId[] = "resource-loading-hints-flag";
const char kDeferAllScriptFlagHtmlId[] = "defer-all-script-flag";
const char kNoScriptFlagHtmlId[] = "noscript-flag"; const char kNoScriptFlagHtmlId[] = "noscript-flag";
const char kEctFlagHtmlId[] = "ect-flag"; const char kEctFlagHtmlId[] = "ect-flag";
const char kIgnorePreviewsBlacklistFlagHtmlId[] = "ignore-previews-blacklist"; const char kIgnorePreviewsBlacklistFlagHtmlId[] = "ignore-previews-blacklist";
...@@ -70,6 +74,8 @@ const char kLitePageRedirectFlagLink[] = ...@@ -70,6 +74,8 @@ const char kLitePageRedirectFlagLink[] =
"chrome://flags/#enable-lite-page-server-previews"; "chrome://flags/#enable-lite-page-server-previews";
const char kResourceLoadingHintsFlagLink[] = const char kResourceLoadingHintsFlagLink[] =
"chrome://flags/#enable-resource-loading-hints"; "chrome://flags/#enable-resource-loading-hints";
const char kDeferAllScriptFlagLink[] =
"chrome://flags/#enable-defer-all-script";
const char kNoScriptFlagLink[] = "chrome://flags/#enable-noscript-previews"; const char kNoScriptFlagLink[] = "chrome://flags/#enable-noscript-previews";
const char kEctFlagLink[] = "chrome://flags/#force-effective-connection-type"; const char kEctFlagLink[] = "chrome://flags/#force-effective-connection-type";
const char kIgnorePreviewsBlacklistLink[] = const char kIgnorePreviewsBlacklistLink[] =
...@@ -241,6 +247,14 @@ void InterventionsInternalsPageHandler::GetPreviewsEnabled( ...@@ -241,6 +247,14 @@ void InterventionsInternalsPageHandler::GetPreviewsEnabled(
resource_loading_hints_status->htmlId = kResourceLoadingHintsHtmlId; resource_loading_hints_status->htmlId = kResourceLoadingHintsHtmlId;
statuses.push_back(std::move(resource_loading_hints_status)); statuses.push_back(std::move(resource_loading_hints_status));
auto defer_all_script_preview_status = mojom::PreviewsStatus::New();
defer_all_script_preview_status->description =
kDeferAllScriptPreviewsDescription;
defer_all_script_preview_status->enabled =
previews::params::IsDeferAllScriptPreviewsEnabled();
defer_all_script_preview_status->htmlId = kDeferAllScriptPreviewsHtmlId;
statuses.push_back(std::move(defer_all_script_preview_status));
auto noscript_status = mojom::PreviewsStatus::New(); auto noscript_status = mojom::PreviewsStatus::New();
noscript_status->description = kNoScriptDescription; noscript_status->description = kNoScriptDescription;
noscript_status->enabled = previews::params::IsNoScriptPreviewsEnabled(); noscript_status->enabled = previews::params::IsNoScriptPreviewsEnabled();
...@@ -294,6 +308,15 @@ void InterventionsInternalsPageHandler::GetPreviewsFlagsDetails( ...@@ -294,6 +308,15 @@ void InterventionsInternalsPageHandler::GetPreviewsFlagsDetails(
resource_loading_hints_status->htmlId = kResourceLoadingHintsFlagHtmlId; resource_loading_hints_status->htmlId = kResourceLoadingHintsFlagHtmlId;
flags.push_back(std::move(resource_loading_hints_status)); flags.push_back(std::move(resource_loading_hints_status));
auto defer_all_script_status = mojom::PreviewsFlag::New();
defer_all_script_status->description =
flag_descriptions::kEnableDeferAllScriptName;
defer_all_script_status->link = kDeferAllScriptFlagLink;
defer_all_script_status->value =
GetFeatureFlagStatus(kDeferAllScriptFeatureName);
defer_all_script_status->htmlId = kDeferAllScriptFlagHtmlId;
flags.push_back(std::move(defer_all_script_status));
auto noscript_status = mojom::PreviewsFlag::New(); auto noscript_status = mojom::PreviewsFlag::New();
noscript_status->description = flag_descriptions::kEnableNoScriptPreviewsName; noscript_status->description = flag_descriptions::kEnableNoScriptPreviewsName;
noscript_status->link = kNoScriptFlagLink; noscript_status->link = kNoScriptFlagLink;
......
...@@ -54,6 +54,8 @@ constexpr char kPreviewsAllowedHtmlId[] = "previews-allowed-status"; ...@@ -54,6 +54,8 @@ constexpr char kPreviewsAllowedHtmlId[] = "previews-allowed-status";
constexpr char kOfflinePreviewsHtmlId[] = "offline-preview-status"; constexpr char kOfflinePreviewsHtmlId[] = "offline-preview-status";
constexpr char kLitePageRedirectHtmlId[] = "lite-page-redirect-status"; constexpr char kLitePageRedirectHtmlId[] = "lite-page-redirect-status";
constexpr char kResourceLoadingHintsHtmlId[] = "resource-loading-hints-status"; constexpr char kResourceLoadingHintsHtmlId[] = "resource-loading-hints-status";
constexpr char kDeferAllScriptPreviewsHtmlId[] =
"defer-all-script-preview-status";
constexpr char kNoScriptPreviewsHtmlId[] = "noscript-preview-status"; constexpr char kNoScriptPreviewsHtmlId[] = "noscript-preview-status";
// Descriptions for previews. // Descriptions for previews.
...@@ -63,6 +65,7 @@ constexpr char kLitePageRedirectDescription[] = ...@@ -63,6 +65,7 @@ constexpr char kLitePageRedirectDescription[] =
"Lite Page Redirect / Server Previews"; "Lite Page Redirect / Server Previews";
constexpr char kResourceLoadingHintsDescription[] = constexpr char kResourceLoadingHintsDescription[] =
"ResourceLoadingHints Previews"; "ResourceLoadingHints Previews";
constexpr char kDeferAllScriptPreviewsDescription[] = "DeferAllScript Previews";
constexpr char kNoScriptDescription[] = "NoScript Previews"; constexpr char kNoScriptDescription[] = "NoScript Previews";
// The HTML DOM ID used in Javascript. // The HTML DOM ID used in Javascript.
...@@ -70,6 +73,7 @@ constexpr char kOfflinePageFlagHtmlId[] = "offline-page-flag"; ...@@ -70,6 +73,7 @@ constexpr char kOfflinePageFlagHtmlId[] = "offline-page-flag";
constexpr char kLitePageRedirectFlagHtmlId[] = "lite-page-redirect-flag"; constexpr char kLitePageRedirectFlagHtmlId[] = "lite-page-redirect-flag";
constexpr char kResourceLoadingHintsFlagHtmlId[] = constexpr char kResourceLoadingHintsFlagHtmlId[] =
"resource-loading-hints-flag"; "resource-loading-hints-flag";
constexpr char kDeferAllScriptFlagHtmlId[] = "defer-all-script-flag";
constexpr char kNoScriptFlagHtmlId[] = "noscript-flag"; constexpr char kNoScriptFlagHtmlId[] = "noscript-flag";
constexpr char kEctFlagHtmlId[] = "ect-flag"; constexpr char kEctFlagHtmlId[] = "ect-flag";
constexpr char kIgnorePreviewsBlacklistFlagHtmlId[] = constexpr char kIgnorePreviewsBlacklistFlagHtmlId[] =
...@@ -84,6 +88,8 @@ constexpr char kLitePageRedirectFlagLink[] = ...@@ -84,6 +88,8 @@ constexpr char kLitePageRedirectFlagLink[] =
"chrome://flags/#enable-lite-page-server-previews"; "chrome://flags/#enable-lite-page-server-previews";
constexpr char kResourceLoadingHintsFlagLink[] = constexpr char kResourceLoadingHintsFlagLink[] =
"chrome://flags/#enable-resource-loading-hints"; "chrome://flags/#enable-resource-loading-hints";
constexpr char kDeferAllScriptFlagLink[] =
"chrome://flags/#enable-defer-all-script";
constexpr char kNoScriptFlagLink[] = "chrome://flags/#enable-noscript-previews"; constexpr char kNoScriptFlagLink[] = "chrome://flags/#enable-noscript-previews";
constexpr char kEctFlagLink[] = constexpr char kEctFlagLink[] =
"chrome://flags/#force-effective-connection-type"; "chrome://flags/#force-effective-connection-type";
...@@ -96,6 +102,7 @@ constexpr char kDataSaverAltConfigLink[] = ...@@ -96,6 +102,7 @@ constexpr char kDataSaverAltConfigLink[] =
constexpr char kOfflinePageFeatureName[] = "OfflinePreviews"; constexpr char kOfflinePageFeatureName[] = "OfflinePreviews";
constexpr char kLitePageRedirectFeatureName[] = "LitePageServerPreviews"; constexpr char kLitePageRedirectFeatureName[] = "LitePageServerPreviews";
constexpr char kResourceLoadingHintsFeatureName[] = "ResourceLoadingHints"; constexpr char kResourceLoadingHintsFeatureName[] = "ResourceLoadingHints";
constexpr char kDeferAllScriptFeatureName[] = "DeferAllScriptPreviews";
constexpr char kNoScriptFeatureName[] = "NoScriptPreviews"; constexpr char kNoScriptFeatureName[] = "NoScriptPreviews";
constexpr char kDefaultFlagValue[] = "Default"; constexpr char kDefaultFlagValue[] = "Default";
...@@ -325,7 +332,7 @@ TEST_F(InterventionsInternalsPageHandlerTest, GetPreviewsEnabledCount) { ...@@ -325,7 +332,7 @@ TEST_F(InterventionsInternalsPageHandlerTest, GetPreviewsEnabledCount) {
page_handler_->GetPreviewsEnabled( page_handler_->GetPreviewsEnabled(
base::BindOnce(&MockGetPreviewsEnabledCallback)); base::BindOnce(&MockGetPreviewsEnabledCallback));
constexpr size_t expected = 5; constexpr size_t expected = 6;
EXPECT_EQ(expected, passed_in_modes.size()); EXPECT_EQ(expected, passed_in_modes.size());
} }
...@@ -464,11 +471,39 @@ TEST_F(InterventionsInternalsPageHandlerTest, LitePageRedirectEnabled) { ...@@ -464,11 +471,39 @@ TEST_F(InterventionsInternalsPageHandlerTest, LitePageRedirectEnabled) {
EXPECT_TRUE(resource_loading_hints->second->enabled); EXPECT_TRUE(resource_loading_hints->second->enabled);
} }
TEST_F(InterventionsInternalsPageHandlerTest, DeferAllScriptPreviewsDisabled) {
// Init with kDeferAllScriptPreviews disabled.
scoped_feature_list_->InitWithFeatures(
{}, {previews::features::kDeferAllScriptPreviews});
page_handler_->GetPreviewsEnabled(
base::BindOnce(&MockGetPreviewsEnabledCallback));
auto defer_all_script = passed_in_modes.find(kDeferAllScriptPreviewsHtmlId);
ASSERT_NE(passed_in_modes.end(), defer_all_script);
EXPECT_EQ(kDeferAllScriptPreviewsDescription,
defer_all_script->second->description);
EXPECT_FALSE(defer_all_script->second->enabled);
}
TEST_F(InterventionsInternalsPageHandlerTest, DeferAllScriptPreviewsEnabled) {
// Init with kDeferAllScriptPreviews enabled.
scoped_feature_list_->InitWithFeatures(
{previews::features::kDeferAllScriptPreviews}, {});
page_handler_->GetPreviewsEnabled(
base::BindOnce(&MockGetPreviewsEnabledCallback));
auto defer_all_script = passed_in_modes.find(kDeferAllScriptPreviewsHtmlId);
ASSERT_NE(passed_in_modes.end(), defer_all_script);
EXPECT_EQ(kDeferAllScriptPreviewsDescription,
defer_all_script->second->description);
EXPECT_TRUE(defer_all_script->second->enabled);
}
TEST_F(InterventionsInternalsPageHandlerTest, GetFlagsCount) { TEST_F(InterventionsInternalsPageHandlerTest, GetFlagsCount) {
page_handler_->GetPreviewsFlagsDetails( page_handler_->GetPreviewsFlagsDetails(
base::BindOnce(&MockGetPreviewsFlagsCallback)); base::BindOnce(&MockGetPreviewsFlagsCallback));
constexpr size_t expected = 8; constexpr size_t expected = 9;
EXPECT_EQ(expected, passed_in_flags.size()); EXPECT_EQ(expected, passed_in_flags.size());
} }
...@@ -662,6 +697,53 @@ TEST_F(InterventionsInternalsPageHandlerTest, ...@@ -662,6 +697,53 @@ TEST_F(InterventionsInternalsPageHandlerTest,
resource_loading_hints_flag->second->link); resource_loading_hints_flag->second->link);
} }
TEST_F(InterventionsInternalsPageHandlerTest,
GetFlagsDeferAllScriptDefaultValue) {
page_handler_->GetPreviewsFlagsDetails(
base::BindOnce(&MockGetPreviewsFlagsCallback));
auto defer_all_script_flag = passed_in_flags.find(kDeferAllScriptFlagHtmlId);
ASSERT_NE(passed_in_flags.end(), defer_all_script_flag);
EXPECT_EQ(flag_descriptions::kEnableDeferAllScriptName,
defer_all_script_flag->second->description);
EXPECT_EQ(kDefaultFlagValue, defer_all_script_flag->second->value);
EXPECT_EQ(kDeferAllScriptFlagLink, defer_all_script_flag->second->link);
}
TEST_F(InterventionsInternalsPageHandlerTest, GetFlagsDeferAllScriptEnabled) {
base::test::ScopedCommandLine scoped_command_line;
base::CommandLine* command_line = scoped_command_line.GetProcessCommandLine();
command_line->AppendSwitchASCII(switches::kEnableFeatures,
kDeferAllScriptFeatureName);
page_handler_->GetPreviewsFlagsDetails(
base::BindOnce(&MockGetPreviewsFlagsCallback));
auto defer_all_script_flag = passed_in_flags.find(kDeferAllScriptFlagHtmlId);
ASSERT_NE(passed_in_flags.end(), defer_all_script_flag);
EXPECT_EQ(flag_descriptions::kEnableDeferAllScriptName,
defer_all_script_flag->second->description);
EXPECT_EQ(kEnabledFlagValue, defer_all_script_flag->second->value);
EXPECT_EQ(kDeferAllScriptFlagLink, defer_all_script_flag->second->link);
}
TEST_F(InterventionsInternalsPageHandlerTest, GetFlagsDeferAllScriptDisabled) {
base::test::ScopedCommandLine scoped_command_line;
base::CommandLine* command_line = scoped_command_line.GetProcessCommandLine();
command_line->AppendSwitchASCII(switches::kDisableFeatures,
kDeferAllScriptFeatureName);
page_handler_->GetPreviewsFlagsDetails(
base::BindOnce(&MockGetPreviewsFlagsCallback));
auto defer_all_script_flag = passed_in_flags.find(kDeferAllScriptFlagHtmlId);
ASSERT_NE(passed_in_flags.end(), defer_all_script_flag);
EXPECT_EQ(flag_descriptions::kEnableDeferAllScriptName,
defer_all_script_flag->second->description);
EXPECT_EQ(kDisabledFlagValue, defer_all_script_flag->second->value);
EXPECT_EQ(kDeferAllScriptFlagLink, defer_all_script_flag->second->link);
}
TEST_F(InterventionsInternalsPageHandlerTest, TEST_F(InterventionsInternalsPageHandlerTest,
GetFlagsLitePageRedirectDefaultValue) { GetFlagsLitePageRedirectDefaultValue) {
page_handler_->GetPreviewsFlagsDetails( page_handler_->GetPreviewsFlagsDetails(
......
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