Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "remoting/client/desktop_viewport.h" | 5 #include "remoting/client/desktop_viewport.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 21 public: | 21 public: |
| 22 void SetUp() override; | 22 void SetUp() override; |
| 23 void TearDown() override; | 23 void TearDown() override; |
| 24 | 24 |
| 25 protected: | 25 protected: |
| 26 void AssertTransformationReceived(const tracked_objects::Location& from_here, | 26 void AssertTransformationReceived(const tracked_objects::Location& from_here, |
| 27 float scale, | 27 float scale, |
| 28 float offset_x, | 28 float offset_x, |
| 29 float offset_y); | 29 float offset_y); |
| 30 | 30 |
| 31 ViewMatrix ReleaseReceivedTransformation(); | |
| 32 | |
| 31 DesktopViewport viewport_; | 33 DesktopViewport viewport_; |
| 32 | 34 |
| 33 private: | 35 private: |
| 36 ViewMatrix received_transformation_; | |
|
joedow
2017/05/03 14:53:17
nit: typically methods are listed before member va
Yuwei
2017/05/03 18:21:44
Done.
| |
| 37 | |
| 34 void OnTransformationChanged(const ViewMatrix& matrix); | 38 void OnTransformationChanged(const ViewMatrix& matrix); |
| 35 | |
| 36 ViewMatrix received_transformation_; | |
| 37 }; | 39 }; |
| 38 | 40 |
| 39 void DesktopViewportTest::SetUp() { | 41 void DesktopViewportTest::SetUp() { |
| 40 viewport_.RegisterOnTransformationChangedCallback( | 42 viewport_.RegisterOnTransformationChangedCallback( |
| 41 base::Bind(&DesktopViewportTest::OnTransformationChanged, | 43 base::Bind(&DesktopViewportTest::OnTransformationChanged, |
| 42 base::Unretained(this)), | 44 base::Unretained(this)), |
| 43 true); | 45 true); |
| 44 } | 46 } |
| 45 | 47 |
| 46 void DesktopViewportTest::TearDown() { | 48 void DesktopViewportTest::TearDown() { |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 67 expected_array[0], expected_array[2], | 69 expected_array[0], expected_array[2], |
| 68 expected_array[5]) | 70 expected_array[5]) |
| 69 << base::StringPrintf("Actual scale: %f, offset: (%f, %f)\n", | 71 << base::StringPrintf("Actual scale: %f, offset: (%f, %f)\n", |
| 70 actual_array[0], actual_array[2], actual_array[5]) | 72 actual_array[0], actual_array[2], actual_array[5]) |
| 71 << "Location: " << from_here.ToString(); | 73 << "Location: " << from_here.ToString(); |
| 72 } | 74 } |
| 73 | 75 |
| 74 received_transformation_ = ViewMatrix(); | 76 received_transformation_ = ViewMatrix(); |
| 75 } | 77 } |
| 76 | 78 |
| 79 ViewMatrix DesktopViewportTest::ReleaseReceivedTransformation() { | |
| 80 EXPECT_FALSE(received_transformation_.IsEmpty()); | |
| 81 ViewMatrix out = received_transformation_; | |
| 82 received_transformation_ = ViewMatrix(); | |
| 83 return out; | |
| 84 } | |
| 85 | |
| 77 void DesktopViewportTest::OnTransformationChanged(const ViewMatrix& matrix) { | 86 void DesktopViewportTest::OnTransformationChanged(const ViewMatrix& matrix) { |
| 78 ASSERT_TRUE(received_transformation_.IsEmpty()) | 87 ASSERT_TRUE(received_transformation_.IsEmpty()) |
| 79 << "Previous matrix has not been asserted."; | 88 << "Previous matrix has not been asserted."; |
| 80 received_transformation_ = matrix; | 89 received_transformation_ = matrix; |
| 81 } | 90 } |
| 82 | 91 |
| 83 TEST_F(DesktopViewportTest, TestViewportInitialization1) { | 92 TEST_F(DesktopViewportTest, TestViewportInitialization1) { |
| 84 // VP < DP. Desktop shrinks to fit. | 93 // VP < DP. Desktop shrinks to fit. |
| 85 // +====+------+ | 94 // +====+------+ |
| 86 // | VP | DP | | 95 // | VP | DP | |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 244 // | | | 253 // | | |
| 245 // | DP | | 254 // | DP | |
| 246 // | +====+ | 255 // | +====+ |
| 247 // | | VP | | 256 // | | VP | |
| 248 // +---------------| | | 257 // +---------------| | |
| 249 // +====+ | 258 // +====+ |
| 250 viewport_.SetViewportCenter(1000.f, 1000.f); | 259 viewport_.SetViewportCenter(1000.f, 1000.f); |
| 251 AssertTransformationReceived(FROM_HERE, 1.25f, -8.f, -4.5f); | 260 AssertTransformationReceived(FROM_HERE, 1.25f, -8.f, -4.5f); |
| 252 } | 261 } |
| 253 | 262 |
| 263 TEST_F(DesktopViewportTest, TestScaleDesktop) { | |
| 264 // Number in surface coordinate. | |
| 265 // | |
| 266 // +====+------+ | |
| 267 // | VP | DP | | |
| 268 // | | | 3 | |
| 269 // +====+------+ | |
| 270 // 4 | |
| 271 viewport_.SetDesktopSize(8, 6); | |
| 272 viewport_.SetSurfaceSize(2, 3); | |
| 273 AssertTransformationReceived(FROM_HERE, 0.5f, 0.f, 0.f); | |
| 274 | |
| 275 ViewMatrix old_transformation(0.5f, {0.f, 0.f}); | |
| 276 | |
| 277 ViewMatrix::Point surface_point = old_transformation.MapPoint({1.2f, 1.3f}); | |
| 278 | |
| 279 // Scale a little bit at a pivot point. | |
| 280 viewport_.ScaleDesktop(surface_point.x, surface_point.y, 1.1f); | |
| 281 | |
| 282 ViewMatrix new_transformation = ReleaseReceivedTransformation(); | |
| 283 | |
| 284 // Verify the pivot point is fixed. | |
| 285 ViewMatrix::Point new_surface_point = | |
| 286 new_transformation.MapPoint({1.2f, 1.3f}); | |
| 287 ASSERT_FLOAT_EQ(surface_point.x, new_surface_point.x); | |
| 288 ASSERT_FLOAT_EQ(surface_point.y, new_surface_point.y); | |
| 289 | |
| 290 // Verify the scale is correct. | |
| 291 ASSERT_FLOAT_EQ(old_transformation.GetScale() * 1.1f, | |
| 292 new_transformation.GetScale()); | |
| 293 } | |
| 294 | |
| 254 } // namespace remoting | 295 } // namespace remoting |
| OLD | NEW |