Skip to content

Commit

Permalink
Allow skia types to be typemapped into blink.
Browse files Browse the repository at this point in the history
Define shared skia component for the mojom traits so it can link correctly.
Remove unused image_filter_mojom_traits.cc and the
skbitmap_for_blink.typemap that is unneeded in this refined setup.

BUG=1008432

Change-Id: I8045cdeff554ea471875d1bf0f276287db208db6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1899316
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713573}
  • Loading branch information
dtapuska authored and Commit Bot committed Nov 7, 2019
1 parent 74eb15e commit 1bb626c
Show file tree
Hide file tree
Showing 10 changed files with 37 additions and 77 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ _typemap_imports = [
"//cc/typemaps.gni",
"//device/gamepad/public/cpp/typemaps.gni",
"//mojo/public/cpp/bindings/tests/blink_typemaps.gni",
"//skia/public/mojom/typemaps.gni",
"//third_party/blink/renderer/platform/mojo/blink_typemaps.gni",
"//third_party/blink/public/blink_typemaps.gni",
]
Expand Down
23 changes: 23 additions & 0 deletions skia/public/mojom/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,29 @@

import("//mojo/public/tools/bindings/mojom.gni")

# Normally typemap traits sources should be build directly into mojom targets
# via the typemap file. This target is for typemapped mojo_base types whose
# traits are shared between chromium and blink variants.
component("shared_typemap_traits") {
output_name = "skia_shared_typemap_traits"

sources = [
"bitmap_skbitmap_mojom_traits.cc",
"bitmap_skbitmap_mojom_traits.h",
"image_info_mojom_traits.cc",
"image_info_mojom_traits.h",
]

defines = [ "IS_SKIA_SHARED_TRAITS_IMPL" ]

public_deps = [
"//base",
"//mojo/public/cpp/base:shared_typemap_traits",
"//skia",
"//skia/public/mojom:mojom_shared",
]
}

mojom("mojom") {
generate_java = true
sources = [
Expand Down
9 changes: 6 additions & 3 deletions skia/public/mojom/bitmap_skbitmap_mojom_traits.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,21 @@
#ifndef SKIA_PUBLIC_MOJOM_BITMAP_SKBITMAP_MOJOM_TRAITS_H_
#define SKIA_PUBLIC_MOJOM_BITMAP_SKBITMAP_MOJOM_TRAITS_H_

#include "base/component_export.h"
#include "base/containers/span.h"
#include "mojo/public/cpp/base/big_buffer.h"
#include "mojo/public/cpp/base/big_buffer_mojom_traits.h"
#include "mojo/public/cpp/bindings/array_traits.h"
#include "skia/public/mojom/bitmap.mojom.h"
#include "skia/public/mojom/bitmap.mojom-shared.h"
#include "skia/public/mojom/image_info_mojom_traits.h"
#include "third_party/skia/include/core/SkBitmap.h"

namespace mojo {

// Struct traits to use SkBitmap for skia::mojom::Bitmap in Chrome C++ code.
template <>
struct StructTraits<skia::mojom::BitmapDataView, SkBitmap> {
struct COMPONENT_EXPORT(SKIA_SHARED_TRAITS)
StructTraits<skia::mojom::BitmapDataView, SkBitmap> {
static bool IsNull(const SkBitmap& b);
static void SetToNull(SkBitmap* b);
static const SkImageInfo& image_info(const SkBitmap& b);
Expand All @@ -27,7 +29,8 @@ struct StructTraits<skia::mojom::BitmapDataView, SkBitmap> {
};

template <>
struct StructTraits<skia::mojom::InlineBitmapDataView, SkBitmap> {
struct COMPONENT_EXPORT(SKIA_SHARED_TRAITS)
StructTraits<skia::mojom::InlineBitmapDataView, SkBitmap> {
static bool IsNull(const SkBitmap& b);
static void SetToNull(SkBitmap* b);
static const SkImageInfo& image_info(const SkBitmap& b);
Expand Down
50 changes: 0 additions & 50 deletions skia/public/mojom/image_filter_mojom_traits.cc

This file was deleted.

6 changes: 4 additions & 2 deletions skia/public/mojom/image_info_mojom_traits.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@

#include <vector>

#include "skia/public/mojom/image_info.mojom.h"
#include "base/component_export.h"
#include "skia/public/mojom/image_info.mojom-shared.h"
#include "third_party/skia/include/core/SkImageInfo.h"

namespace mojo {

template <>
struct StructTraits<skia::mojom::ImageInfoDataView, SkImageInfo> {
struct COMPONENT_EXPORT(SKIA_SHARED_TRAITS)
StructTraits<skia::mojom::ImageInfoDataView, SkImageInfo> {
static skia::mojom::ColorType color_type(const SkImageInfo& info);
static skia::mojom::AlphaType alpha_type(const SkImageInfo& info);
static std::vector<uint8_t> serialized_color_space(const SkImageInfo& info);
Expand Down
4 changes: 1 addition & 3 deletions skia/public/mojom/skbitmap.typemap
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@
mojom = "//skia/public/mojom/bitmap.mojom"
public_headers = [ "//third_party/skia/include/core/SkBitmap.h" ]
traits_headers = [ "//skia/public/mojom/bitmap_skbitmap_mojom_traits.h" ]
sources = [
"//skia/public/mojom/bitmap_skbitmap_mojom_traits.cc",
]
deps = [
"//mojo/public/cpp/bindings",
]
public_deps = [
"//skia",
"//skia/public/mojom:shared_typemap_traits",
]
type_mappings = [
"skia.mojom.Bitmap=::SkBitmap[nullable_is_same_type]",
Expand Down
15 changes: 0 additions & 15 deletions skia/public/mojom/skbitmap_for_blink.typemap

This file was deleted.

4 changes: 1 addition & 3 deletions skia/public/mojom/skimageinfo.typemap
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@
mojom = "//skia/public/mojom/image_info.mojom"
public_headers = [ "//third_party/skia/include/core/SkImageInfo.h" ]
traits_headers = [ "//skia/public/mojom/image_info_mojom_traits.h" ]
sources = [
"//skia/public/mojom/image_info_mojom_traits.cc",
]
deps = [
"//mojo/public/cpp/bindings",
]
public_deps = [
"//skia",
"//skia/public/mojom:shared_typemap_traits",
]
type_mappings = [ "skia.mojom.ImageInfo=::SkImageInfo" ]
1 change: 0 additions & 1 deletion third_party/blink/public/blink_typemaps.gni
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ typemaps = [
"//services/viz/public/cpp/compositing/returned_resource.typemap",
"//services/viz/public/cpp/compositing/surface_id.typemap",
"//services/viz/public/cpp/compositing/surface_info.typemap",
"//skia/public/mojom/skbitmap_for_blink.typemap",
"//ui/display/mojom/display_rotation_for_blink.typemap",
"//ui/gfx/mojom/gpu_fence_handle_for_blink.typemap",
]
1 change: 1 addition & 0 deletions third_party/blink/public/common/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ source_set("headers") {
public_deps = [
"//services/network/public/cpp:cpp",
"//skia",
"//skia/public/mojom:shared_typemap_traits",
"//third_party/blink/public/mojom:mojom_modules_headers",
"//third_party/blink/public/mojom:web_bluetooth_mojo_bindings_headers",
]
Expand Down

0 comments on commit 1bb626c

Please sign in to comment.