提交 3a5dd866 编写于 作者: C Chinmay Garde

Add static assert to check that all Dart wrappable instances are thread-safe reference-countable.

上级 6a5533ca
......@@ -11,13 +11,13 @@
#include "flow/layers/layer_tree.h"
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include "third_party/skia/include/core/SkPicture.h"
namespace blink {
class DartLibraryNatives;
class Scene : public RefCounted<Scene>, public DartWrappable {
class Scene : public ThreadSafeRefCounted<Scene>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
......
......@@ -21,11 +21,11 @@
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/tonic/float64_list.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
namespace blink {
class SceneBuilder : public RefCounted<SceneBuilder>, public DartWrappable {
class SceneBuilder : public ThreadSafeRefCounted<SceneBuilder>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
static PassRefPtr<SceneBuilder> create() {
......
......@@ -18,7 +18,7 @@
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/tonic/float64_list.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include "third_party/skia/include/core/SkCanvas.h"
namespace blink {
......@@ -29,7 +29,7 @@ class Paragraph;
template <>
struct DartConverter<SkCanvas::VertexMode> : public DartConverterInteger<SkCanvas::VertexMode> {};
class Canvas : public RefCounted<Canvas>, public DartWrappable {
class Canvas : public ThreadSafeRefCounted<Canvas>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
static PassRefPtr<Canvas> create(PictureRecorder* recorder, Rect& bounds);
......
......@@ -7,13 +7,13 @@
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include "third_party/skia/include/core/SkImage.h"
namespace blink {
class DartLibraryNatives;
class CanvasImage final : public RefCounted<CanvasImage>,
class CanvasImage final : public ThreadSafeRefCounted<CanvasImage>,
public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
......
......@@ -12,7 +12,7 @@
#include "sky/engine/core/painting/RRect.h"
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include "third_party/skia/include/core/SkPath.h"
// Note: There's a very similar class in ../../platform/graphics/Path.h
......@@ -22,7 +22,7 @@
namespace blink {
class DartLibraryNatives;
class CanvasPath : public RefCounted<CanvasPath>, public DartWrappable {
class CanvasPath : public ThreadSafeRefCounted<CanvasPath>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
~CanvasPath() override;
......
......@@ -9,13 +9,13 @@
#include "sky/engine/core/painting/TransferMode.h"
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include "third_party/skia/include/core/SkColorFilter.h"
namespace blink {
class DartLibraryNatives;
class ColorFilter : public RefCounted<ColorFilter>, public DartWrappable {
class ColorFilter : public ThreadSafeRefCounted<ColorFilter>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
~ColorFilter() override;
......
......@@ -7,14 +7,14 @@
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
class SkMaskFilter;
namespace blink {
class DartLibraryNatives;
class MaskFilter : public RefCounted<MaskFilter>, public DartWrappable {
class MaskFilter : public ThreadSafeRefCounted<MaskFilter>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
~MaskFilter() override;
......
......@@ -7,14 +7,14 @@
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include "third_party/skia/include/core/SkPicture.h"
namespace blink {
class Canvas;
class DartLibraryNatives;
class Picture : public RefCounted<Picture>, public DartWrappable {
class Picture : public ThreadSafeRefCounted<Picture>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
~Picture() override;
......
......@@ -8,7 +8,7 @@
#include "sky/engine/core/painting/Rect.h"
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include "third_party/skia/include/core/SkPictureRecorder.h"
namespace blink {
......@@ -16,7 +16,7 @@ class Canvas;
class DartLibraryNatives;
class Picture;
class PictureRecorder : public RefCounted<PictureRecorder>,
class PictureRecorder : public ThreadSafeRefCounted<PictureRecorder>,
public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
......
......@@ -7,12 +7,12 @@
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include "third_party/skia/include/core/SkShader.h"
namespace blink {
class Shader : public RefCounted<Shader>, public DartWrappable {
class Shader : public ThreadSafeRefCounted<Shader>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
~Shader() override;
......
......@@ -4,12 +4,14 @@
#include "sky/engine/core/text/ParagraphBuilder.h"
#include "base/location.h"
#include "sky/engine/core/painting/Rect.h"
#include "sky/engine/core/rendering/PaintInfo.h"
#include "sky/engine/core/rendering/RenderText.h"
#include "sky/engine/core/rendering/style/RenderStyle.h"
#include "sky/engine/platform/fonts/FontCache.h"
#include "sky/engine/platform/graphics/GraphicsContext.h"
#include "sky/engine/public/platform/Platform.h"
#include "sky/engine/tonic/dart_args.h"
#include "sky/engine/tonic/dart_binding_macros.h"
#include "sky/engine/tonic/dart_converter.h"
......@@ -47,6 +49,8 @@ Paragraph::Paragraph(PassOwnPtr<RenderView> renderView)
Paragraph::~Paragraph()
{
base::SingleThreadTaskRunner* runner = Platform::current()->GetUITaskRunner();
runner->DeleteSoon(FROM_HERE, m_renderView.leakPtr());
}
double Paragraph::width()
......
......@@ -7,7 +7,7 @@
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include "sky/engine/core/painting/Canvas.h"
#include "sky/engine/core/painting/Offset.h"
#include "sky/engine/core/rendering/RenderView.h"
......@@ -16,7 +16,7 @@
namespace blink {
class DartLibraryNatives;
class Paragraph : public RefCounted<Paragraph>, public DartWrappable {
class Paragraph : public ThreadSafeRefCounted<Paragraph>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
static PassRefPtr<Paragraph> create(PassOwnPtr<RenderView> renderView) {
......
......@@ -4,12 +4,14 @@
#include "sky/engine/core/text/ParagraphBuilder.h"
#include "base/location.h"
#include "sky/engine/core/rendering/RenderInline.h"
#include "sky/engine/core/rendering/RenderParagraph.h"
#include "sky/engine/core/rendering/RenderText.h"
#include "sky/engine/core/rendering/style/RenderStyle.h"
#include "sky/engine/core/script/ui_dart_state.h"
#include "sky/engine/platform/text/LocaleToScriptMapping.h"
#include "sky/engine/public/platform/Platform.h"
#include "sky/engine/tonic/dart_args.h"
#include "sky/engine/tonic/dart_binding_macros.h"
#include "sky/engine/tonic/dart_converter.h"
......@@ -135,6 +137,8 @@ ParagraphBuilder::ParagraphBuilder()
ParagraphBuilder::~ParagraphBuilder()
{
base::SingleThreadTaskRunner* runner = Platform::current()->GetUITaskRunner();
runner->DeleteSoon(FROM_HERE, m_renderView.leakPtr());
}
void ParagraphBuilder::pushStyle(Int32List& encoded, const std::string& fontFamily, double fontSize, double letterSpacing, double wordSpacing, double lineHeight)
......
......@@ -9,12 +9,12 @@
#include "sky/engine/tonic/dart_wrappable.h"
#include "sky/engine/tonic/int32_list.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefCounted.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
namespace blink {
class DartLibraryNatives;
class ParagraphBuilder : public RefCounted<ParagraphBuilder>, public DartWrappable {
class ParagraphBuilder : public ThreadSafeRefCounted<ParagraphBuilder>, public DartWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
static PassRefPtr<ParagraphBuilder> create() {
......
......@@ -14,6 +14,9 @@
#include "sky/engine/tonic/dart_wrapper_info.h"
#include "sky/engine/wtf/PassRefPtr.h"
#include "sky/engine/wtf/RefPtr.h"
#include "sky/engine/wtf/ThreadSafeRefCounted.h"
#include <type_traits>
namespace blink {
class DartGCVisitor;
......@@ -82,7 +85,9 @@ static const DartWrapperInfo kDartWrapperInfo_##LibraryName_##ClassName = { \
&DerefObject_##LibraryName_##ClassName, \
}; \
const DartWrapperInfo& ClassName::dart_wrapper_info_ = \
kDartWrapperInfo_##LibraryName_##ClassName;
kDartWrapperInfo_##LibraryName_##ClassName; \
static_assert(std::is_base_of<WTF::ThreadSafeRefCountedBase, ClassName>::value,\
#ClassName " must be thread-safe reference-countable.");
struct DartConverterWrappable {
static DartWrappable* FromDart(Dart_Handle handle);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册