Commit bac05e51 authored by Farah Charab's avatar Farah Charab Committed by Commit Bot

Scheduler: Extend resource fetch priority experiment to loading only.

Extend resource fetch priority experiment to support being enabled
only in the loading use case.

Bug: 870349
Change-Id: I980f078f3a48bc7ab240e475869125d6dc9ffa55
Reviewed-on: https://chromium-review.googlesource.com/1159064Reviewed-by: default avatarSteven Holte <holte@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Commit-Queue: Farah Charab <farahcharab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580629}
parent d6a13562
...@@ -26,12 +26,11 @@ ...@@ -26,12 +26,11 @@
"mac", "mac",
"chromeos", "chromeos",
"linux", "linux",
"ios",
"android" "android"
], ],
"experiments": [ "experiments": [
{ {
"name": "LowPriorityAdFrameEnabled", "name": "LowPriorityForAdFrame",
"enable_features": [ "enable_features": [
"BlinkSchedulerLowPriorityForAdFrame" "BlinkSchedulerLowPriorityForAdFrame"
] ]
...@@ -1662,7 +1661,7 @@ ...@@ -1662,7 +1661,7 @@
{ {
"name": "LowPriorityForHiddenFrameDuringLoadingEnabled", "name": "LowPriorityForHiddenFrameDuringLoadingEnabled",
"enable_features": [ "enable_features": [
"BlinkSchedulerExperimentOnlyWhenLoading", "BlinkSchedulerFrameExperimentOnlyWhenLoading",
"BlinkSchedulerLowPriorityForHiddenFrame" "BlinkSchedulerLowPriorityForHiddenFrame"
] ]
} }
......
...@@ -87,6 +87,14 @@ const base::Feature kLowPriorityForHiddenFrame{ ...@@ -87,6 +87,14 @@ const base::Feature kLowPriorityForHiddenFrame{
"BlinkSchedulerLowPriorityForHiddenFrame", "BlinkSchedulerLowPriorityForHiddenFrame",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Used along with |kLowPriorityForHiddenFrame|,
// |kLowPriorityForSubFrameThrottleableTask|, |kLowPriorityForThrottleableTask|,
// |kLowPriorityForSubFrame| to enable one of these experiments only during the
// load use case.
const base::Feature kFrameExperimentOnlyWhenLoading{
"BlinkSchedulerFrameExperimentOnlyWhenLoading",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables setting the priority of an ad frame to low priority. // Enables setting the priority of an ad frame to low priority.
const base::Feature kLowPriorityForAdFrame{ const base::Feature kLowPriorityForAdFrame{
"BlinkSchedulerLowPriorityForAdFrame", base::FEATURE_DISABLED_BY_DEFAULT}; "BlinkSchedulerLowPriorityForAdFrame", base::FEATURE_DISABLED_BY_DEFAULT};
...@@ -96,20 +104,34 @@ const base::Feature kBestEffortPriorityForAdFrame{ ...@@ -96,20 +104,34 @@ const base::Feature kBestEffortPriorityForAdFrame{
"BlinkSchedulerBestEffortPriorityForAdFrame", "BlinkSchedulerBestEffortPriorityForAdFrame",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Used along with |kLowPriorityForAdFrame| or |kBestEffortPriorityForAdFrame|
// to enable one of these experiments only during the load use case.
const base::Feature kAdFrameExperimentOnlyWhenLoading{
"BlinkSchedulerAdFrameExperimentOnlyWhenLoading",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables using a resource's fetch priority to determine the priority of the // Enables using a resource's fetch priority to determine the priority of the
// resource's loading tasks posted to blink's scheduler. // resource's loading tasks posted to blink's scheduler.
const base::Feature kUseResourceFetchPriority{ const base::Feature kUseResourceFetchPriority{
"BlinkSchedulerResourceFetchPriority", base::FEATURE_DISABLED_BY_DEFAULT}; "BlinkSchedulerResourceFetchPriority", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables using a resource's fetch priority to determine the priority of the
// resource's loading tasks posted to blink's scheduler only for resources
// requested during the loading phase.
const base::Feature kUseResourceFetchPriorityOnlyWhenLoading{
"BlinkSchedulerResourceFetchPriorityOnlyWhenLoading",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables setting the priority of cross-origin task queues to // Enables setting the priority of cross-origin task queues to
// low priority. // low priority.
const base::Feature kLowPriorityForCrossOrigin{ const base::Feature kLowPriorityForCrossOrigin{
"BlinkSchedulerLowPriorityForCrossOrigin", "BlinkSchedulerLowPriorityForCrossOrigin",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a chosen experiments only during the load use case. // Enables setting the priority of cross-origin task queues to
const base::Feature kExperimentOnlyWhenLoading{ // low priority during loading only.
"BlinkSchedulerExperimentOnlyWhenLoading", const base::Feature kLowPriorityForCrossOriginOnlyWhenLoading{
"BlinkSchedulerLowPriorityForCrossOriginOnlyWhenLoading",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Enable setting throttleable and freezable task types from field trial // Enable setting throttleable and freezable task types from field trial
......
...@@ -508,7 +508,10 @@ FrameSchedulerImpl::CreateResourceLoadingTaskRunnerHandle() { ...@@ -508,7 +508,10 @@ FrameSchedulerImpl::CreateResourceLoadingTaskRunnerHandle() {
std::unique_ptr<ResourceLoadingTaskRunnerHandleImpl> std::unique_ptr<ResourceLoadingTaskRunnerHandleImpl>
FrameSchedulerImpl::CreateResourceLoadingTaskRunnerHandleImpl() { FrameSchedulerImpl::CreateResourceLoadingTaskRunnerHandleImpl() {
if (main_thread_scheduler_->scheduling_settings() if (main_thread_scheduler_->scheduling_settings()
.use_resource_fetch_priority) { .use_resource_fetch_priority ||
(parent_page_scheduler_->IsLoading() &&
main_thread_scheduler_->scheduling_settings()
.use_resource_priorities_only_during_loading)) {
scoped_refptr<MainThreadTaskQueue> task_queue = scoped_refptr<MainThreadTaskQueue> task_queue =
frame_task_queue_controller_->NewResourceLoadingTaskQueue(); frame_task_queue_controller_->NewResourceLoadingTaskQueue();
resource_loading_task_queue_priorities_.insert( resource_loading_task_queue_priorities_.insert(
...@@ -796,7 +799,7 @@ TaskQueue::QueuePriority FrameSchedulerImpl::ComputePriority( ...@@ -796,7 +799,7 @@ TaskQueue::QueuePriority FrameSchedulerImpl::ComputePriority(
// all times. // all times.
if (parent_page_scheduler_->IsLoading() || if (parent_page_scheduler_->IsLoading() ||
!main_thread_scheduler_->scheduling_settings() !main_thread_scheduler_->scheduling_settings()
.experiment_only_when_loading) { .use_frame_priorities_only_during_loading) {
// Low priority feature enabled for hidden frame. // Low priority feature enabled for hidden frame.
if (main_thread_scheduler_->scheduling_settings() if (main_thread_scheduler_->scheduling_settings()
.low_priority_hidden_frame && .low_priority_hidden_frame &&
...@@ -824,20 +827,28 @@ TaskQueue::QueuePriority FrameSchedulerImpl::ComputePriority( ...@@ -824,20 +827,28 @@ TaskQueue::QueuePriority FrameSchedulerImpl::ComputePriority(
.low_priority_throttleable && .low_priority_throttleable &&
is_throttleable_task_queue) is_throttleable_task_queue)
return TaskQueue::QueuePriority::kLowPriority; return TaskQueue::QueuePriority::kLowPriority;
}
if (main_thread_scheduler_->scheduling_settings().low_priority_ad_frame && // Ad frame experiment.
IsAdFrame()) { if (IsAdFrame() && (parent_page_scheduler_->IsLoading() ||
!main_thread_scheduler_->scheduling_settings()
.use_adframe_priorities_only_during_loading)) {
if (main_thread_scheduler_->scheduling_settings().low_priority_ad_frame) {
return TaskQueue::QueuePriority::kLowPriority; return TaskQueue::QueuePriority::kLowPriority;
} }
if (main_thread_scheduler_->scheduling_settings().best_effort_ad_frame && if (main_thread_scheduler_->scheduling_settings().best_effort_ad_frame) {
IsAdFrame()) {
return TaskQueue::QueuePriority::kBestEffortPriority; return TaskQueue::QueuePriority::kBestEffortPriority;
} }
}
// Frame origin type experiment.
if (IsCrossOrigin()) {
if (main_thread_scheduler_->scheduling_settings() if (main_thread_scheduler_->scheduling_settings()
.low_priority_cross_origin && .low_priority_cross_origin ||
IsCrossOrigin()) { (main_thread_scheduler_->scheduling_settings()
.low_priority_cross_origin_only_during_loading &&
parent_page_scheduler_->IsLoading())) {
return TaskQueue::QueuePriority::kLowPriority; return TaskQueue::QueuePriority::kLowPriority;
} }
} }
......
...@@ -785,7 +785,7 @@ class LowPriorityHiddenFrameExperimentTest : public FrameSchedulerImplTest { ...@@ -785,7 +785,7 @@ class LowPriorityHiddenFrameExperimentTest : public FrameSchedulerImplTest {
public: public:
LowPriorityHiddenFrameExperimentTest() LowPriorityHiddenFrameExperimentTest()
: FrameSchedulerImplTest({kLowPriorityForHiddenFrame}, : FrameSchedulerImplTest({kLowPriorityForHiddenFrame},
{kExperimentOnlyWhenLoading}) {} {kFrameExperimentOnlyWhenLoading}) {}
}; };
TEST_F(LowPriorityHiddenFrameExperimentTest, FrameQueuesPriorities) { TEST_F(LowPriorityHiddenFrameExperimentTest, FrameQueuesPriorities) {
...@@ -825,7 +825,7 @@ class LowPriorityHiddenFrameDuringLoadingExperimentTest ...@@ -825,7 +825,7 @@ class LowPriorityHiddenFrameDuringLoadingExperimentTest
public: public:
LowPriorityHiddenFrameDuringLoadingExperimentTest() LowPriorityHiddenFrameDuringLoadingExperimentTest()
: FrameSchedulerImplTest( : FrameSchedulerImplTest(
{kLowPriorityForHiddenFrame, kExperimentOnlyWhenLoading}, {kLowPriorityForHiddenFrame, kFrameExperimentOnlyWhenLoading},
{}) {} {}) {}
}; };
...@@ -872,7 +872,7 @@ class LowPrioritySubFrameExperimentTest : public FrameSchedulerImplTest { ...@@ -872,7 +872,7 @@ class LowPrioritySubFrameExperimentTest : public FrameSchedulerImplTest {
public: public:
LowPrioritySubFrameExperimentTest() LowPrioritySubFrameExperimentTest()
: FrameSchedulerImplTest({kLowPriorityForSubFrame}, : FrameSchedulerImplTest({kLowPriorityForSubFrame},
{kExperimentOnlyWhenLoading}) {} {kFrameExperimentOnlyWhenLoading}) {}
}; };
TEST_F(LowPrioritySubFrameExperimentTest, FrameQueuesPriorities) { TEST_F(LowPrioritySubFrameExperimentTest, FrameQueuesPriorities) {
...@@ -914,7 +914,7 @@ class LowPrioritySubFrameDuringLoadingExperimentTest ...@@ -914,7 +914,7 @@ class LowPrioritySubFrameDuringLoadingExperimentTest
public: public:
LowPrioritySubFrameDuringLoadingExperimentTest() LowPrioritySubFrameDuringLoadingExperimentTest()
: FrameSchedulerImplTest( : FrameSchedulerImplTest(
{kLowPriorityForSubFrame, kExperimentOnlyWhenLoading}, {kLowPriorityForSubFrame, kFrameExperimentOnlyWhenLoading},
{}) {} {}) {}
}; };
...@@ -961,7 +961,7 @@ class LowPrioritySubFrameThrottleableTaskExperimentTest ...@@ -961,7 +961,7 @@ class LowPrioritySubFrameThrottleableTaskExperimentTest
public: public:
LowPrioritySubFrameThrottleableTaskExperimentTest() LowPrioritySubFrameThrottleableTaskExperimentTest()
: FrameSchedulerImplTest({kLowPriorityForSubFrameThrottleableTask}, : FrameSchedulerImplTest({kLowPriorityForSubFrameThrottleableTask},
{kExperimentOnlyWhenLoading}) {} {kFrameExperimentOnlyWhenLoading}) {}
}; };
TEST_F(LowPrioritySubFrameThrottleableTaskExperimentTest, TEST_F(LowPrioritySubFrameThrottleableTaskExperimentTest,
...@@ -1004,7 +1004,7 @@ class LowPrioritySubFrameThrottleableTaskDuringLoadingExperimentTest ...@@ -1004,7 +1004,7 @@ class LowPrioritySubFrameThrottleableTaskDuringLoadingExperimentTest
public: public:
LowPrioritySubFrameThrottleableTaskDuringLoadingExperimentTest() LowPrioritySubFrameThrottleableTaskDuringLoadingExperimentTest()
: FrameSchedulerImplTest({kLowPriorityForSubFrameThrottleableTask, : FrameSchedulerImplTest({kLowPriorityForSubFrameThrottleableTask,
kExperimentOnlyWhenLoading}, kFrameExperimentOnlyWhenLoading},
{}) {} {}) {}
}; };
...@@ -1052,7 +1052,7 @@ class LowPriorityThrottleableTaskExperimentTest ...@@ -1052,7 +1052,7 @@ class LowPriorityThrottleableTaskExperimentTest
public: public:
LowPriorityThrottleableTaskExperimentTest() LowPriorityThrottleableTaskExperimentTest()
: FrameSchedulerImplTest({kLowPriorityForThrottleableTask}, : FrameSchedulerImplTest({kLowPriorityForThrottleableTask},
{kExperimentOnlyWhenLoading}) {} {kFrameExperimentOnlyWhenLoading}) {}
}; };
TEST_F(LowPriorityThrottleableTaskExperimentTest, FrameQueuesPriorities) { TEST_F(LowPriorityThrottleableTaskExperimentTest, FrameQueuesPriorities) {
...@@ -1094,7 +1094,7 @@ class LowPriorityThrottleableTaskDuringLoadingExperimentTest ...@@ -1094,7 +1094,7 @@ class LowPriorityThrottleableTaskDuringLoadingExperimentTest
public: public:
LowPriorityThrottleableTaskDuringLoadingExperimentTest() LowPriorityThrottleableTaskDuringLoadingExperimentTest()
: FrameSchedulerImplTest( : FrameSchedulerImplTest(
{kLowPriorityForThrottleableTask, kExperimentOnlyWhenLoading}, {kLowPriorityForThrottleableTask, kFrameExperimentOnlyWhenLoading},
{}) {} {}) {}
}; };
...@@ -1181,7 +1181,8 @@ TEST_F(LowPriorityThrottleableTaskDuringLoadingExperimentTest, ...@@ -1181,7 +1181,8 @@ TEST_F(LowPriorityThrottleableTaskDuringLoadingExperimentTest,
class LowPriorityAdFrameExperimentTest : public FrameSchedulerImplTest { class LowPriorityAdFrameExperimentTest : public FrameSchedulerImplTest {
public: public:
LowPriorityAdFrameExperimentTest() LowPriorityAdFrameExperimentTest()
: FrameSchedulerImplTest({kLowPriorityForAdFrame}, {}) {} : FrameSchedulerImplTest({kLowPriorityForAdFrame},
{kAdFrameExperimentOnlyWhenLoading}) {}
}; };
TEST_F(LowPriorityAdFrameExperimentTest, FrameQueuesPriorities) { TEST_F(LowPriorityAdFrameExperimentTest, FrameQueuesPriorities) {
...@@ -1223,7 +1224,7 @@ class LowPriorityAdFrameDuringLoadingExperimentTest ...@@ -1223,7 +1224,7 @@ class LowPriorityAdFrameDuringLoadingExperimentTest
public: public:
LowPriorityAdFrameDuringLoadingExperimentTest() LowPriorityAdFrameDuringLoadingExperimentTest()
: FrameSchedulerImplTest( : FrameSchedulerImplTest(
{kLowPriorityForAdFrame, kExperimentOnlyWhenLoading}, {kLowPriorityForAdFrame, kAdFrameExperimentOnlyWhenLoading},
{}) {} {}) {}
}; };
...@@ -1271,7 +1272,8 @@ TEST_F(LowPriorityAdFrameDuringLoadingExperimentTest, FrameQueuesPriorities) { ...@@ -1271,7 +1272,8 @@ TEST_F(LowPriorityAdFrameDuringLoadingExperimentTest, FrameQueuesPriorities) {
class BestEffortPriorityAdFrameExperimentTest : public FrameSchedulerImplTest { class BestEffortPriorityAdFrameExperimentTest : public FrameSchedulerImplTest {
public: public:
BestEffortPriorityAdFrameExperimentTest() BestEffortPriorityAdFrameExperimentTest()
: FrameSchedulerImplTest({kBestEffortPriorityForAdFrame}, {}) {} : FrameSchedulerImplTest({kBestEffortPriorityForAdFrame},
{kAdFrameExperimentOnlyWhenLoading}) {}
}; };
TEST_F(BestEffortPriorityAdFrameExperimentTest, FrameQueuesPriorities) { TEST_F(BestEffortPriorityAdFrameExperimentTest, FrameQueuesPriorities) {
...@@ -1313,7 +1315,7 @@ class BestEffortPriorityAdFrameDuringLoadingExperimentTest ...@@ -1313,7 +1315,7 @@ class BestEffortPriorityAdFrameDuringLoadingExperimentTest
public: public:
BestEffortPriorityAdFrameDuringLoadingExperimentTest() BestEffortPriorityAdFrameDuringLoadingExperimentTest()
: FrameSchedulerImplTest( : FrameSchedulerImplTest(
{kBestEffortPriorityForAdFrame, kExperimentOnlyWhenLoading}, {kBestEffortPriorityForAdFrame, kAdFrameExperimentOnlyWhenLoading},
{}) {} {}) {}
}; };
...@@ -1367,8 +1369,8 @@ class ResourceFetchPriorityExperimentTest : public FrameSchedulerImplTest { ...@@ -1367,8 +1369,8 @@ class ResourceFetchPriorityExperimentTest : public FrameSchedulerImplTest {
{"HIGHEST", "HIGH"}, {"MEDIUM", "NORMAL"}, {"LOW", "NORMAL"}, {"HIGHEST", "HIGH"}, {"MEDIUM", "NORMAL"}, {"LOW", "NORMAL"},
{"LOWEST", "LOW"}, {"IDLE", "LOW"}, {"THROTTLED", "LOW"}}; {"LOWEST", "LOW"}, {"IDLE", "LOW"}, {"THROTTLED", "LOW"}};
const char kStudyName[] = "BlinkSchedulerResourceFetchPriority"; const char kStudyName[] = "ResourceFetchPriorityExperiment";
const char kGroupName[] = "GroupName"; const char kGroupName[] = "GroupName1";
field_trial_list_ = std::make_unique<base::FieldTrialList>(nullptr); field_trial_list_ = std::make_unique<base::FieldTrialList>(nullptr);
base::AssociateFieldTrialParams(kStudyName, kGroupName, params); base::AssociateFieldTrialParams(kStudyName, kGroupName, params);
...@@ -1393,6 +1395,52 @@ TEST_F(ResourceFetchPriorityExperimentTest, DidChangePriority) { ...@@ -1393,6 +1395,52 @@ TEST_F(ResourceFetchPriorityExperimentTest, DidChangePriority) {
TaskQueue::QueuePriority::kHighPriority); TaskQueue::QueuePriority::kHighPriority);
} }
class ResourceFetchPriorityExperimentOnlyWhenLoadingTest
: public FrameSchedulerImplTest {
public:
ResourceFetchPriorityExperimentOnlyWhenLoadingTest()
: FrameSchedulerImplTest({kUseResourceFetchPriorityOnlyWhenLoading}, {}) {
std::map<std::string, std::string> params{
{"HIGHEST", "HIGH"}, {"MEDIUM", "NORMAL"}, {"LOW", "NORMAL"},
{"LOWEST", "LOW"}, {"IDLE", "LOW"}, {"THROTTLED", "LOW"}};
const char kStudyName[] = "ResourceFetchPriorityExperiment";
const char kGroupName[] = "GroupName2";
field_trial_list_ = std::make_unique<base::FieldTrialList>(nullptr);
base::AssociateFieldTrialParams(kStudyName, kGroupName, params);
base::FieldTrialList::CreateFieldTrial(kStudyName, kGroupName);
}
};
TEST_F(ResourceFetchPriorityExperimentOnlyWhenLoadingTest, DidChangePriority) {
std::unique_ptr<ResourceLoadingTaskRunnerHandleImpl> handle =
GetResourceLoadingTaskRunnerHandleImpl();
scoped_refptr<MainThreadTaskQueue> task_queue = handle->task_queue();
TaskQueue::QueuePriority priority = task_queue->GetQueuePriority();
EXPECT_EQ(priority, TaskQueue::QueuePriority::kNormalPriority);
// Experiment is only enabled during the loading phase.
DidChangeResourceLoadingPriority(task_queue, net::RequestPriority::LOWEST);
EXPECT_EQ(task_queue->GetQueuePriority(), priority);
// Main thread scheduler is in the loading use case.
scheduler_->DidStartProvisionalLoad(true);
EXPECT_TRUE(page_scheduler_->IsLoading());
handle = GetResourceLoadingTaskRunnerHandleImpl();
task_queue = handle->task_queue();
DidChangeResourceLoadingPriority(task_queue, net::RequestPriority::LOWEST);
EXPECT_EQ(task_queue->GetQueuePriority(),
TaskQueue::QueuePriority::kLowPriority);
DidChangeResourceLoadingPriority(task_queue, net::RequestPriority::HIGHEST);
EXPECT_EQ(task_queue->GetQueuePriority(),
TaskQueue::QueuePriority::kHighPriority);
}
TEST_F( TEST_F(
FrameSchedulerImplTest, FrameSchedulerImplTest,
DidChangeResourceLoadingPriority_ResourceFecthPriorityExperimentDisabled) { DidChangeResourceLoadingPriority_ResourceFecthPriorityExperimentDisabled) {
...@@ -1415,8 +1463,7 @@ TEST_F( ...@@ -1415,8 +1463,7 @@ TEST_F(
class LowPriorityCrossOriginTaskExperimentTest : public FrameSchedulerImplTest { class LowPriorityCrossOriginTaskExperimentTest : public FrameSchedulerImplTest {
public: public:
LowPriorityCrossOriginTaskExperimentTest() LowPriorityCrossOriginTaskExperimentTest()
: FrameSchedulerImplTest({kLowPriorityForCrossOrigin}, : FrameSchedulerImplTest({kLowPriorityForCrossOrigin}, {}) {}
{kExperimentOnlyWhenLoading}) {}
}; };
TEST_F(LowPriorityCrossOriginTaskExperimentTest, FrameQueuesPriorities) { TEST_F(LowPriorityCrossOriginTaskExperimentTest, FrameQueuesPriorities) {
...@@ -1457,9 +1504,8 @@ class LowPriorityCrossOriginTaskDuringLoadingExperimentTest ...@@ -1457,9 +1504,8 @@ class LowPriorityCrossOriginTaskDuringLoadingExperimentTest
: public FrameSchedulerImplTest { : public FrameSchedulerImplTest {
public: public:
LowPriorityCrossOriginTaskDuringLoadingExperimentTest() LowPriorityCrossOriginTaskDuringLoadingExperimentTest()
: FrameSchedulerImplTest( : FrameSchedulerImplTest({kLowPriorityForCrossOriginOnlyWhenLoading},
{kLowPriorityForCrossOrigin, kExperimentOnlyWhenLoading}, {}) {}
{}) {}
}; };
TEST_F(LowPriorityCrossOriginTaskDuringLoadingExperimentTest, TEST_F(LowPriorityCrossOriginTaskDuringLoadingExperimentTest,
......
...@@ -76,7 +76,7 @@ constexpr base::TimeDelta kDefaultWakeUpDuration = ...@@ -76,7 +76,7 @@ constexpr base::TimeDelta kDefaultWakeUpDuration =
// Name of the finch study that enables using resource fetch priorities to // Name of the finch study that enables using resource fetch priorities to
// schedule tasks on Blink. // schedule tasks on Blink.
constexpr const char kResourceFetchPriorityExperiment[] = constexpr const char kResourceFetchPriorityExperiment[] =
"BlinkSchedulerResourceFetchPriority"; "ResourceFetchPriorityExperiment";
base::TimeDelta GetWakeUpDuration() { base::TimeDelta GetWakeUpDuration() {
int duration_ms; int duration_ms;
...@@ -575,18 +575,27 @@ MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() { ...@@ -575,18 +575,27 @@ MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() {
base::FeatureList::IsEnabled(kLowPriorityForThrottleableTask); base::FeatureList::IsEnabled(kLowPriorityForThrottleableTask);
low_priority_subframe_throttleable = low_priority_subframe_throttleable =
base::FeatureList::IsEnabled(kLowPriorityForSubFrameThrottleableTask); base::FeatureList::IsEnabled(kLowPriorityForSubFrameThrottleableTask);
use_frame_priorities_only_during_loading =
base::FeatureList::IsEnabled(kFrameExperimentOnlyWhenLoading);
low_priority_ad_frame = base::FeatureList::IsEnabled(kLowPriorityForAdFrame); low_priority_ad_frame = base::FeatureList::IsEnabled(kLowPriorityForAdFrame);
best_effort_ad_frame = best_effort_ad_frame =
base::FeatureList::IsEnabled(kBestEffortPriorityForAdFrame); base::FeatureList::IsEnabled(kBestEffortPriorityForAdFrame);
use_adframe_priorities_only_during_loading =
base::FeatureList::IsEnabled(kAdFrameExperimentOnlyWhenLoading);
low_priority_cross_origin = low_priority_cross_origin =
base::FeatureList::IsEnabled(kLowPriorityForCrossOrigin); base::FeatureList::IsEnabled(kLowPriorityForCrossOrigin);
low_priority_cross_origin_only_during_loading =
base::FeatureList::IsEnabled(kLowPriorityForCrossOriginOnlyWhenLoading);
use_resource_fetch_priority = use_resource_fetch_priority =
base::FeatureList::IsEnabled(kUseResourceFetchPriority); base::FeatureList::IsEnabled(kUseResourceFetchPriority);
use_resource_priorities_only_during_loading =
base::FeatureList::IsEnabled(kUseResourceFetchPriorityOnlyWhenLoading);
if (use_resource_fetch_priority) { if (use_resource_fetch_priority ||
use_resource_priorities_only_during_loading) {
std::map<std::string, std::string> params; std::map<std::string, std::string> params;
base::GetFieldTrialParams(kResourceFetchPriorityExperiment, &params); base::GetFieldTrialParams(kResourceFetchPriorityExperiment, &params);
for (size_t net_priority = 0; for (size_t net_priority = 0;
...@@ -603,9 +612,6 @@ MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() { ...@@ -603,9 +612,6 @@ MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() {
} }
} }
experiment_only_when_loading =
base::FeatureList::IsEnabled(kExperimentOnlyWhenLoading);
FrameSchedulerImpl::InitializeTaskTypeQueueTraitsMap( FrameSchedulerImpl::InitializeTaskTypeQueueTraitsMap(
frame_task_types_to_queue_traits); frame_task_types_to_queue_traits);
} }
......
...@@ -100,16 +100,24 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl ...@@ -100,16 +100,24 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl
bool low_priority_subframe_throttleable; bool low_priority_subframe_throttleable;
bool low_priority_hidden_frame; bool low_priority_hidden_frame;
// Used along with |low_priority_subframe|, |low_priority_throttleable|,
// |low_priority_subframe_throttleable|, |low_priority_hidden_frame|
// to enable one of these experiments during the loading phase only.
bool use_frame_priorities_only_during_loading;
// Ads priority experiment (crbug.com/856150). // Ads priority experiment (crbug.com/856150).
bool low_priority_ad_frame; bool low_priority_ad_frame;
bool best_effort_ad_frame; bool best_effort_ad_frame;
bool use_adframe_priorities_only_during_loading;
// Origin type priority experiment (crbug.com/856158). // Origin type priority experiment (crbug.com/856158).
bool low_priority_cross_origin; bool low_priority_cross_origin;
bool low_priority_cross_origin_only_during_loading;
// Use resource fetch priority for resource loading tasks // Use resource fetch priority for resource loading tasks
// (crbug.com/860545). // (crbug.com/860545).
bool use_resource_fetch_priority; bool use_resource_fetch_priority;
bool use_resource_priorities_only_during_loading;
// Contains a mapping from net::RequestPriority to TaskQueue::QueuePriority // Contains a mapping from net::RequestPriority to TaskQueue::QueuePriority
// when use_resource_fetch_priority is enabled. // when use_resource_fetch_priority is enabled.
......
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