Commit ddaa9cd6 authored by Sophie Chang's avatar Sophie Chang Committed by Commit Bot

Switch DelayAsyncScriptExecution to use the any metadata field

Bug: 1113287
Change-Id: I0dd3b14bc9538b71686e9dbac9b258eaec0a2015
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2356749Reviewed-by: default avatarMichael Crouse <mcrouse@chromium.org>
Commit-Queue: Sophie Chang <sophiechang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#798728}
parent 959eab0e
......@@ -94,8 +94,7 @@ class BlinkOptimizationGuideBrowserTest
case proto::OptimizationType::DELAY_ASYNC_SCRIPT_EXECUTION: {
proto::DelayAsyncScriptExecutionMetadata metadata;
metadata.set_delay_type(proto::DelayType::DELAY_TYPE_FINISHED_PARSING);
optimization_guide_metadata.set_delay_async_script_execution_metadata(
metadata);
optimization_guide_metadata.SetAnyMetadataForTesting(metadata);
break;
}
default:
......
......@@ -86,7 +86,8 @@ CreateDelayAsyncScriptExecutionHints(
// Give up providing the hints when the metadata is not available.
base::Optional<proto::DelayAsyncScriptExecutionMetadata> metadata =
result->data.metadata.delay_async_script_execution_metadata();
result->data.metadata
.ParsedMetadata<proto::DelayAsyncScriptExecutionMetadata>();
if (!metadata || !metadata->delay_type())
return nullptr;
......
......@@ -165,11 +165,6 @@ bool IsOptimizationTypeAllowed(
optimization_metadata->set_loading_predictor_metadata(
optimization.loading_predictor_metadata());
break;
case optimization_guide::proto::Optimization::
kDelayAsyncScriptExecutionMetadata:
optimization_metadata->set_delay_async_script_execution_metadata(
optimization.delay_async_script_execution_metadata());
break;
case optimization_guide::proto::Optimization::kAnyMetadata:
optimization_metadata->set_any_metadata(optimization.any_metadata());
break;
......@@ -1431,9 +1426,6 @@ void OptimizationGuideHintsManager::AddHintForTesting(
} else if (metadata->public_image_metadata()) {
*optimization->mutable_public_image_metadata() =
*metadata->public_image_metadata();
} else if (metadata->delay_async_script_execution_metadata()) {
*optimization->mutable_delay_async_script_execution_metadata() =
*metadata->delay_async_script_execution_metadata();
} else if (metadata->any_metadata()) {
*optimization->mutable_any_metadata() = *metadata->any_metadata();
} else {
......
......@@ -1595,50 +1595,6 @@ TEST_F(OptimizationGuideHintsManagerTest,
optimization_type_decision);
}
TEST_F(OptimizationGuideHintsManagerTest,
CanApplyOptimizationAndPopulatesDelayAsyncScriptExecutionMetadata) {
hints_manager()->RegisterOptimizationTypes(
{optimization_guide::proto::DELAY_ASYNC_SCRIPT_EXECUTION});
optimization_guide::proto::Configuration config;
optimization_guide::proto::Hint* hint = config.add_hints();
hint->set_key("somedomain.org");
hint->set_key_representation(optimization_guide::proto::HOST);
hint->set_version("someversion");
optimization_guide::proto::PageHint* page_hint = hint->add_page_hints();
page_hint->set_page_pattern("/news/");
optimization_guide::proto::Optimization* opt =
page_hint->add_whitelisted_optimizations();
opt->set_optimization_type(
optimization_guide::proto::DELAY_ASYNC_SCRIPT_EXECUTION);
opt->mutable_delay_async_script_execution_metadata()->set_delay_type(
optimization_guide::proto::DelayType::DELAY_TYPE_FINISHED_PARSING);
ProcessHints(config, "1.0.0.0");
std::unique_ptr<content::MockNavigationHandle> navigation_handle =
CreateMockNavigationHandleWithOptimizationGuideWebContentsObserver(
url_with_hints());
base::RunLoop run_loop;
hints_manager()->OnNavigationStartOrRedirect(navigation_handle.get(),
run_loop.QuitClosure());
run_loop.Run();
optimization_guide::OptimizationMetadata optimization_metadata;
optimization_guide::OptimizationTypeDecision optimization_type_decision =
hints_manager()->CanApplyOptimization(
navigation_handle->GetURL(), navigation_handle->GetNavigationId(),
optimization_guide::proto::DELAY_ASYNC_SCRIPT_EXECUTION,
&optimization_metadata);
// Make sure delay async script execution metadata is populated.
EXPECT_TRUE(optimization_metadata.delay_async_script_execution_metadata()
.has_value());
EXPECT_EQ(optimization_guide::proto::DelayType::DELAY_TYPE_FINISHED_PARSING,
optimization_metadata.delay_async_script_execution_metadata()
->delay_type());
EXPECT_EQ(optimization_guide::OptimizationTypeDecision::kAllowedByHint,
optimization_type_decision);
}
TEST_F(OptimizationGuideHintsManagerTest,
CanApplyOptimizationAndPopulatesAnyMetadata) {
hints_manager()->RegisterOptimizationTypes(
......
......@@ -98,17 +98,6 @@ class OptimizationMetadata {
loading_predictor_metadata_ = loading_predictor_metadata;
}
base::Optional<proto::DelayAsyncScriptExecutionMetadata>
delay_async_script_execution_metadata() const {
return delay_async_script_execution_metadata_;
}
void set_delay_async_script_execution_metadata(
const proto::DelayAsyncScriptExecutionMetadata&
delay_async_script_execution_metadata) {
delay_async_script_execution_metadata_ =
delay_async_script_execution_metadata;
}
private:
// Metadata applicable to the optimization type.
//
......@@ -127,10 +116,6 @@ class OptimizationMetadata {
// Only applicable for the LOADING_PREDICTOR optimization type.
base::Optional<proto::LoadingPredictorMetadata> loading_predictor_metadata_;
// Only applicable for the DELAY_ASYNC_SCRIPT_EXECUTION optimization type.
base::Optional<proto::DelayAsyncScriptExecutionMetadata>
delay_async_script_execution_metadata_;
};
} // namespace optimization_guide
......
......@@ -4,6 +4,7 @@
#include "components/optimization_guide/optimization_metadata.h"
#include "components/optimization_guide/proto/delay_async_script_execution_metadata.pb.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace optimization_guide {
......
......@@ -10,7 +10,6 @@ option java_outer_classname = "HintsProto";
package optimization_guide.proto;
import "common_types.proto";
import "delay_async_script_execution_metadata.proto";
import "loading_predictor_metadata.proto";
import "performance_hints_metadata.proto";
import "previews_metadata.proto";
......@@ -169,7 +168,7 @@ enum KeyRepresentation {
}
message Optimization {
reserved 2, 3;
reserved 2, 3, 14;
// The type of optimization the hint applies to.
optional OptimizationType optimization_type = 1;
// The experiment name that activates the optimization.
......@@ -205,8 +204,6 @@ message Optimization {
PerformanceHintsMetadata performance_hints_metadata = 11;
PublicImageMetadata public_image_metadata = 12;
LoadingPredictorMetadata loading_predictor_metadata = 13;
DelayAsyncScriptExecutionMetadata delay_async_script_execution_metadata =
14;
Any any_metadata = 15;
}
}
......
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