Commit ab94cfee authored by Alan Screen's avatar Alan Screen Committed by Commit Bot

Identify printing metafile context more concisely for pictures

Serialization support of metafiles will soon be expanded to handle
font typefaces.  Clarify the naming of the existing support for pictures
ahead of the addition of contextual support for typefaces.

Bug: 1044996
Change-Id: I4e8f52026276a6a5e5b81f77818b1022d3f24033
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2264619Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Commit-Queue: Alan Screen <awscreen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#782040}
parent 2adab305
...@@ -358,8 +358,8 @@ mojom::PrintCompositor::Status PrintCompositorImpl::CompositeToPdf( ...@@ -358,8 +358,8 @@ mojom::PrintCompositor::Status PrintCompositorImpl::CompositeToPdf(
return mojom::PrintCompositor::Status::kHandleMapError; return mojom::PrintCompositor::Status::kHandleMapError;
} }
DeserializationContext subframes = PictureDeserializationContext subframes =
GetDeserializationContext(subframe_content_map); GetPictureDeserializationContext(subframe_content_map);
// Read in content and convert it into pdf. // Read in content and convert it into pdf.
SkMemoryStream stream(shared_mem.memory(), shared_mem.size()); SkMemoryStream stream(shared_mem.memory(), shared_mem.size());
...@@ -418,8 +418,8 @@ void PrintCompositorImpl::CompositeSubframe(FrameInfo* frame_info) { ...@@ -418,8 +418,8 @@ void PrintCompositorImpl::CompositeSubframe(FrameInfo* frame_info) {
frame_info->composited = true; frame_info->composited = true;
// Composite subframes first. // Composite subframes first.
DeserializationContext subframes = PictureDeserializationContext subframes =
GetDeserializationContext(frame_info->subframe_content_map); GetPictureDeserializationContext(frame_info->subframe_content_map);
// Composite the entire frame. // Composite the entire frame.
SkMemoryStream stream(frame_info->serialized_content.memory(), SkMemoryStream stream(frame_info->serialized_content.memory(),
...@@ -428,10 +428,10 @@ void PrintCompositorImpl::CompositeSubframe(FrameInfo* frame_info) { ...@@ -428,10 +428,10 @@ void PrintCompositorImpl::CompositeSubframe(FrameInfo* frame_info) {
frame_info->content = SkPicture::MakeFromStream(&stream, &procs); frame_info->content = SkPicture::MakeFromStream(&stream, &procs);
} }
PrintCompositorImpl::DeserializationContext PrintCompositorImpl::PictureDeserializationContext
PrintCompositorImpl::GetDeserializationContext( PrintCompositorImpl::GetPictureDeserializationContext(
const ContentToFrameMap& subframe_content_map) { const ContentToFrameMap& subframe_content_map) {
DeserializationContext subframes; PictureDeserializationContext subframes;
for (auto& content_info : subframe_content_map) { for (auto& content_info : subframe_content_map) {
uint32_t content_id = content_info.first; uint32_t content_id = content_info.first;
uint64_t frame_guid = content_info.second; uint64_t frame_guid = content_info.second;
......
...@@ -123,7 +123,8 @@ class PrintCompositorImpl : public mojom::PrintCompositor { ...@@ -123,7 +123,8 @@ class PrintCompositorImpl : public mojom::PrintCompositor {
// The map needed during content deserialization. It stores the mapping // The map needed during content deserialization. It stores the mapping
// between content id and its actual content. // between content id and its actual content.
using DeserializationContext = base::flat_map<uint32_t, sk_sp<SkPicture>>; using PictureDeserializationContext =
base::flat_map<uint32_t, sk_sp<SkPicture>>;
// Base structure to store a frame's content and its subframe // Base structure to store a frame's content and its subframe
// content information. // content information.
...@@ -218,7 +219,7 @@ class PrintCompositorImpl : public mojom::PrintCompositor { ...@@ -218,7 +219,7 @@ class PrintCompositorImpl : public mojom::PrintCompositor {
// Composite the content of a subframe. // Composite the content of a subframe.
void CompositeSubframe(FrameInfo* frame_info); void CompositeSubframe(FrameInfo* frame_info);
DeserializationContext GetDeserializationContext( PictureDeserializationContext GetPictureDeserializationContext(
const ContentToFrameMap& subframe_content_map); const ContentToFrameMap& subframe_content_map);
mojo::Receiver<mojom::PrintCompositor> receiver_{this}; mojo::Receiver<mojom::PrintCompositor> receiver_{this};
......
...@@ -233,7 +233,7 @@ sk_sp<SkPicture> DeserializeOopPicture(const void* data, ...@@ -233,7 +233,7 @@ sk_sp<SkPicture> DeserializeOopPicture(const void* data,
} }
memcpy(&pic_id, data, sizeof(pic_id)); memcpy(&pic_id, data, sizeof(pic_id));
auto* context = reinterpret_cast<DeserializationContext*>(ctx); auto* context = reinterpret_cast<PictureDeserializationContext*>(ctx);
auto iter = context->find(pic_id); auto iter = context->find(pic_id);
if (iter == context->end() || !iter->second) { if (iter == context->end() || !iter->second) {
// When we don't have the out-of-process picture available, we return // When we don't have the out-of-process picture available, we return
...@@ -244,17 +244,18 @@ sk_sp<SkPicture> DeserializeOopPicture(const void* data, ...@@ -244,17 +244,18 @@ sk_sp<SkPicture> DeserializeOopPicture(const void* data,
return iter->second; return iter->second;
} }
SkSerialProcs SerializationProcs(SerializationContext* ctx) { SkSerialProcs SerializationProcs(PictureSerializationContext* picture_ctx) {
SkSerialProcs procs; SkSerialProcs procs;
procs.fPictureProc = SerializeOopPicture; procs.fPictureProc = SerializeOopPicture;
procs.fPictureCtx = ctx; procs.fPictureCtx = picture_ctx;
return procs; return procs;
} }
SkDeserialProcs DeserializationProcs(DeserializationContext* ctx) { SkDeserialProcs DeserializationProcs(
PictureDeserializationContext* picture_ctx) {
SkDeserialProcs procs; SkDeserialProcs procs;
procs.fPictureProc = DeserializeOopPicture; procs.fPictureProc = DeserializeOopPicture;
procs.fPictureCtx = ctx; procs.fPictureCtx = picture_ctx;
return procs; return procs;
} }
......
...@@ -20,19 +20,21 @@ namespace printing { ...@@ -20,19 +20,21 @@ namespace printing {
using ContentToProxyIdMap = base::flat_map<uint32_t, int>; using ContentToProxyIdMap = base::flat_map<uint32_t, int>;
// Stores the mapping between a content's unique id and its actual content. // Stores the mapping between a content's unique id and its actual content.
using DeserializationContext = base::flat_map<uint32_t, sk_sp<SkPicture>>; using PictureDeserializationContext =
base::flat_map<uint32_t, sk_sp<SkPicture>>;
// Stores the mapping between content's unique id and its corresponding frame // Stores the mapping between content's unique id and its corresponding frame
// proxy id. // proxy id.
using SerializationContext = ContentToProxyIdMap; using PictureSerializationContext = ContentToProxyIdMap;
sk_sp<SkDocument> MakePdfDocument(const std::string& creator, sk_sp<SkDocument> MakePdfDocument(const std::string& creator,
const ui::AXTreeUpdate& accessibility_tree, const ui::AXTreeUpdate& accessibility_tree,
SkWStream* stream); SkWStream* stream);
SkSerialProcs SerializationProcs(SerializationContext* ctx); SkSerialProcs SerializationProcs(PictureSerializationContext* picture_ctx);
SkDeserialProcs DeserializationProcs(DeserializationContext* ctx); SkDeserialProcs DeserializationProcs(
PictureDeserializationContext* picture_ctx);
} // namespace printing } // namespace printing
......
...@@ -53,7 +53,7 @@ TEST(MetafileSkiaTest, TestFrameContent) { ...@@ -53,7 +53,7 @@ TEST(MetafileSkiaTest, TestFrameContent) {
EXPECT_TRUE(picture); EXPECT_TRUE(picture);
// Get the complete picture by replacing the placeholder. // Get the complete picture by replacing the placeholder.
DeserializationContext subframes; PictureDeserializationContext subframes;
subframes[content_id] = picture; subframes[content_id] = picture;
SkDeserialProcs procs = DeserializationProcs(&subframes); SkDeserialProcs procs = DeserializationProcs(&subframes);
sk_sp<SkPicture> pic = SkPicture::MakeFromStream(metafile_stream, &procs); sk_sp<SkPicture> pic = SkPicture::MakeFromStream(metafile_stream, &procs);
......
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