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
switch (GetOptimizationType()) {
case proto::OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION: {
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);
break;
}
......
......@@ -92,16 +92,22 @@ void BlinkOptimizationGuideInquirer::PopulateHintsForDelayAsyncScriptExecution(
using blink::mojom::DelayAsyncScriptExecutionDelayType;
auto hints = blink::mojom::DelayAsyncScriptExecutionHints::New();
switch (metadata->delay_type()) {
case proto::DelayType::DELAY_TYPE_UNKNOWN:
case proto::PerfectHeuristicsDelayType::DELAY_TYPE_UNKNOWN:
hints->delay_type = DelayAsyncScriptExecutionDelayType::kUnknown;
break;
case proto::DelayType::DELAY_TYPE_FINISHED_PARSING:
case proto::PerfectHeuristicsDelayType::DELAY_TYPE_FINISHED_PARSING:
hints->delay_type = DelayAsyncScriptExecutionDelayType::kFinishedParsing;
break;
case proto::DelayType::DELAY_TYPE_FIRST_PAINT_OR_FINISHED_PARSING:
case proto::PerfectHeuristicsDelayType::
DELAY_TYPE_FIRST_PAINT_OR_FINISHED_PARSING:
hints->delay_type =
DelayAsyncScriptExecutionDelayType::kFirstPaintOrFinishedParsing;
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);
optimization_guide_hints_->delay_async_script_execution_hints =
......
......@@ -47,6 +47,8 @@ std::string GetStringNameForOptimizationType(
return "FastHostHints";
case proto::OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION:
return "DelayAsyncScriptExecution";
case proto::OptimizationType::DELAY_COMPETING_LOW_PRIORITY_REQUESTS:
return "DelayCompetingLowPriorityRequests";
case proto::OptimizationType::LITE_VIDEO:
return "LiteVideo";
}
......
......@@ -12,6 +12,7 @@ proto_library("optimization_guide_proto") {
sources = [
"common_types.proto",
"delay_async_script_execution_metadata.proto",
"delay_competing_low_priority_requests_metadata.proto",
"hint_cache.proto",
"hints.proto",
"lite_video_metadata.proto",
......@@ -29,6 +30,7 @@ if (is_android) {
sources = [
"common_types.proto",
"delay_async_script_execution_metadata.proto",
"delay_competing_low_priority_requests_metadata.proto",
"hints.proto",
"lite_video_metadata.proto",
"loading_predictor_metadata.proto",
......
......@@ -9,6 +9,15 @@ option java_outer_classname = "CommonTypesProto";
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 values should match those of //net/nqe/effective_connection_type.h in the
......
......@@ -10,16 +10,10 @@ option java_outer_classname = "DelayAsyncScriptExecutionMetadataProto";
package optimization_guide.proto;
// Enumerates the timings at which execution of async scripts can be delayed
// until.
enum DelayType {
DELAY_TYPE_UNKNOWN = 0;
DELAY_TYPE_FINISHED_PARSING = 1;
DELAY_TYPE_FIRST_PAINT_OR_FINISHED_PARSING = 2;
};
import "common_types.proto";
// Optimization metadata for OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION.
message DelayAsyncScriptExecutionMetadata {
// 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 {
// This optimization provides information about the effective delay for async
// script execution.
DELAY_ASYNC_SCRIPT_EXECUTION = 11;
// TODO(crbug/1112515): Add type here for delay low priority resources to
// match server.
//
// This optimization provides information about the effective delay and
// priority thresholds for delaying low priority requests.
DELAY_COMPETING_LOW_PRIORITY_REQUESTS = 12;
// This optimization provides information about how to throttle meda requests
// to reduce the bitrate of adaptively streamed media.
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