Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: content/renderer/manifest/manifest_parser_unittest.cc

Issue 919293002: Add related_applications field to manifest parser. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review feedback Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 779 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," 790 Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\","
791 "\"sizes\": \"x 40xx 1x2x3 x42 42xx42\" } ] }"); 791 "\"sizes\": \"x 40xx 1x2x3 x42 42xx42\" } ] }");
792 gfx::Size any = gfx::Size(0, 0); 792 gfx::Size any = gfx::Size(0, 0);
793 EXPECT_EQ(manifest.icons[0].sizes.size(), 0u); 793 EXPECT_EQ(manifest.icons[0].sizes.size(), 0u);
794 EXPECT_EQ(1u, GetErrorCount()); 794 EXPECT_EQ(1u, GetErrorCount());
795 EXPECT_EQ("Manifest parsing error: found icon with no valid size.", 795 EXPECT_EQ("Manifest parsing error: found icon with no valid size.",
796 errors()[0]); 796 errors()[0]);
797 } 797 }
798 } 798 }
799 799
800 TEST_F(ManifestParserTest, RelatedApplicationsParseRules) {
801 // If no application, empty list.
802 {
803 Manifest manifest = ParseManifest(
804 "{ \"related_applications\": []}");
805 EXPECT_EQ(manifest.related_applications.size(), 0u);
806 EXPECT_TRUE(manifest.IsEmpty());
807 EXPECT_EQ(0u, GetErrorCount());
808 }
809
810 // If empty application, empty list.
811 {
812 Manifest manifest = ParseManifest(
813 "{ \"related_applications\": [{}]}");
814 EXPECT_EQ(manifest.related_applications.size(), 0u);
815 EXPECT_TRUE(manifest.IsEmpty());
816 EXPECT_EQ(1u, GetErrorCount());
817 EXPECT_EQ("Manifest parsing error: 'platform' is a required field, "
818 "related application ignored.",
819 errors()[0]);
820 }
821
822 // If invalid platform, application is ignored.
823 {
824 Manifest manifest = ParseManifest(
825 "{ \"related_applications\": [{\"platform\": 123}]}");
826 EXPECT_EQ(manifest.related_applications.size(), 0u);
827 EXPECT_TRUE(manifest.IsEmpty());
828 EXPECT_EQ(2u, GetErrorCount());
829 EXPECT_EQ(
830 "Manifest parsing error: property 'platform' ignored, type string "
831 "expected.",
832 errors()[0]);
833 EXPECT_EQ("Manifest parsing error: 'platform' is a required field, "
834 "related application ignored.",
835 errors()[1]);
836 }
837
838 // If missing platform, application is ignored.
839 {
840 Manifest manifest = ParseManifest(
841 "{ \"related_applications\": [{\"id\": \"foo\"}]}");
842 EXPECT_EQ(manifest.related_applications.size(), 0u);
843 EXPECT_TRUE(manifest.IsEmpty());
844 EXPECT_EQ(1u, GetErrorCount());
845 EXPECT_EQ("Manifest parsing error: 'platform' is a required field, "
846 "related application ignored.",
847 errors()[0]);
848 }
849
850 // If missing id and url, application is ignored.
851 {
852 Manifest manifest = ParseManifest(
853 "{ \"related_applications\": [{\"platform\": \"play\"}]}");
854 EXPECT_EQ(manifest.related_applications.size(), 0u);
855 EXPECT_TRUE(manifest.IsEmpty());
856 EXPECT_EQ(1u, GetErrorCount());
857 EXPECT_EQ("Manifest parsing error: one of 'url' or 'id' is required, "
858 "related application ignored.",
859 errors()[0]);
860 }
861
862 // Valid application, with url.
863 {
864 Manifest manifest = ParseManifest(
865 "{ \"related_applications\": ["
866 "{\"platform\": \"play\", \"url\": \"http://www.foo.com\"}]}");
867 EXPECT_EQ(manifest.related_applications.size(), 1u);
868 EXPECT_TRUE(EqualsASCII(manifest.related_applications[0].platform.string(),
869 "play"));
870 EXPECT_EQ(manifest.related_applications[0].url.spec(),
871 "http://www.foo.com/");
872 EXPECT_FALSE(manifest.IsEmpty());
873 EXPECT_EQ(0u, GetErrorCount());
874 }
875
876 // Valid application, with id.
877 {
878 Manifest manifest = ParseManifest(
879 "{ \"related_applications\": ["
880 "{\"platform\": \"itunes\", \"id\": \"foo\"}]}");
881 EXPECT_EQ(manifest.related_applications.size(), 1u);
882 EXPECT_TRUE(EqualsASCII(manifest.related_applications[0].platform.string(),
883 "itunes"));
884 EXPECT_TRUE(EqualsASCII(manifest.related_applications[0].id.string(),
885 "foo"));
886 EXPECT_FALSE(manifest.IsEmpty());
887 EXPECT_EQ(0u, GetErrorCount());
888 }
889
890 // All valid applications are in list.
891 {
892 Manifest manifest = ParseManifest(
893 "{ \"related_applications\": ["
894 "{\"platform\": \"play\", \"id\": \"foo\"},"
895 "{\"platform\": \"itunes\", \"id\": \"bar\"}]}");
896 EXPECT_EQ(manifest.related_applications.size(), 2u);
897 EXPECT_TRUE(EqualsASCII(manifest.related_applications[0].platform.string(),
898 "play"));
899 EXPECT_TRUE(EqualsASCII(manifest.related_applications[0].id.string(),
900 "foo"));
901 EXPECT_TRUE(EqualsASCII(manifest.related_applications[1].platform.string(),
902 "itunes"));
903 EXPECT_TRUE(EqualsASCII(manifest.related_applications[1].id.string(),
904 "bar"));
905 EXPECT_FALSE(manifest.IsEmpty());
906 EXPECT_EQ(0u, GetErrorCount());
907 }
908
909 // Two invalid applications and one valid. Only the valid application should
910 // be in the list.
911 {
912 Manifest manifest = ParseManifest(
913 "{ \"related_applications\": ["
914 "{\"platform\": \"itunes\"},"
915 "{\"platform\": \"play\", \"id\": \"foo\"},{}]}");
mlamouri (slow - plz ping) 2015/04/15 08:46:31 Could you put the empty application in a new line?
benwells 2015/04/16 01:30:46 Done.
916 EXPECT_EQ(manifest.related_applications.size(), 1u);
917 EXPECT_TRUE(EqualsASCII(manifest.related_applications[0].platform.string(),
918 "play"));
919 EXPECT_TRUE(EqualsASCII(manifest.related_applications[0].id.string(),
920 "foo"));
921 EXPECT_FALSE(manifest.IsEmpty());
922 EXPECT_EQ(2u, GetErrorCount());
923 EXPECT_EQ("Manifest parsing error: one of 'url' or 'id' is required, "
924 "related application ignored.",
925 errors()[0]);
926 EXPECT_EQ("Manifest parsing error: 'platform' is a required field, "
927 "related application ignored.",
928 errors()[1]);
929 }
930 }
931
932 TEST_F(ManifestParserTest, ParsePreferRelatedApplicationsParseRules) {
933 // Smoke test.
934 {
935 Manifest manifest =
936 ParseManifest("{ \"prefer_related_applications\": true }");
937 EXPECT_TRUE(manifest.prefer_related_applications);
938 EXPECT_EQ(0u, GetErrorCount());
939 }
940
941 // Don't parse if the property isn't a boolean.
942 {
943 Manifest manifest =
944 ParseManifest("{ \"prefer_related_applications\": {} }");
945 EXPECT_FALSE(manifest.prefer_related_applications);
946 EXPECT_EQ(1u, GetErrorCount());
947 EXPECT_EQ(
948 "Manifest parsing error: property 'prefer_related_applications' "
949 "ignored, type boolean expected.",
950 errors()[0]);
951 }
952 {
953 Manifest manifest = ParseManifest(
954 "{ \"prefer_related_applications\": \"true\" }");
955 EXPECT_FALSE(manifest.prefer_related_applications);
956 EXPECT_EQ(1u, GetErrorCount());
957 EXPECT_EQ(
958 "Manifest parsing error: property 'prefer_related_applications' "
959 "ignored, type boolean expected.",
960 errors()[0]);
961 }
962 {
963 Manifest manifest = ParseManifest("{ \"prefer_related_applications\": 1 }");
964 EXPECT_FALSE(manifest.prefer_related_applications);
965 EXPECT_EQ(1u, GetErrorCount());
966 EXPECT_EQ(
967 "Manifest parsing error: property 'prefer_related_applications' "
968 "ignored, type boolean expected.",
969 errors()[0]);
970 }
971
972 // "False" should set the boolean false without throwing errors.
973 {
974 Manifest manifest =
975 ParseManifest("{ \"prefer_related_applications\": false }");
976 EXPECT_FALSE(manifest.prefer_related_applications);
977 EXPECT_EQ(0u, GetErrorCount());
978 }
979 }
980
800 TEST_F(ManifestParserTest, GCMSenderIDParseRules) { 981 TEST_F(ManifestParserTest, GCMSenderIDParseRules) {
801 // Smoke test. 982 // Smoke test.
802 { 983 {
803 Manifest manifest = ParseManifest("{ \"gcm_sender_id\": \"foo\" }"); 984 Manifest manifest = ParseManifest("{ \"gcm_sender_id\": \"foo\" }");
804 EXPECT_TRUE(EqualsASCII(manifest.gcm_sender_id.string(), "foo")); 985 EXPECT_TRUE(EqualsASCII(manifest.gcm_sender_id.string(), "foo"));
805 EXPECT_EQ(0u, GetErrorCount()); 986 EXPECT_EQ(0u, GetErrorCount());
806 } 987 }
807 988
808 // Trim whitespaces. 989 // Trim whitespaces.
809 { 990 {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
871 1052
872 // "False" should set the boolean false without throwing errors. 1053 // "False" should set the boolean false without throwing errors.
873 { 1054 {
874 Manifest manifest = ParseManifest("{ \"gcm_user_visible_only\": false }"); 1055 Manifest manifest = ParseManifest("{ \"gcm_user_visible_only\": false }");
875 EXPECT_FALSE(manifest.gcm_user_visible_only); 1056 EXPECT_FALSE(manifest.gcm_user_visible_only);
876 EXPECT_EQ(0u, GetErrorCount()); 1057 EXPECT_EQ(0u, GetErrorCount());
877 } 1058 }
878 } 1059 }
879 1060
880 } // namespace content 1061 } // namespace content
OLDNEW
« content/renderer/manifest/manifest_manager.cc ('K') | « content/renderer/manifest/manifest_parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698