OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/common/extensions/manifest_tests/extension_manifest_test.h" | 5 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h" |
6 | 6 |
7 #include "base/string_number_conversions.h" | 7 #include "base/string_number_conversions.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "chrome/common/extensions/extension_error_utils.h" | 9 #include "chrome/common/extensions/extension_error_utils.h" |
10 #include "chrome/common/extensions/extension_manifest_constants.h" | 10 #include "chrome/common/extensions/extension_manifest_constants.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 scoped_refptr<Extension> extension( | 66 scoped_refptr<Extension> extension( |
67 LoadAndExpectSuccess("intent_valid.json")); | 67 LoadAndExpectSuccess("intent_valid.json")); |
68 ASSERT_TRUE(extension.get() != NULL); | 68 ASSERT_TRUE(extension.get() != NULL); |
69 | 69 |
70 ASSERT_EQ(1u, extension->intents_services().size()); | 70 ASSERT_EQ(1u, extension->intents_services().size()); |
71 EXPECT_EQ("image/png", UTF16ToUTF8(extension->intents_services()[0].type)); | 71 EXPECT_EQ("image/png", UTF16ToUTF8(extension->intents_services()[0].type)); |
72 EXPECT_EQ("http://webintents.org/share", | 72 EXPECT_EQ("http://webintents.org/share", |
73 UTF16ToUTF8(extension->intents_services()[0].action)); | 73 UTF16ToUTF8(extension->intents_services()[0].action)); |
74 EXPECT_EQ("chrome-extension", | 74 EXPECT_EQ("chrome-extension", |
75 extension->intents_services()[0].service_url.scheme()); | 75 extension->intents_services()[0].service_url.scheme()); |
76 EXPECT_EQ("//services/share", | 76 EXPECT_EQ("/services/share", |
77 extension->intents_services()[0].service_url.path()); | 77 extension->intents_services()[0].service_url.path()); |
78 EXPECT_EQ("Sample Sharing Intent", | 78 EXPECT_EQ("Sample Sharing Intent", |
79 UTF16ToUTF8(extension->intents_services()[0].title)); | 79 UTF16ToUTF8(extension->intents_services()[0].title)); |
80 EXPECT_EQ(webkit_glue::WebIntentServiceData::DISPOSITION_INLINE, | 80 EXPECT_EQ(webkit_glue::WebIntentServiceData::DISPOSITION_INLINE, |
81 extension->intents_services()[0].disposition); | 81 extension->intents_services()[0].disposition); |
82 | 82 |
83 // Verify that optional fields are filled with defaults. | 83 // Verify that optional fields are filled with defaults. |
84 extension = LoadAndExpectSuccess("intent_valid_minimal.json"); | 84 extension = LoadAndExpectSuccess("intent_valid_minimal.json"); |
85 ASSERT_TRUE(extension.get() != NULL); | 85 ASSERT_TRUE(extension.get() != NULL); |
86 | 86 |
87 ASSERT_EQ(1u, extension->intents_services().size()); | 87 ASSERT_EQ(1u, extension->intents_services().size()); |
88 EXPECT_EQ("*", UTF16ToUTF8(extension->intents_services()[0].type)); | 88 EXPECT_EQ("*", UTF16ToUTF8(extension->intents_services()[0].type)); |
89 EXPECT_EQ("http://webintents.org/share", | 89 EXPECT_EQ("http://webintents.org/share", |
90 UTF16ToUTF8(extension->intents_services()[0].action)); | 90 UTF16ToUTF8(extension->intents_services()[0].action)); |
91 EXPECT_EQ("", UTF16ToUTF8(extension->intents_services()[0].title)); | 91 EXPECT_EQ("", UTF16ToUTF8(extension->intents_services()[0].title)); |
92 EXPECT_EQ(webkit_glue::WebIntentServiceData::DISPOSITION_WINDOW, | 92 EXPECT_EQ(webkit_glue::WebIntentServiceData::DISPOSITION_WINDOW, |
93 extension->intents_services()[0].disposition); | 93 extension->intents_services()[0].disposition); |
94 | 94 |
95 // Make sure we support href instead of path. | 95 // Make sure we support href instead of path. |
96 extension = LoadAndExpectSuccess("intent_valid_using_href.json"); | 96 extension = LoadAndExpectSuccess("intent_valid_using_href.json"); |
97 ASSERT_TRUE(extension.get() != NULL); | 97 ASSERT_TRUE(extension.get() != NULL); |
98 ASSERT_EQ(1u, extension->intents_services().size()); | 98 ASSERT_EQ(1u, extension->intents_services().size()); |
99 EXPECT_EQ("//services/share", | 99 EXPECT_EQ("/services/share", |
100 extension->intents_services()[0].service_url.path()); | 100 extension->intents_services()[0].service_url.path()); |
101 } | 101 } |
102 | 102 |
103 TEST_F(ExtensionManifestTest, WebIntentsWithMultipleMimeTypes) { | 103 TEST_F(ExtensionManifestTest, WebIntentsWithMultipleMimeTypes) { |
104 scoped_refptr<Extension> extension( | 104 scoped_refptr<Extension> extension( |
105 LoadAndExpectSuccess("intent_valid_multitype.json")); | 105 LoadAndExpectSuccess("intent_valid_multitype.json")); |
106 ASSERT_TRUE(extension.get() != NULL); | 106 ASSERT_TRUE(extension.get() != NULL); |
107 | 107 |
108 ASSERT_EQ(2u, extension->intents_services().size()); | 108 ASSERT_EQ(2u, extension->intents_services().size()); |
109 | 109 |
110 // One registration with multiple types generates a separate service for | 110 // One registration with multiple types generates a separate service for |
111 // each MIME type. | 111 // each MIME type. |
112 for (int i = 0; i < 2; ++i) { | 112 for (int i = 0; i < 2; ++i) { |
113 EXPECT_EQ("http://webintents.org/share", | 113 EXPECT_EQ("http://webintents.org/share", |
114 UTF16ToUTF8(extension->intents_services()[i].action)); | 114 UTF16ToUTF8(extension->intents_services()[i].action)); |
115 EXPECT_EQ("chrome-extension", | 115 EXPECT_EQ("chrome-extension", |
116 extension->intents_services()[i].service_url.scheme()); | 116 extension->intents_services()[i].service_url.scheme()); |
117 EXPECT_EQ("//services/share", | 117 EXPECT_EQ("/services/share", |
118 extension->intents_services()[i].service_url.path()); | 118 extension->intents_services()[i].service_url.path()); |
119 EXPECT_EQ("Sample Sharing Intent", | 119 EXPECT_EQ("Sample Sharing Intent", |
120 UTF16ToUTF8(extension->intents_services()[i].title)); | 120 UTF16ToUTF8(extension->intents_services()[i].title)); |
121 EXPECT_EQ(webkit_glue::WebIntentServiceData::DISPOSITION_INLINE, | 121 EXPECT_EQ(webkit_glue::WebIntentServiceData::DISPOSITION_INLINE, |
122 extension->intents_services()[i].disposition); | 122 extension->intents_services()[i].disposition); |
123 } | 123 } |
124 EXPECT_EQ("image/jpeg", UTF16ToUTF8(extension->intents_services()[0].type)); | 124 EXPECT_EQ("image/jpeg", UTF16ToUTF8(extension->intents_services()[0].type)); |
125 EXPECT_EQ("image/bmp", UTF16ToUTF8(extension->intents_services()[1].type)); | 125 EXPECT_EQ("image/bmp", UTF16ToUTF8(extension->intents_services()[1].type)); |
126 | 126 |
127 LoadAndExpectError("intent_invalid_type_element.json", | 127 LoadAndExpectError("intent_invalid_type_element.json", |
(...skipping 29 matching lines...) Expand all Loading... |
157 TEST_F(ExtensionManifestTest, WebIntentsMultiHref) { | 157 TEST_F(ExtensionManifestTest, WebIntentsMultiHref) { |
158 scoped_refptr<Extension> extension( | 158 scoped_refptr<Extension> extension( |
159 LoadAndExpectSuccess("intent_valid_multi_href.json")); | 159 LoadAndExpectSuccess("intent_valid_multi_href.json")); |
160 ASSERT_TRUE(extension.get() != NULL); | 160 ASSERT_TRUE(extension.get() != NULL); |
161 ASSERT_EQ(2u, extension->intents_services().size()); | 161 ASSERT_EQ(2u, extension->intents_services().size()); |
162 | 162 |
163 const std::vector<webkit_glue::WebIntentServiceData> &intents = | 163 const std::vector<webkit_glue::WebIntentServiceData> &intents = |
164 extension->intents_services(); | 164 extension->intents_services(); |
165 | 165 |
166 EXPECT_EQ("chrome-extension", intents[0].service_url.scheme()); | 166 EXPECT_EQ("chrome-extension", intents[0].service_url.scheme()); |
167 EXPECT_EQ("//services/sharelink.html",intents[0].service_url.path()); | 167 EXPECT_EQ("/services/sharelink.html",intents[0].service_url.path()); |
168 EXPECT_EQ("text/uri-list",UTF16ToUTF8(intents[0].type)); | 168 EXPECT_EQ("text/uri-list",UTF16ToUTF8(intents[0].type)); |
169 | 169 |
170 EXPECT_EQ("chrome-extension", intents[1].service_url.scheme()); | 170 EXPECT_EQ("chrome-extension", intents[1].service_url.scheme()); |
171 EXPECT_EQ("//services/shareimage.html",intents[1].service_url.path()); | 171 EXPECT_EQ("/services/shareimage.html",intents[1].service_url.path()); |
172 EXPECT_EQ("image/*",UTF16ToUTF8(intents[1].type)); | 172 EXPECT_EQ("image/*",UTF16ToUTF8(intents[1].type)); |
173 } | 173 } |
174 | 174 |
175 TEST_F(ExtensionManifestTest, WebIntentsBlankHref) { | 175 TEST_F(ExtensionManifestTest, WebIntentsBlankHref) { |
176 LoadAndExpectError("intent_invalid_blank_action_extension.json", | 176 LoadAndExpectError("intent_invalid_blank_action_extension.json", |
177 errors::kInvalidIntentHrefEmpty); | 177 errors::kInvalidIntentHrefEmpty); |
178 | 178 |
179 scoped_refptr<Extension> extension( | 179 scoped_refptr<Extension> extension( |
180 LoadAndExpectSuccess("intent_valid_blank_action_hosted.json")); | 180 LoadAndExpectSuccess("intent_valid_blank_action_hosted.json")); |
181 ASSERT_TRUE(extension.get() != NULL); | 181 ASSERT_TRUE(extension.get() != NULL); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 EXPECT_TYPE_ERROR); | 225 EXPECT_TYPE_ERROR); |
226 | 226 |
227 LoadAndExpectSuccess("web_urls_has_port.json"); | 227 LoadAndExpectSuccess("web_urls_has_port.json"); |
228 | 228 |
229 scoped_refptr<Extension> extension( | 229 scoped_refptr<Extension> extension( |
230 LoadAndExpectSuccess("web_urls_default.json")); | 230 LoadAndExpectSuccess("web_urls_default.json")); |
231 ASSERT_EQ(1u, extension->web_extent().patterns().size()); | 231 ASSERT_EQ(1u, extension->web_extent().patterns().size()); |
232 EXPECT_EQ("*://www.google.com/*", | 232 EXPECT_EQ("*://www.google.com/*", |
233 extension->web_extent().patterns().begin()->GetAsString()); | 233 extension->web_extent().patterns().begin()->GetAsString()); |
234 } | 234 } |
OLD | NEW |