Commit df86c84c authored by Hiroki Nakagawa's avatar Hiroki Nakagawa Committed by Commit Bot

OptimizationGuide: Add proto for DelayCompetingLowPriorityRequests

CREDIT: The most of changes were written by dom@chromium.org.

Bug: 1112515
Change-Id: I979f221adf30edbe41a3e575283ddd4c1d6105a2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2387905
Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: default avatarSophie Chang <sophiechang@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarDominic Farolino <dom@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804654}
parent 95c822f2
...@@ -125,7 +125,8 @@ class BlinkOptimizationGuideBrowserTest ...@@ -125,7 +125,8 @@ class BlinkOptimizationGuideBrowserTest
switch (GetOptimizationType()) { switch (GetOptimizationType()) {
case proto::OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION: { case proto::OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION: {
proto::DelayAsyncScriptExecutionMetadata metadata; proto::DelayAsyncScriptExecutionMetadata metadata;
metadata.set_delay_type(proto::DelayType::DELAY_TYPE_FINISHED_PARSING); metadata.set_delay_type(
proto::PerfectHeuristicsDelayType::DELAY_TYPE_FINISHED_PARSING);
optimization_guide_metadata.SetAnyMetadataForTesting(metadata); optimization_guide_metadata.SetAnyMetadataForTesting(metadata);
break; break;
} }
......
...@@ -92,16 +92,22 @@ void BlinkOptimizationGuideInquirer::PopulateHintsForDelayAsyncScriptExecution( ...@@ -92,16 +92,22 @@ void BlinkOptimizationGuideInquirer::PopulateHintsForDelayAsyncScriptExecution(
using blink::mojom::DelayAsyncScriptExecutionDelayType; using blink::mojom::DelayAsyncScriptExecutionDelayType;
auto hints = blink::mojom::DelayAsyncScriptExecutionHints::New(); auto hints = blink::mojom::DelayAsyncScriptExecutionHints::New();
switch (metadata->delay_type()) { switch (metadata->delay_type()) {
case proto::DelayType::DELAY_TYPE_UNKNOWN: case proto::PerfectHeuristicsDelayType::DELAY_TYPE_UNKNOWN:
hints->delay_type = DelayAsyncScriptExecutionDelayType::kUnknown; hints->delay_type = DelayAsyncScriptExecutionDelayType::kUnknown;
break; break;
case proto::DelayType::DELAY_TYPE_FINISHED_PARSING: case proto::PerfectHeuristicsDelayType::DELAY_TYPE_FINISHED_PARSING:
hints->delay_type = DelayAsyncScriptExecutionDelayType::kFinishedParsing; hints->delay_type = DelayAsyncScriptExecutionDelayType::kFinishedParsing;
break; break;
case proto::DelayType::DELAY_TYPE_FIRST_PAINT_OR_FINISHED_PARSING: case proto::PerfectHeuristicsDelayType::
DELAY_TYPE_FIRST_PAINT_OR_FINISHED_PARSING:
hints->delay_type = hints->delay_type =
DelayAsyncScriptExecutionDelayType::kFirstPaintOrFinishedParsing; DelayAsyncScriptExecutionDelayType::kFirstPaintOrFinishedParsing;
break; break;
case proto::PerfectHeuristicsDelayType::DELAY_TYPE_FIRST_PAINT:
case proto::PerfectHeuristicsDelayType::DELAY_TYPE_FIRST_CONTENTFUL_PAINT:
// DelayAsyncScriptExecution doesn't support these milestones.
NOTREACHED();
return;
} }
DCHECK(!optimization_guide_hints_->delay_async_script_execution_hints); DCHECK(!optimization_guide_hints_->delay_async_script_execution_hints);
optimization_guide_hints_->delay_async_script_execution_hints = optimization_guide_hints_->delay_async_script_execution_hints =
......
...@@ -47,6 +47,8 @@ std::string GetStringNameForOptimizationType( ...@@ -47,6 +47,8 @@ std::string GetStringNameForOptimizationType(
return "FastHostHints"; return "FastHostHints";
case proto::OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION: case proto::OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION:
return "DelayAsyncScriptExecution"; return "DelayAsyncScriptExecution";
case proto::OptimizationType::DELAY_COMPETING_LOW_PRIORITY_REQUESTS:
return "DelayCompetingLowPriorityRequests";
case proto::OptimizationType::LITE_VIDEO: case proto::OptimizationType::LITE_VIDEO:
return "LiteVideo"; return "LiteVideo";
} }
......
...@@ -12,6 +12,7 @@ proto_library("optimization_guide_proto") { ...@@ -12,6 +12,7 @@ proto_library("optimization_guide_proto") {
sources = [ sources = [
"common_types.proto", "common_types.proto",
"delay_async_script_execution_metadata.proto", "delay_async_script_execution_metadata.proto",
"delay_competing_low_priority_requests_metadata.proto",
"hint_cache.proto", "hint_cache.proto",
"hints.proto", "hints.proto",
"lite_video_metadata.proto", "lite_video_metadata.proto",
...@@ -29,6 +30,7 @@ if (is_android) { ...@@ -29,6 +30,7 @@ if (is_android) {
sources = [ sources = [
"common_types.proto", "common_types.proto",
"delay_async_script_execution_metadata.proto", "delay_async_script_execution_metadata.proto",
"delay_competing_low_priority_requests_metadata.proto",
"hints.proto", "hints.proto",
"lite_video_metadata.proto", "lite_video_metadata.proto",
"loading_predictor_metadata.proto", "loading_predictor_metadata.proto",
......
...@@ -9,6 +9,15 @@ option java_outer_classname = "CommonTypesProto"; ...@@ -9,6 +9,15 @@ option java_outer_classname = "CommonTypesProto";
package optimization_guide.proto; package optimization_guide.proto;
// Loading milestones that Perfect Heuristics experiments can use as delays.
enum PerfectHeuristicsDelayType {
DELAY_TYPE_UNKNOWN = 0;
DELAY_TYPE_FINISHED_PARSING = 1;
DELAY_TYPE_FIRST_PAINT_OR_FINISHED_PARSING = 2;
DELAY_TYPE_FIRST_PAINT = 3;
DELAY_TYPE_FIRST_CONTENTFUL_PAINT = 4;
}
// The possible effective connection type values. // The possible effective connection type values.
// //
// The values should match those of //net/nqe/effective_connection_type.h in the // The values should match those of //net/nqe/effective_connection_type.h in the
......
...@@ -10,16 +10,10 @@ option java_outer_classname = "DelayAsyncScriptExecutionMetadataProto"; ...@@ -10,16 +10,10 @@ option java_outer_classname = "DelayAsyncScriptExecutionMetadataProto";
package optimization_guide.proto; package optimization_guide.proto;
// Enumerates the timings at which execution of async scripts can be delayed import "common_types.proto";
// until.
enum DelayType {
DELAY_TYPE_UNKNOWN = 0;
DELAY_TYPE_FINISHED_PARSING = 1;
DELAY_TYPE_FIRST_PAINT_OR_FINISHED_PARSING = 2;
};
// Optimization metadata for OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION. // Optimization metadata for OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION.
message DelayAsyncScriptExecutionMetadata { message DelayAsyncScriptExecutionMetadata {
// The timing at which execution of async scripts should be delayed until. // The timing at which execution of async scripts should be delayed until.
optional DelayType delay_type = 1; optional PerfectHeuristicsDelayType delay_type = 1;
} }
// 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.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.optimization_guide.proto";
option java_outer_classname = "DelayCompetingLowPriorityRequestsMetadataProto";
package optimization_guide.proto;
import "common_types.proto";
// Enumerates the different request priorities that the Chromium experiment will
// consider "important". For example, low priority requests will be queued
// behind in-flight medium priority requests, when the PriorityThreshold is
// PRIORITY_THRESHOLD_MEDIUM, etc.
enum PriorityThreshold {
PRIORITY_THRESHOLD_UNKNOWN = 0;
PRIORITY_THRESHOLD_MEDIUM = 1;
PRIORITY_THRESHOLD_HIGH = 2;
}
// Optimization metadata for
// OptimizationType::DELAY_COMPETING_LOW_PRIORITY_REQUESTS.
message DelayCompetingLowPriorityRequestsMetadata {
optional PerfectHeuristicsDelayType delay_type = 1;
optional PriorityThreshold priority_threshold = 2;
}
...@@ -125,9 +125,9 @@ enum OptimizationType { ...@@ -125,9 +125,9 @@ enum OptimizationType {
// This optimization provides information about the effective delay for async // This optimization provides information about the effective delay for async
// script execution. // script execution.
DELAY_ASYNC_SCRIPT_EXECUTION = 11; DELAY_ASYNC_SCRIPT_EXECUTION = 11;
// TODO(crbug/1112515): Add type here for delay low priority resources to // This optimization provides information about the effective delay and
// match server. // priority thresholds for delaying low priority requests.
// DELAY_COMPETING_LOW_PRIORITY_REQUESTS = 12;
// This optimization provides information about how to throttle meda requests // This optimization provides information about how to throttle meda requests
// to reduce the bitrate of adaptively streamed media. // to reduce the bitrate of adaptively streamed media.
LITE_VIDEO = 13; LITE_VIDEO = 13;
......
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