| // 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_SHELL_PLATFORM_COMMON_CLIENT_WRAPPER_TESTING_TEST_CODEC_EXTENSIONS_H_ |
| #define FLUTTER_SHELL_PLATFORM_COMMON_CLIENT_WRAPPER_TESTING_TEST_CODEC_EXTENSIONS_H_ |
| |
| #include "flutter/shell/platform/common/client_wrapper/include/flutter/encodable_value.h" |
| #include "flutter/shell/platform/common/client_wrapper/include/flutter/standard_codec_serializer.h" |
| |
| namespace flutter { |
| |
| // A representation of a point, for custom type testing of a simple type. |
| class Point { |
| public: |
| Point(int x, int y) : x_(x), y_(y) {} |
| ~Point() = default; |
| |
| int x() const { return x_; } |
| int y() const { return y_; } |
| |
| bool operator==(const Point& other) const { |
| return x_ == other.x_ && y_ == other.y_; |
| } |
| |
| private: |
| int x_; |
| int y_; |
| }; |
| |
| // A typed binary data object with extra fields, for custom type testing of a |
| // variable-length type that includes types handled by the core standard codec. |
| class SomeData { |
| public: |
| SomeData(const std::string& label, const std::vector<uint8_t>& data) |
| : label_(label), data_(data) {} |
| ~SomeData() = default; |
| |
| const std::string& label() const { return label_; } |
| const std::vector<uint8_t>& data() const { return data_; } |
| |
| private: |
| std::string label_; |
| std::vector<uint8_t> data_; |
| }; |
| |
| // Codec extension for Point. |
| class PointExtensionSerializer : public StandardCodecSerializer { |
| public: |
| PointExtensionSerializer(); |
| virtual ~PointExtensionSerializer(); |
| |
| static const PointExtensionSerializer& GetInstance(); |
| |
| // |TestCodecSerializer| |
| EncodableValue ReadValueOfType(uint8_t type, |
| ByteStreamReader* stream) const override; |
| |
| // |TestCodecSerializer| |
| void WriteValue(const EncodableValue& value, |
| ByteStreamWriter* stream) const override; |
| |
| private: |
| static constexpr uint8_t kPointType = 128; |
| }; |
| |
| // Codec extension for SomeData. |
| class SomeDataExtensionSerializer : public StandardCodecSerializer { |
| public: |
| SomeDataExtensionSerializer(); |
| virtual ~SomeDataExtensionSerializer(); |
| |
| static const SomeDataExtensionSerializer& GetInstance(); |
| |
| // |TestCodecSerializer| |
| EncodableValue ReadValueOfType(uint8_t type, |
| ByteStreamReader* stream) const override; |
| |
| // |TestCodecSerializer| |
| void WriteValue(const EncodableValue& value, |
| ByteStreamWriter* stream) const override; |
| |
| private: |
| static constexpr uint8_t kSomeDataType = 129; |
| }; |
| |
| } // namespace flutter |
| |
| #endif // FLUTTER_SHELL_PLATFORM_COMMON_CLIENT_WRAPPER_TESTING_TEST_CODEC_EXTENSIONS_H_ |