| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "ui/aura/mus/property_converter.h" | 5 #include "ui/aura/mus/property_converter.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 const char kTestString16PropertyServerKey[] = "test-string16-property-server"; | 70 const char kTestString16PropertyServerKey[] = "test-string16-property-server"; |
| 71 | 71 |
| 72 // Test registration, naming and value conversion for primitive property types. | 72 // Test registration, naming and value conversion for primitive property types. |
| 73 template <typename T> | 73 template <typename T> |
| 74 void TestPrimitiveProperty(PropertyConverter* property_converter, | 74 void TestPrimitiveProperty(PropertyConverter* property_converter, |
| 75 Window* window, | 75 Window* window, |
| 76 const WindowProperty<T>* key, | 76 const WindowProperty<T>* key, |
| 77 const char* transport_name, | 77 const char* transport_name, |
| 78 T value_1, | 78 T value_1, |
| 79 T value_2) { | 79 T value_2) { |
| 80 property_converter->RegisterProperty( | 80 property_converter->RegisterPrimitiveProperty( |
| 81 key, transport_name, PropertyConverter::CreateAcceptAnyValueCallback()); | 81 key, transport_name, PropertyConverter::CreateAcceptAnyValueCallback()); |
| 82 EXPECT_EQ(transport_name, | 82 EXPECT_EQ(transport_name, |
| 83 property_converter->GetTransportNameForPropertyKey(key)); | 83 property_converter->GetTransportNameForPropertyKey(key)); |
| 84 EXPECT_TRUE(property_converter->IsTransportNameRegistered(transport_name)); | 84 EXPECT_TRUE(property_converter->IsTransportNameRegistered(transport_name)); |
| 85 | 85 |
| 86 window->SetProperty(key, value_1); | 86 window->SetProperty(key, value_1); |
| 87 EXPECT_EQ(value_1, window->GetProperty(key)); | 87 EXPECT_EQ(value_1, window->GetProperty(key)); |
| 88 | 88 |
| 89 std::string transport_name_out; | 89 std::string transport_name_out; |
| 90 std::unique_ptr<std::vector<uint8_t>> transport_value_out; | 90 std::unique_ptr<std::vector<uint8_t>> transport_value_out; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 | 167 |
| 168 const int64_t value_9a = INT64_MIN / 5, value_9b = INT64_MIN / 6; | 168 const int64_t value_9a = INT64_MIN / 5, value_9b = INT64_MIN / 6; |
| 169 TestPrimitiveProperty(&property_converter, window.get(), kTestPropertyKey9, | 169 TestPrimitiveProperty(&property_converter, window.get(), kTestPropertyKey9, |
| 170 kTestPropertyServerKey9, value_9a, value_9b); | 170 kTestPropertyServerKey9, value_9a, value_9b); |
| 171 } | 171 } |
| 172 | 172 |
| 173 TEST_F(PropertyConverterTest, TestPrimitiveVerifier) { | 173 TEST_F(PropertyConverterTest, TestPrimitiveVerifier) { |
| 174 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); | 174 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); |
| 175 | 175 |
| 176 PropertyConverter property_converter; | 176 PropertyConverter property_converter; |
| 177 property_converter.RegisterProperty(kTestPropertyKey8, | 177 property_converter.RegisterPrimitiveProperty( |
| 178 kTestPropertyServerKey8, | 178 kTestPropertyKey8, kTestPropertyServerKey8, |
| 179 base::Bind(&OnlyAllowNegativeNumbers)); | 179 base::Bind(&OnlyAllowNegativeNumbers)); |
| 180 | 180 |
| 181 // Test that we reject invalid TransportValues during | 181 // Test that we reject invalid TransportValues during |
| 182 // GetPropertyValueFromTransportValue(). | 182 // GetPropertyValueFromTransportValue(). |
| 183 int64_t int_value = 5; | 183 int64_t int_value = 5; |
| 184 std::vector<uint8_t> transport = | 184 std::vector<uint8_t> transport = |
| 185 mojo::ConvertTo<std::vector<uint8_t>>(int_value); | 185 mojo::ConvertTo<std::vector<uint8_t>>(int_value); |
| 186 EXPECT_FALSE(property_converter.GetPropertyValueFromTransportValue( | 186 EXPECT_FALSE(property_converter.GetPropertyValueFromTransportValue( |
| 187 kTestPropertyServerKey8, transport, &int_value)); | 187 kTestPropertyServerKey8, transport, &int_value)); |
| 188 | 188 |
| 189 // Test that we reject invalid TransportValues during | 189 // Test that we reject invalid TransportValues during |
| 190 // SetPropertyFromTransportValue(). | 190 // SetPropertyFromTransportValue(). |
| 191 EXPECT_EQ(-1, window->GetProperty(kTestPropertyKey8)); | 191 EXPECT_EQ(-1, window->GetProperty(kTestPropertyKey8)); |
| 192 property_converter.SetPropertyFromTransportValue( | 192 property_converter.SetPropertyFromTransportValue( |
| 193 window.get(), kTestPropertyServerKey8, &transport); | 193 window.get(), kTestPropertyServerKey8, &transport); |
| 194 EXPECT_EQ(-1, window->GetProperty(kTestPropertyKey8)); | 194 EXPECT_EQ(-1, window->GetProperty(kTestPropertyKey8)); |
| 195 } | 195 } |
| 196 | 196 |
| 197 // Verifies property setting behavior for a gfx::ImageSkia* property. | 197 // Verifies property setting behavior for a gfx::ImageSkia* property. |
| 198 TEST_F(PropertyConverterTest, ImageSkiaProperty) { | 198 TEST_F(PropertyConverterTest, ImageSkiaProperty) { |
| 199 PropertyConverter property_converter; | 199 PropertyConverter property_converter; |
| 200 property_converter.RegisterProperty(kTestImagePropertyKey, | 200 property_converter.RegisterImageProperty(kTestImagePropertyKey, |
| 201 kTestImagePropertyServerKey); | 201 kTestImagePropertyServerKey); |
| 202 EXPECT_EQ( | 202 EXPECT_EQ( |
| 203 kTestImagePropertyServerKey, | 203 kTestImagePropertyServerKey, |
| 204 property_converter.GetTransportNameForPropertyKey(kTestImagePropertyKey)); | 204 property_converter.GetTransportNameForPropertyKey(kTestImagePropertyKey)); |
| 205 EXPECT_TRUE(property_converter.IsTransportNameRegistered( | 205 EXPECT_TRUE(property_converter.IsTransportNameRegistered( |
| 206 kTestImagePropertyServerKey)); | 206 kTestImagePropertyServerKey)); |
| 207 | 207 |
| 208 SkBitmap bitmap_1; | 208 SkBitmap bitmap_1; |
| 209 bitmap_1.allocN32Pixels(16, 32); | 209 bitmap_1.allocN32Pixels(16, 32); |
| 210 bitmap_1.eraseARGB(255, 11, 22, 33); | 210 bitmap_1.eraseARGB(255, 11, 22, 33); |
| 211 gfx::ImageSkia value_1 = gfx::ImageSkia::CreateFrom1xBitmap(bitmap_1); | 211 gfx::ImageSkia value_1 = gfx::ImageSkia::CreateFrom1xBitmap(bitmap_1); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 232 mojo::ConvertTo<std::vector<uint8_t>>(bitmap_2); | 232 mojo::ConvertTo<std::vector<uint8_t>>(bitmap_2); |
| 233 property_converter.SetPropertyFromTransportValue( | 233 property_converter.SetPropertyFromTransportValue( |
| 234 window.get(), kTestImagePropertyServerKey, &transport_value); | 234 window.get(), kTestImagePropertyServerKey, &transport_value); |
| 235 gfx::ImageSkia* image_out_2 = window->GetProperty(kTestImagePropertyKey); | 235 gfx::ImageSkia* image_out_2 = window->GetProperty(kTestImagePropertyKey); |
| 236 EXPECT_TRUE(gfx::BitmapsAreEqual(bitmap_2, *image_out_2->bitmap())); | 236 EXPECT_TRUE(gfx::BitmapsAreEqual(bitmap_2, *image_out_2->bitmap())); |
| 237 } | 237 } |
| 238 | 238 |
| 239 // Verifies property setting behavior for a gfx::Rect* property. | 239 // Verifies property setting behavior for a gfx::Rect* property. |
| 240 TEST_F(PropertyConverterTest, RectProperty) { | 240 TEST_F(PropertyConverterTest, RectProperty) { |
| 241 PropertyConverter property_converter; | 241 PropertyConverter property_converter; |
| 242 property_converter.RegisterProperty(kTestRectPropertyKey, | 242 property_converter.RegisterRectProperty(kTestRectPropertyKey, |
| 243 kTestRectPropertyServerKey); | 243 kTestRectPropertyServerKey); |
| 244 EXPECT_EQ( | 244 EXPECT_EQ( |
| 245 kTestRectPropertyServerKey, | 245 kTestRectPropertyServerKey, |
| 246 property_converter.GetTransportNameForPropertyKey(kTestRectPropertyKey)); | 246 property_converter.GetTransportNameForPropertyKey(kTestRectPropertyKey)); |
| 247 EXPECT_TRUE( | 247 EXPECT_TRUE( |
| 248 property_converter.IsTransportNameRegistered(kTestRectPropertyServerKey)); | 248 property_converter.IsTransportNameRegistered(kTestRectPropertyServerKey)); |
| 249 | 249 |
| 250 gfx::Rect value_1(1, 2, 3, 4); | 250 gfx::Rect value_1(1, 2, 3, 4); |
| 251 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); | 251 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); |
| 252 window->SetProperty(kTestRectPropertyKey, new gfx::Rect(value_1)); | 252 window->SetProperty(kTestRectPropertyKey, new gfx::Rect(value_1)); |
| 253 EXPECT_EQ(value_1, *window->GetProperty(kTestRectPropertyKey)); | 253 EXPECT_EQ(value_1, *window->GetProperty(kTestRectPropertyKey)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 265 std::vector<uint8_t> transport_value = | 265 std::vector<uint8_t> transport_value = |
| 266 mojo::ConvertTo<std::vector<uint8_t>>(value_2); | 266 mojo::ConvertTo<std::vector<uint8_t>>(value_2); |
| 267 property_converter.SetPropertyFromTransportValue( | 267 property_converter.SetPropertyFromTransportValue( |
| 268 window.get(), kTestRectPropertyServerKey, &transport_value); | 268 window.get(), kTestRectPropertyServerKey, &transport_value); |
| 269 EXPECT_EQ(value_2, *window->GetProperty(kTestRectPropertyKey)); | 269 EXPECT_EQ(value_2, *window->GetProperty(kTestRectPropertyKey)); |
| 270 } | 270 } |
| 271 | 271 |
| 272 // Verifies property setting behavior for a gfx::Size* property. | 272 // Verifies property setting behavior for a gfx::Size* property. |
| 273 TEST_F(PropertyConverterTest, SizeProperty) { | 273 TEST_F(PropertyConverterTest, SizeProperty) { |
| 274 PropertyConverter property_converter; | 274 PropertyConverter property_converter; |
| 275 property_converter.RegisterProperty(kTestSizePropertyKey, | 275 property_converter.RegisterSizeProperty(kTestSizePropertyKey, |
| 276 kTestSizePropertyServerKey); | 276 kTestSizePropertyServerKey); |
| 277 EXPECT_EQ( | 277 EXPECT_EQ( |
| 278 kTestSizePropertyServerKey, | 278 kTestSizePropertyServerKey, |
| 279 property_converter.GetTransportNameForPropertyKey(kTestSizePropertyKey)); | 279 property_converter.GetTransportNameForPropertyKey(kTestSizePropertyKey)); |
| 280 EXPECT_TRUE( | 280 EXPECT_TRUE( |
| 281 property_converter.IsTransportNameRegistered(kTestSizePropertyServerKey)); | 281 property_converter.IsTransportNameRegistered(kTestSizePropertyServerKey)); |
| 282 | 282 |
| 283 gfx::Size value_1(1, 2); | 283 gfx::Size value_1(1, 2); |
| 284 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); | 284 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); |
| 285 window->SetProperty(kTestSizePropertyKey, new gfx::Size(value_1)); | 285 window->SetProperty(kTestSizePropertyKey, new gfx::Size(value_1)); |
| 286 EXPECT_EQ(value_1, *window->GetProperty(kTestSizePropertyKey)); | 286 EXPECT_EQ(value_1, *window->GetProperty(kTestSizePropertyKey)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 298 std::vector<uint8_t> transport_value = | 298 std::vector<uint8_t> transport_value = |
| 299 mojo::ConvertTo<std::vector<uint8_t>>(value_2); | 299 mojo::ConvertTo<std::vector<uint8_t>>(value_2); |
| 300 property_converter.SetPropertyFromTransportValue( | 300 property_converter.SetPropertyFromTransportValue( |
| 301 window.get(), kTestSizePropertyServerKey, &transport_value); | 301 window.get(), kTestSizePropertyServerKey, &transport_value); |
| 302 EXPECT_EQ(value_2, *window->GetProperty(kTestSizePropertyKey)); | 302 EXPECT_EQ(value_2, *window->GetProperty(kTestSizePropertyKey)); |
| 303 } | 303 } |
| 304 | 304 |
| 305 // Verifies property setting behavior for a std::string* property. | 305 // Verifies property setting behavior for a std::string* property. |
| 306 TEST_F(PropertyConverterTest, StringProperty) { | 306 TEST_F(PropertyConverterTest, StringProperty) { |
| 307 PropertyConverter property_converter; | 307 PropertyConverter property_converter; |
| 308 property_converter.RegisterProperty(kTestStringPropertyKey, | 308 property_converter.RegisterStringProperty(kTestStringPropertyKey, |
| 309 kTestStringPropertyServerKey); | 309 kTestStringPropertyServerKey); |
| 310 EXPECT_EQ(kTestStringPropertyServerKey, | 310 EXPECT_EQ(kTestStringPropertyServerKey, |
| 311 property_converter.GetTransportNameForPropertyKey( | 311 property_converter.GetTransportNameForPropertyKey( |
| 312 kTestStringPropertyKey)); | 312 kTestStringPropertyKey)); |
| 313 EXPECT_TRUE(property_converter.IsTransportNameRegistered( | 313 EXPECT_TRUE(property_converter.IsTransportNameRegistered( |
| 314 kTestStringPropertyServerKey)); | 314 kTestStringPropertyServerKey)); |
| 315 | 315 |
| 316 std::string value_1 = "test value"; | 316 std::string value_1 = "test value"; |
| 317 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); | 317 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); |
| 318 window->SetProperty(kTestStringPropertyKey, new std::string(value_1)); | 318 window->SetProperty(kTestStringPropertyKey, new std::string(value_1)); |
| 319 EXPECT_EQ(value_1, *window->GetProperty(kTestStringPropertyKey)); | 319 EXPECT_EQ(value_1, *window->GetProperty(kTestStringPropertyKey)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 331 std::vector<uint8_t> transport_value = | 331 std::vector<uint8_t> transport_value = |
| 332 mojo::ConvertTo<std::vector<uint8_t>>(value_2); | 332 mojo::ConvertTo<std::vector<uint8_t>>(value_2); |
| 333 property_converter.SetPropertyFromTransportValue( | 333 property_converter.SetPropertyFromTransportValue( |
| 334 window.get(), kTestStringPropertyServerKey, &transport_value); | 334 window.get(), kTestStringPropertyServerKey, &transport_value); |
| 335 EXPECT_EQ(value_2, *window->GetProperty(kTestStringPropertyKey)); | 335 EXPECT_EQ(value_2, *window->GetProperty(kTestStringPropertyKey)); |
| 336 } | 336 } |
| 337 | 337 |
| 338 // Verifies property setting behavior for a base::string16* property. | 338 // Verifies property setting behavior for a base::string16* property. |
| 339 TEST_F(PropertyConverterTest, String16Property) { | 339 TEST_F(PropertyConverterTest, String16Property) { |
| 340 PropertyConverter property_converter; | 340 PropertyConverter property_converter; |
| 341 property_converter.RegisterProperty(kTestString16PropertyKey, | 341 property_converter.RegisterString16Property(kTestString16PropertyKey, |
| 342 kTestString16PropertyServerKey); | 342 kTestString16PropertyServerKey); |
| 343 EXPECT_EQ(kTestString16PropertyServerKey, | 343 EXPECT_EQ(kTestString16PropertyServerKey, |
| 344 property_converter.GetTransportNameForPropertyKey( | 344 property_converter.GetTransportNameForPropertyKey( |
| 345 kTestString16PropertyKey)); | 345 kTestString16PropertyKey)); |
| 346 EXPECT_TRUE(property_converter.IsTransportNameRegistered( | 346 EXPECT_TRUE(property_converter.IsTransportNameRegistered( |
| 347 kTestString16PropertyServerKey)); | 347 kTestString16PropertyServerKey)); |
| 348 | 348 |
| 349 base::string16 value_1 = base::ASCIIToUTF16("test value"); | 349 base::string16 value_1 = base::ASCIIToUTF16("test value"); |
| 350 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); | 350 std::unique_ptr<Window> window(CreateNormalWindow(1, root_window(), nullptr)); |
| 351 window->SetProperty(kTestString16PropertyKey, new base::string16(value_1)); | 351 window->SetProperty(kTestString16PropertyKey, new base::string16(value_1)); |
| 352 EXPECT_EQ(value_1, *window->GetProperty(kTestString16PropertyKey)); | 352 EXPECT_EQ(value_1, *window->GetProperty(kTestString16PropertyKey)); |
| 353 | 353 |
| 354 std::string transport_name_out; | 354 std::string transport_name_out; |
| 355 std::unique_ptr<std::vector<uint8_t>> transport_value_out; | 355 std::unique_ptr<std::vector<uint8_t>> transport_value_out; |
| 356 EXPECT_TRUE(property_converter.ConvertPropertyForTransport( | 356 EXPECT_TRUE(property_converter.ConvertPropertyForTransport( |
| 357 window.get(), kTestString16PropertyKey, &transport_name_out, | 357 window.get(), kTestString16PropertyKey, &transport_name_out, |
| 358 &transport_value_out)); | 358 &transport_value_out)); |
| 359 EXPECT_EQ(kTestString16PropertyServerKey, transport_name_out); | 359 EXPECT_EQ(kTestString16PropertyServerKey, transport_name_out); |
| 360 EXPECT_EQ(mojo::ConvertTo<std::vector<uint8_t>>(value_1), | 360 EXPECT_EQ(mojo::ConvertTo<std::vector<uint8_t>>(value_1), |
| 361 *transport_value_out.get()); | 361 *transport_value_out.get()); |
| 362 | 362 |
| 363 base::string16 value_2 = base::ASCIIToUTF16("another test value"); | 363 base::string16 value_2 = base::ASCIIToUTF16("another test value"); |
| 364 std::vector<uint8_t> transport_value = | 364 std::vector<uint8_t> transport_value = |
| 365 mojo::ConvertTo<std::vector<uint8_t>>(value_2); | 365 mojo::ConvertTo<std::vector<uint8_t>>(value_2); |
| 366 property_converter.SetPropertyFromTransportValue( | 366 property_converter.SetPropertyFromTransportValue( |
| 367 window.get(), kTestString16PropertyServerKey, &transport_value); | 367 window.get(), kTestString16PropertyServerKey, &transport_value); |
| 368 EXPECT_EQ(value_2, *window->GetProperty(kTestString16PropertyKey)); | 368 EXPECT_EQ(value_2, *window->GetProperty(kTestString16PropertyKey)); |
| 369 } | 369 } |
| 370 | 370 |
| 371 } // namespace aura | 371 } // namespace aura |
| OLD | NEW |