Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/renderer/manifest/manifest_parser.h" | 5 #include "content/renderer/manifest/manifest_parser.h" |
| 6 | 6 |
| 7 #include "base/strings/string_util.h" | 7 #include "base/strings/string_util.h" |
| 8 #include "content/public/common/manifest.h" | 8 #include "content/public/common/manifest.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| (...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 485 } | 485 } |
| 486 | 486 |
| 487 // Negative values are invalid. | 487 // Negative values are invalid. |
| 488 { | 488 { |
| 489 Manifest manifest = | 489 Manifest manifest = |
| 490 ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\": -2.5 } ] }"); | 490 ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\": -2.5 } ] }"); |
| 491 EXPECT_EQ(manifest.icons[0].density, Manifest::Icon::kDefaultDensity); | 491 EXPECT_EQ(manifest.icons[0].density, Manifest::Icon::kDefaultDensity); |
| 492 } | 492 } |
| 493 } | 493 } |
| 494 | 494 |
| 495 TEST_F(ManifestParserTest, IconSizesParseRules) { | |
| 496 // Smoke test. | |
| 497 { | |
| 498 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 499 "\"sizes\": \"42x42\" } ] }"); | |
| 500 EXPECT_EQ(manifest.icons[0].sizes.size(), 1u); | |
| 501 } | |
| 502 | |
| 503 // Trim whitespaces. | |
| 504 { | |
| 505 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 506 "\"sizes\": \" 42x42 \" } ] }"); | |
| 507 EXPECT_EQ(manifest.icons[0].sizes.size(), 1u); | |
| 508 } | |
| 509 | |
| 510 // Don't parse if name isn't a string. | |
| 511 { | |
| 512 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 513 "\"sizes\": {} } ] }"); | |
| 514 EXPECT_EQ(manifest.icons[0].sizes.size(), 0u); | |
| 515 } | |
| 516 | |
| 517 // Don't parse if name isn't a string. | |
| 518 { | |
| 519 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 520 "\"sizes\": 42 } ] }"); | |
| 521 EXPECT_EQ(manifest.icons[0].sizes.size(), 0u); | |
|
Avi (use Gerrit)
2014/09/22 15:35:26
Perhaps a test for the edge condition that I asked
mlamouri (slow - plz ping)
2014/09/22 16:26:57
Done.
| |
| 522 } | |
| 523 | |
| 524 // Smoke test: value correctly parsed. | |
| 525 { | |
| 526 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 527 "\"sizes\": \"42x42 48x48\" } ] }"); | |
| 528 EXPECT_EQ(manifest.icons[0].sizes[0], gfx::Size(42, 42)); | |
| 529 EXPECT_EQ(manifest.icons[0].sizes[1], gfx::Size(48, 48)); | |
| 530 } | |
| 531 | |
| 532 // <WIDTH>'x'<HEIGHT> and <WIDTH>'X'<HEIGHT> are equivalent. | |
| 533 { | |
| 534 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 535 "\"sizes\": \"42X42 48X48\" } ] }"); | |
| 536 EXPECT_EQ(manifest.icons[0].sizes[0], gfx::Size(42, 42)); | |
| 537 EXPECT_EQ(manifest.icons[0].sizes[1], gfx::Size(48, 48)); | |
| 538 } | |
| 539 | |
| 540 // Twice the same value is parsed twice. | |
| 541 { | |
| 542 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 543 "\"sizes\": \"42X42 42x42\" } ] }"); | |
| 544 EXPECT_EQ(manifest.icons[0].sizes[0], gfx::Size(42, 42)); | |
| 545 EXPECT_EQ(manifest.icons[0].sizes[1], gfx::Size(42, 42)); | |
| 546 } | |
| 547 | |
| 548 // Width or height can't start with 0. | |
| 549 { | |
| 550 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 551 "\"sizes\": \"004X007 042x00\" } ] }"); | |
| 552 EXPECT_EQ(manifest.icons[0].sizes.size(), 0u); | |
| 553 } | |
| 554 | |
| 555 // Width and height MUST contain digits. | |
| 556 { | |
| 557 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 558 "\"sizes\": \"e4X1.0 55ax1e10\" } ] }"); | |
| 559 EXPECT_EQ(manifest.icons[0].sizes.size(), 0u); | |
| 560 } | |
| 561 | |
| 562 // 'any' is correctly parsed and transformed to gfx::Size(0,0). | |
| 563 { | |
| 564 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," | |
| 565 "\"sizes\": \"any AnY ANY aNy\" } ] }"); | |
| 566 gfx::Size any = gfx::Size(0, 0); | |
| 567 EXPECT_EQ(manifest.icons[0].sizes.size(), 4u); | |
| 568 EXPECT_EQ(manifest.icons[0].sizes[0], any); | |
| 569 EXPECT_EQ(manifest.icons[0].sizes[1], any); | |
| 570 EXPECT_EQ(manifest.icons[0].sizes[2], any); | |
| 571 EXPECT_EQ(manifest.icons[0].sizes[3], any); | |
| 572 } | |
| 573 } | |
| 574 | |
| 495 } // namespace content | 575 } // namespace content |
| OLD | NEW |