Commit 1bb626cb authored by Dave Tapuska's avatar Dave Tapuska Committed by Commit Bot

Allow skia types to be typemapped into blink.

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/+/1899316Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarFlorin Malita <fmalita@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713573}
parent 74eb15ee
...@@ -10,6 +10,7 @@ _typemap_imports = [ ...@@ -10,6 +10,7 @@ _typemap_imports = [
"//cc/typemaps.gni", "//cc/typemaps.gni",
"//device/gamepad/public/cpp/typemaps.gni", "//device/gamepad/public/cpp/typemaps.gni",
"//mojo/public/cpp/bindings/tests/blink_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/renderer/platform/mojo/blink_typemaps.gni",
"//third_party/blink/public/blink_typemaps.gni", "//third_party/blink/public/blink_typemaps.gni",
] ]
......
...@@ -4,6 +4,29 @@ ...@@ -4,6 +4,29 @@
import("//mojo/public/tools/bindings/mojom.gni") 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") { mojom("mojom") {
generate_java = true generate_java = true
sources = [ sources = [
......
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
#ifndef SKIA_PUBLIC_MOJOM_BITMAP_SKBITMAP_MOJOM_TRAITS_H_ #ifndef SKIA_PUBLIC_MOJOM_BITMAP_SKBITMAP_MOJOM_TRAITS_H_
#define 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 "base/containers/span.h"
#include "mojo/public/cpp/base/big_buffer.h" #include "mojo/public/cpp/base/big_buffer.h"
#include "mojo/public/cpp/base/big_buffer_mojom_traits.h" #include "mojo/public/cpp/base/big_buffer_mojom_traits.h"
#include "mojo/public/cpp/bindings/array_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 "skia/public/mojom/image_info_mojom_traits.h"
#include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkBitmap.h"
...@@ -17,7 +18,8 @@ namespace mojo { ...@@ -17,7 +18,8 @@ namespace mojo {
// Struct traits to use SkBitmap for skia::mojom::Bitmap in Chrome C++ code. // Struct traits to use SkBitmap for skia::mojom::Bitmap in Chrome C++ code.
template <> 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 bool IsNull(const SkBitmap& b);
static void SetToNull(SkBitmap* b); static void SetToNull(SkBitmap* b);
static const SkImageInfo& image_info(const SkBitmap& b); static const SkImageInfo& image_info(const SkBitmap& b);
...@@ -27,7 +29,8 @@ struct StructTraits<skia::mojom::BitmapDataView, SkBitmap> { ...@@ -27,7 +29,8 @@ struct StructTraits<skia::mojom::BitmapDataView, SkBitmap> {
}; };
template <> 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 bool IsNull(const SkBitmap& b);
static void SetToNull(SkBitmap* b); static void SetToNull(SkBitmap* b);
static const SkImageInfo& image_info(const SkBitmap& b); static const SkImageInfo& image_info(const SkBitmap& b);
......
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "skia/public/mojom/image_filter_mojom_traits.h"
namespace mojo {
ImageFilterBuffer::ImageFilterBuffer() = default;
ImageFilterBuffer::ImageFilterBuffer(const ImageFilterBuffer& other) = default;
ImageFilterBuffer::~ImageFilterBuffer() = default;
// static
size_t ArrayTraits<ImageFilterBuffer>::GetSize(const ImageFilterBuffer& b) {
return b.data->size();
}
// static
uint8_t* ArrayTraits<ImageFilterBuffer>::GetData(ImageFilterBuffer& b) {
return static_cast<uint8_t*>(b.data->writable_data());
}
// static
const uint8_t* ArrayTraits<ImageFilterBuffer>::GetData(
const ImageFilterBuffer& b) {
return b.data->bytes();
}
// static
uint8_t& ArrayTraits<ImageFilterBuffer>::GetAt(ImageFilterBuffer& b, size_t i) {
return *(static_cast<uint8_t*>(b.data->writable_data()) + i);
}
// static
const uint8_t& ArrayTraits<ImageFilterBuffer>::GetAt(const ImageFilterBuffer& b,
size_t i) {
return *(b.data->bytes() + i);
}
// static
bool ArrayTraits<ImageFilterBuffer>::Resize(ImageFilterBuffer& b, size_t size) {
if (b.data)
return size == b.data->size();
b.data = SkData::MakeUninitialized(size);
return true;
}
} // namespace mojo
...@@ -7,13 +7,15 @@ ...@@ -7,13 +7,15 @@
#include <vector> #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" #include "third_party/skia/include/core/SkImageInfo.h"
namespace mojo { namespace mojo {
template <> 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::ColorType color_type(const SkImageInfo& info);
static skia::mojom::AlphaType alpha_type(const SkImageInfo& info); static skia::mojom::AlphaType alpha_type(const SkImageInfo& info);
static std::vector<uint8_t> serialized_color_space(const SkImageInfo& info); static std::vector<uint8_t> serialized_color_space(const SkImageInfo& info);
......
...@@ -5,14 +5,12 @@ ...@@ -5,14 +5,12 @@
mojom = "//skia/public/mojom/bitmap.mojom" mojom = "//skia/public/mojom/bitmap.mojom"
public_headers = [ "//third_party/skia/include/core/SkBitmap.h" ] public_headers = [ "//third_party/skia/include/core/SkBitmap.h" ]
traits_headers = [ "//skia/public/mojom/bitmap_skbitmap_mojom_traits.h" ] traits_headers = [ "//skia/public/mojom/bitmap_skbitmap_mojom_traits.h" ]
sources = [
"//skia/public/mojom/bitmap_skbitmap_mojom_traits.cc",
]
deps = [ deps = [
"//mojo/public/cpp/bindings", "//mojo/public/cpp/bindings",
] ]
public_deps = [ public_deps = [
"//skia", "//skia",
"//skia/public/mojom:shared_typemap_traits",
] ]
type_mappings = [ type_mappings = [
"skia.mojom.Bitmap=::SkBitmap[nullable_is_same_type]", "skia.mojom.Bitmap=::SkBitmap[nullable_is_same_type]",
......
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
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" ]
deps = [
"//mojo/public/cpp/bindings",
]
public_deps = [
"//skia",
"//skia/public/mojom",
]
type_mappings = [ "skia.mojom.Bitmap=::SkBitmap[nullable_is_same_type]" ]
...@@ -5,13 +5,11 @@ ...@@ -5,13 +5,11 @@
mojom = "//skia/public/mojom/image_info.mojom" mojom = "//skia/public/mojom/image_info.mojom"
public_headers = [ "//third_party/skia/include/core/SkImageInfo.h" ] public_headers = [ "//third_party/skia/include/core/SkImageInfo.h" ]
traits_headers = [ "//skia/public/mojom/image_info_mojom_traits.h" ] traits_headers = [ "//skia/public/mojom/image_info_mojom_traits.h" ]
sources = [
"//skia/public/mojom/image_info_mojom_traits.cc",
]
deps = [ deps = [
"//mojo/public/cpp/bindings", "//mojo/public/cpp/bindings",
] ]
public_deps = [ public_deps = [
"//skia", "//skia",
"//skia/public/mojom:shared_typemap_traits",
] ]
type_mappings = [ "skia.mojom.ImageInfo=::SkImageInfo" ] type_mappings = [ "skia.mojom.ImageInfo=::SkImageInfo" ]
...@@ -23,7 +23,6 @@ typemaps = [ ...@@ -23,7 +23,6 @@ typemaps = [
"//services/viz/public/cpp/compositing/returned_resource.typemap", "//services/viz/public/cpp/compositing/returned_resource.typemap",
"//services/viz/public/cpp/compositing/surface_id.typemap", "//services/viz/public/cpp/compositing/surface_id.typemap",
"//services/viz/public/cpp/compositing/surface_info.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/display/mojom/display_rotation_for_blink.typemap",
"//ui/gfx/mojom/gpu_fence_handle_for_blink.typemap", "//ui/gfx/mojom/gpu_fence_handle_for_blink.typemap",
] ]
...@@ -144,6 +144,7 @@ source_set("headers") { ...@@ -144,6 +144,7 @@ source_set("headers") {
public_deps = [ public_deps = [
"//services/network/public/cpp:cpp", "//services/network/public/cpp:cpp",
"//skia", "//skia",
"//skia/public/mojom:shared_typemap_traits",
"//third_party/blink/public/mojom:mojom_modules_headers", "//third_party/blink/public/mojom:mojom_modules_headers",
"//third_party/blink/public/mojom:web_bluetooth_mojo_bindings_headers", "//third_party/blink/public/mojom:web_bluetooth_mojo_bindings_headers",
] ]
......
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