// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
package paint_preview;
option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.paint_preview.common.proto";
// Any fields annotated with "// required" are enforced as if they are
// required by paint_preview::PaintPreviewProtoValid().
// A proto representation of a gfx::Rect.
// NEXT_TAG = 5
message RectProto {
// required
optional int64 x = 1;
// required
optional int64 y = 2;
// required
optional int64 width = 3;
// required
optional int64 height = 4;
}
// A link represented by its absolute URL and a bounding box for the hit area.
// NEXT_TAG = 3
message LinkDataProto {
// required
optional RectProto rect = 1;
// required
optional string url = 2;
}
// A mapping from a content ID to the serialized embedding token.
// NEXT_TAG = 4
message ContentIdEmbeddingTokenPairProto {
// required
optional uint32 content_id = 1;
// required
optional uint64 embedding_token_low = 2;
// required
optional uint64 embedding_token_high = 3;
}
// A paint preview of a single frame.
// NEXT_TAG = 11
message PaintPreviewFrameProto {
// The embedding token for this frame to its parent. Every frame other than
// the main frame should have a non-zero value here.
// required
optional uint64 embedding_token_low = 1;
// required
optional uint64 embedding_token_high = 2;
// Boolean indicating if the frame is the main frame.
// required
optional bool is_main_frame = 3;
// The file path to the serialized Skia Picture.
// null if the persistence type of the |PaintPreviewCaptureParams| is
// |RecordingPersistence::MemoryBuffer|.
optional string file_path = 4;
// A list of links within the frame.
repeated LinkDataProto links = 5;
// A mapping between the content IDs of subframes and the |id| field.
repeated ContentIdEmbeddingTokenPairProto content_id_to_embedding_tokens = 6;
// Position information for this frame.
optional uint32 scroll_offset_x = 7;
optional uint32 scroll_offset_y = 8;
// Position information for this frame if it is clipped.
optional uint32 frame_offset_x = 9;
optional uint32 frame_offset_y = 10;
}
// Stores Chrome version.
// NEXT_TAG = 5
message ChromeVersionProto {
optional uint64 major = 1;
optional uint64 minor = 2;
optional uint64 build = 3;
optional uint64 patch = 4;
}
// Metadata for the capture.
// NEXT_TAG = 5
message MetadataProto {
// URL of the root frame.
// required
optional string url = 1;
// Records the version number of the recording. Should be incremented if there
// is a breaking change to the custorm SkPicture deserialization or storage
// system.
optional uint64 version = 2;
// Records the version of Chrome when the capture occurred.
optional ChromeVersionProto chrome_version = 3;
// Records the page scale factor of the page when it was captured.
optional float page_scale_factor = 4;
}
// A paint preview of the entire page.
// NEXT_TAG = 4
message PaintPreviewProto {
// The root frame of the RenderFrame tree. This is often the main frame, but
// may be a root node of a subtree (e.g. paint preview of an iframe).
// required
optional PaintPreviewFrameProto root_frame = 1;
repeated PaintPreviewFrameProto subframes = 2;
// required
optional MetadataProto metadata = 3;
}