Skip to content

Commit

Permalink
Identify printing metafile context more concisely for pictures
Browse files Browse the repository at this point in the history
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/+/2264619
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Alan Screen <awscreen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#782040}
  • Loading branch information
Alan Screen authored and Commit Bot committed Jun 24, 2020
1 parent 2adab30 commit ab94cfe
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 19 deletions.
14 changes: 7 additions & 7 deletions components/services/print_compositor/print_compositor_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -358,8 +358,8 @@ mojom::PrintCompositor::Status PrintCompositorImpl::CompositeToPdf(
return mojom::PrintCompositor::Status::kHandleMapError;
}

DeserializationContext subframes =
GetDeserializationContext(subframe_content_map);
PictureDeserializationContext subframes =
GetPictureDeserializationContext(subframe_content_map);

// Read in content and convert it into pdf.
SkMemoryStream stream(shared_mem.memory(), shared_mem.size());
Expand Down Expand Up @@ -418,8 +418,8 @@ void PrintCompositorImpl::CompositeSubframe(FrameInfo* frame_info) {
frame_info->composited = true;

// Composite subframes first.
DeserializationContext subframes =
GetDeserializationContext(frame_info->subframe_content_map);
PictureDeserializationContext subframes =
GetPictureDeserializationContext(frame_info->subframe_content_map);

// Composite the entire frame.
SkMemoryStream stream(frame_info->serialized_content.memory(),
Expand All @@ -428,10 +428,10 @@ void PrintCompositorImpl::CompositeSubframe(FrameInfo* frame_info) {
frame_info->content = SkPicture::MakeFromStream(&stream, &procs);
}

PrintCompositorImpl::DeserializationContext
PrintCompositorImpl::GetDeserializationContext(
PrintCompositorImpl::PictureDeserializationContext
PrintCompositorImpl::GetPictureDeserializationContext(
const ContentToFrameMap& subframe_content_map) {
DeserializationContext subframes;
PictureDeserializationContext subframes;
for (auto& content_info : subframe_content_map) {
uint32_t content_id = content_info.first;
uint64_t frame_guid = content_info.second;
Expand Down
5 changes: 3 additions & 2 deletions components/services/print_compositor/print_compositor_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ class PrintCompositorImpl : public mojom::PrintCompositor {

// The map needed during content deserialization. It stores the mapping
// 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
// content information.
Expand Down Expand Up @@ -218,7 +219,7 @@ class PrintCompositorImpl : public mojom::PrintCompositor {
// Composite the content of a subframe.
void CompositeSubframe(FrameInfo* frame_info);

DeserializationContext GetDeserializationContext(
PictureDeserializationContext GetPictureDeserializationContext(
const ContentToFrameMap& subframe_content_map);

mojo::Receiver<mojom::PrintCompositor> receiver_{this};
Expand Down
11 changes: 6 additions & 5 deletions printing/common/metafile_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ sk_sp<SkPicture> DeserializeOopPicture(const void* data,
}
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);
if (iter == context->end() || !iter->second) {
// When we don't have the out-of-process picture available, we return
Expand All @@ -244,17 +244,18 @@ sk_sp<SkPicture> DeserializeOopPicture(const void* data,
return iter->second;
}

SkSerialProcs SerializationProcs(SerializationContext* ctx) {
SkSerialProcs SerializationProcs(PictureSerializationContext* picture_ctx) {
SkSerialProcs procs;
procs.fPictureProc = SerializeOopPicture;
procs.fPictureCtx = ctx;
procs.fPictureCtx = picture_ctx;
return procs;
}

SkDeserialProcs DeserializationProcs(DeserializationContext* ctx) {
SkDeserialProcs DeserializationProcs(
PictureDeserializationContext* picture_ctx) {
SkDeserialProcs procs;
procs.fPictureProc = DeserializeOopPicture;
procs.fPictureCtx = ctx;
procs.fPictureCtx = picture_ctx;
return procs;
}

Expand Down
10 changes: 6 additions & 4 deletions printing/common/metafile_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,21 @@ namespace printing {
using ContentToProxyIdMap = base::flat_map<uint32_t, int>;

// 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
// proxy id.
using SerializationContext = ContentToProxyIdMap;
using PictureSerializationContext = ContentToProxyIdMap;

sk_sp<SkDocument> MakePdfDocument(const std::string& creator,
const ui::AXTreeUpdate& accessibility_tree,
SkWStream* stream);

SkSerialProcs SerializationProcs(SerializationContext* ctx);
SkSerialProcs SerializationProcs(PictureSerializationContext* picture_ctx);

SkDeserialProcs DeserializationProcs(DeserializationContext* ctx);
SkDeserialProcs DeserializationProcs(
PictureDeserializationContext* picture_ctx);

} // namespace printing

Expand Down
2 changes: 1 addition & 1 deletion printing/metafile_skia_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ TEST(MetafileSkiaTest, TestFrameContent) {
EXPECT_TRUE(picture);

// Get the complete picture by replacing the placeholder.
DeserializationContext subframes;
PictureDeserializationContext subframes;
subframes[content_id] = picture;
SkDeserialProcs procs = DeserializationProcs(&subframes);
sk_sp<SkPicture> pic = SkPicture::MakeFromStream(metafile_stream, &procs);
Expand Down

0 comments on commit ab94cfe

Please sign in to comment.