flutter_flutter/testing/test_metal_surface.h
Chinmay Garde ed30d77ab9 Setup a Metal test surface and add a new unit-test target that tests the testing utilities.
`//flutter/testing` now contains a lot of utilities used by other test targets.
This includes stuff like working with render targets that use either OpenGL or
Metal, fixtures for interacting with the Dart VM, test assertion predicates,
etc.. However, these utilities themselves are not tested as part of a standalone
test suite. Instead, only the test targets that include it exercise these
utilities. Since these are no longer trivial, a new test target has been added
that tests the testing utilities directly.
2019-11-22 23:03:34 -08:00

48 lines
1.3 KiB
C++

// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FLUTTER_TESTING_TEST_METAL_SURFACE_H_
#define FLUTTER_TESTING_TEST_METAL_SURFACE_H_
#include "flutter/fml/macros.h"
#include "third_party/skia/include/core/SkSize.h"
#include "third_party/skia/include/core/SkSurface.h"
#include "third_party/skia/include/gpu/GrContext.h"
namespace flutter {
//------------------------------------------------------------------------------
/// @brief Creates a MTLTexture backed SkSurface and context that can be
/// used to render to in unit-tests.
///
class TestMetalSurface {
public:
static bool PlatformSupportsMetal();
static std::unique_ptr<TestMetalSurface> Create(
SkISize surface_size = SkISize::MakeEmpty());
virtual ~TestMetalSurface();
virtual bool IsValid() const;
virtual sk_sp<GrContext> GetGrContext() const;
virtual sk_sp<SkSurface> GetSurface() const;
protected:
TestMetalSurface();
private:
std::unique_ptr<TestMetalSurface> impl_;
TestMetalSurface(std::unique_ptr<TestMetalSurface> impl);
FML_DISALLOW_COPY_AND_ASSIGN(TestMetalSurface);
};
} // namespace flutter
#endif // FLUTTER_TESTING_TEST_METAL_SURFACE_H_