optimization_guide: Add serialization for opaque origins.
Bug: 390482575 Change-Id: Ic8793e89ba9a7756c5b2af99141f64ae117c95fb Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6393898 Commit-Queue: Khushal Sagar <khushalsagar@chromium.org> Auto-Submit: Khushal Sagar <khushalsagar@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Cr-Commit-Position: refs/heads/main@{#1438371}
This commit is contained in:
parent
5c3d91e8b2
commit
c85ccc8acf
components/optimization_guide/content/browser
url
@ -62,9 +62,13 @@ void AssertValidOrigin(
|
||||
const url::Origin& expected) {
|
||||
EXPECT_EQ(proto_origin.opaque(), expected.opaque());
|
||||
|
||||
url::Origin actual = url::Origin::Create(GURL(proto_origin.value()));
|
||||
EXPECT_TRUE(actual.IsSameOriginWith(expected))
|
||||
<< "actual: " << actual << ", expected: " << expected;
|
||||
if (expected.opaque()) {
|
||||
EXPECT_EQ(proto_origin.value(), expected.GetNonceForTesting()->ToString());
|
||||
} else {
|
||||
url::Origin actual = url::Origin::Create(GURL(proto_origin.value()));
|
||||
EXPECT_TRUE(actual.IsSameOriginWith(expected))
|
||||
<< "actual: " << actual << ", expected: " << expected;
|
||||
}
|
||||
}
|
||||
|
||||
class PageContentProtoProviderBrowserTest : public content::ContentBrowserTest {
|
||||
@ -327,7 +331,9 @@ IN_PROC_BROWSER_TEST_F(PageContentProtoProviderBrowserTest,
|
||||
EXPECT_EQ(iframe.content_attributes().attribute_type(),
|
||||
optimization_guide::proto::CONTENT_ATTRIBUTE_IFRAME);
|
||||
const auto& iframe_data = iframe.content_attributes().iframe_data();
|
||||
EXPECT_TRUE(iframe_data.frame_data().security_origin().opaque());
|
||||
AssertValidOrigin(iframe_data.frame_data().security_origin(),
|
||||
ChildFrameAt(web_contents()->GetPrimaryMainFrame(), 0)
|
||||
->GetLastCommittedOrigin());
|
||||
EXPECT_FALSE(iframe_data.likely_ad_frame());
|
||||
|
||||
EXPECT_EQ(iframe.children_nodes().size(), 1);
|
||||
@ -343,7 +349,9 @@ IN_PROC_BROWSER_TEST_F(PageContentProtoProviderBrowserTest,
|
||||
EXPECT_EQ(iframe.content_attributes().attribute_type(),
|
||||
optimization_guide::proto::CONTENT_ATTRIBUTE_IFRAME);
|
||||
const auto& iframe_data = iframe.content_attributes().iframe_data();
|
||||
EXPECT_TRUE(iframe_data.frame_data().security_origin().value().empty());
|
||||
AssertValidOrigin(iframe_data.frame_data().security_origin(),
|
||||
ChildFrameAt(web_contents()->GetPrimaryMainFrame(), 0)
|
||||
->GetLastCommittedOrigin());
|
||||
EXPECT_FALSE(iframe_data.likely_ad_frame());
|
||||
|
||||
EXPECT_EQ(iframe.children_nodes().size(), 1);
|
||||
|
@ -18,7 +18,23 @@
|
||||
|
||||
namespace optimization_guide {
|
||||
|
||||
class SecurityOriginSerializer {
|
||||
public:
|
||||
static void Serialize(
|
||||
const url::Origin& origin,
|
||||
optimization_guide::proto::SecurityOrigin* proto_origin) {
|
||||
proto_origin->set_opaque(origin.opaque());
|
||||
|
||||
if (origin.opaque()) {
|
||||
proto_origin->set_value(origin.GetNonceForSerialization()->ToString());
|
||||
} else {
|
||||
proto_origin->set_value(origin.Serialize());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
namespace {
|
||||
|
||||
optimization_guide::proto::ContentAttributeType ConvertAttributeType(
|
||||
blink::mojom::AIPageContentAttributeType type) {
|
||||
switch (type) {
|
||||
@ -110,18 +126,6 @@ void ConvertGeometry(const blink::mojom::AIPageContentGeometry& mojom_geometry,
|
||||
mojom_geometry.is_fixed_or_sticky_position);
|
||||
}
|
||||
|
||||
void ConvertSecurityOrigin(
|
||||
const url::Origin& origin,
|
||||
optimization_guide::proto::SecurityOrigin* proto_origin) {
|
||||
proto_origin->set_opaque(origin.opaque());
|
||||
|
||||
if (origin.opaque()) {
|
||||
// TODO(khushalsagar) Serialize opaque origins.
|
||||
} else {
|
||||
proto_origin->set_value(origin.Serialize());
|
||||
}
|
||||
}
|
||||
|
||||
void ConvertNodeInteractionInfo(
|
||||
const blink::mojom::AIPageContentNodeInteractionInfo&
|
||||
mojom_node_interaction_info,
|
||||
@ -227,8 +231,9 @@ void ConvertImageInfo(
|
||||
proto_image_info->set_image_caption(*mojom_image_info.image_caption);
|
||||
}
|
||||
if (mojom_image_info.source_origin) {
|
||||
ConvertSecurityOrigin(*mojom_image_info.source_origin,
|
||||
proto_image_info->mutable_security_origin());
|
||||
SecurityOriginSerializer::Serialize(
|
||||
*mojom_image_info.source_origin,
|
||||
proto_image_info->mutable_security_origin());
|
||||
}
|
||||
}
|
||||
|
||||
@ -495,8 +500,9 @@ void ConvertFrameData(
|
||||
AIPageContentMetadata& metadata,
|
||||
FrameTokenSet& frame_token_set) {
|
||||
ConvertFrameMetadata(render_frame_info.url, mojom_frame_data, metadata);
|
||||
ConvertSecurityOrigin(render_frame_info.source_origin,
|
||||
proto_frame_data->mutable_security_origin());
|
||||
SecurityOriginSerializer::Serialize(
|
||||
render_frame_info.source_origin,
|
||||
proto_frame_data->mutable_security_origin());
|
||||
ConvertFrameInteractionInfo(
|
||||
*mojom_frame_data.frame_interaction_info,
|
||||
proto_frame_data->mutable_frame_interaction_info());
|
||||
|
@ -62,6 +62,10 @@ namespace net {
|
||||
class SchemefulSite;
|
||||
} // namespace net
|
||||
|
||||
namespace optimization_guide {
|
||||
class SecurityOriginSerializer;
|
||||
}
|
||||
|
||||
namespace url {
|
||||
|
||||
namespace mojom {
|
||||
@ -359,6 +363,7 @@ class COMPONENT_EXPORT(URL) Origin {
|
||||
friend COMPONENT_EXPORT(URL) std::ostream& operator<<(std::ostream& out,
|
||||
const Origin& origin);
|
||||
friend class blink::StorageKeyTest;
|
||||
friend class optimization_guide::SecurityOriginSerializer;
|
||||
|
||||
// Origin::Nonce is a wrapper around base::UnguessableToken that generates
|
||||
// the random value only when the value is first accessed. The lazy generation
|
||||
|
Loading…
x
Reference in New Issue
Block a user