blob: 21114d8e8d85cfab8d5d646020c5ec9395540d70 [file] [log] [blame]
// 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.
#include "components/viz/common/hit_test/aggregated_hit_test_region.h"
#include "components/viz/common/hit_test/hit_test_region_list.h"
#include "mojo/public/cpp/test_support/test_utils.h"
#include "services/viz/public/cpp/hit_test/aggregated_hit_test_region_struct_traits.h"
#include "services/viz/public/cpp/hit_test/hit_test_region_list_struct_traits.h"
#include "services/viz/public/interfaces/hit_test/aggregated_hit_test_region.mojom.h"
#include "services/viz/public/interfaces/hit_test/hit_test_region_list.mojom.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/mojo/geometry_struct_traits.h"
#include "ui/gfx/mojo/transform_struct_traits.h"
namespace viz {
TEST(StructTraitsTest, AggregatedHitTestRegion) {
constexpr FrameSinkId frame_sink_id(1337, 1234);
constexpr uint32_t flags = HitTestRegionFlags::kHitTestAsk;
constexpr uint32_t async_hit_test_reasons =
AsyncHitTestReasons::kOverlappedRegion;
constexpr gfx::Rect rect(1024, 768);
gfx::Transform transform;
transform.Scale(.5f, .7f);
constexpr int32_t child_count = 5;
AggregatedHitTestRegion input(frame_sink_id, flags, rect, transform,
child_count, async_hit_test_reasons);
AggregatedHitTestRegion output;
mojo::test::SerializeAndDeserialize<mojom::AggregatedHitTestRegion>(&input,
&output);
EXPECT_EQ(input.frame_sink_id, output.frame_sink_id);
EXPECT_EQ(input.flags, output.flags);
EXPECT_EQ(input.async_hit_test_reasons, output.async_hit_test_reasons);
EXPECT_EQ(input.rect, output.rect);
EXPECT_EQ(input.transform(), output.transform());
EXPECT_EQ(input.child_count, output.child_count);
}
TEST(StructTraitsTest, HitTestRegionList) {
base::Optional<HitTestRegionList> input(base::in_place);
input->flags = HitTestRegionFlags::kHitTestAsk;
input->async_hit_test_reasons = AsyncHitTestReasons::kOverlappedRegion;
input->bounds = gfx::Rect(1, 2, 3, 4);
input->transform.Scale(0.5f, 0.7f);
HitTestRegion input_region1;
input_region1.flags = HitTestRegionFlags::kHitTestIgnore;
input_region1.async_hit_test_reasons = AsyncHitTestReasons::kNotAsyncHitTest;
input_region1.frame_sink_id = FrameSinkId(12, 13);
input_region1.rect = gfx::Rect(4, 5, 6, 7);
input_region1.transform.Scale(1.2f, 1.3f);
input->regions.push_back(input_region1);
base::Optional<HitTestRegionList> output;
mojo::test::SerializeAndDeserialize<mojom::HitTestRegionList>(&input,
&output);
EXPECT_TRUE(output);
EXPECT_EQ(input->flags, output->flags);
EXPECT_EQ(input->async_hit_test_reasons, output->async_hit_test_reasons);
EXPECT_EQ(input->bounds, output->bounds);
EXPECT_EQ(input->transform, output->transform);
EXPECT_EQ(input->regions.size(), output->regions.size());
EXPECT_EQ(input->regions[0].flags, output->regions[0].flags);
EXPECT_EQ(input->regions[0].async_hit_test_reasons,
output->regions[0].async_hit_test_reasons);
EXPECT_EQ(input->regions[0].frame_sink_id, output->regions[0].frame_sink_id);
EXPECT_EQ(input->regions[0].rect, output->regions[0].rect);
EXPECT_EQ(input->regions[0].transform, output->regions[0].transform);
}
} // namespace viz