Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include <string> | |
| 6 | |
| 7 #include "content/browser/media/media_browsertest.h" | |
| 8 #include "content/public/test/browser_test_utils.h" | |
| 9 #include "content/shell/browser/shell.h" | |
| 10 | |
| 11 const char* kProbablySupported = "probably"; | |
| 12 const char* kMaybeSupported = "maybe"; | |
| 13 const char* kNotSupported = ""; | |
| 14 #if defined(USE_PROPRIETARY_CODECS) | |
|
ddorwin
2014/03/18 17:58:02
nit: Add an empty line to make this more readable.
amogh.bihani
2014/03/19 13:22:17
Done.
| |
| 15 const char* kProprietaryProbablySupported = "probably"; | |
| 16 const char* kProprietaryMaybeSupported = "maybe"; | |
| 17 const char* kProprietaryProbablyElseMaybeSupported = "probably"; | |
| 18 #else | |
| 19 const char* kProprietaryProbablySupported = ""; | |
| 20 const char* kProprietaryMaybeSupported = ""; | |
| 21 const char* kProprietaryProbablyElseMaybeSupported = "maybe"; | |
| 22 #endif // USE_PROPRIETARY_CODECS | |
| 23 // TODO(amogh.bihani): Change the opus tests when opus is supported on | |
|
ddorwin
2014/03/18 17:58:02
nit: Add an empty line to make this more readable
amogh.bihani
2014/03/19 13:22:17
Done.
| |
| 24 // Android. (http://crbug.com/318436). | |
| 25 #if !defined(OS_ANDROID) | |
| 26 const char* kTheoraProbablySupported = "probably"; | |
| 27 const char* kOpusProbablySupported = "probably"; | |
| 28 const char* kTheoraMaybeSupported = "maybe"; | |
|
ddorwin
2014/03/18 17:58:02
keep the Theora's together.
amogh.bihani
2014/03/19 13:22:17
Done.
| |
| 29 #if defined(USE_PROPRIETARY_CODECS) | |
| 30 const char* kTheoraAndProprietaryProbablyElseMaybeSupported = "probably"; | |
| 31 const char* kTheoraAndProprietaryProbablySupported = "probably"; | |
| 32 const char* kOpusAndProprietaryProbablySupported = "probably"; | |
| 33 #else | |
| 34 const char* kTheoraAndProprietaryProbablySupported = ""; | |
| 35 const char* kOpusAndProprietaryProbablySupported = ""; | |
| 36 const char* kTheoraAndProprietaryProbablyElseMaybeSupported = "maybe"; | |
|
ddorwin
2014/03/18 17:58:02
This is a different order than above.
amogh.bihani
2014/03/19 13:22:17
Done.
| |
| 37 #endif // USE_PROPRIETARY_CODECS | |
| 38 #else | |
| 39 const char* kTheoraProbablySupported = ""; | |
| 40 const char* kOpusProbablySupported = ""; | |
| 41 const char* kTheoraMaybeSupported = ""; | |
| 42 const char* kOpusAndProprietaryProbablySupported = ""; | |
| 43 const char* kTheoraAndProprietaryProbablySupported = ""; | |
| 44 const char* kTheoraAndProprietaryProbablyElseMaybeSupported = ""; | |
|
ddorwin
2014/03/18 17:58:02
Order
amogh.bihani
2014/03/19 13:22:17
Done.
| |
| 45 #endif // !OS_ANDROID | |
| 46 | |
| 47 namespace content { | |
| 48 | |
| 49 class MediaMimeCanPlayTypeTest : public MediaBrowserTest { | |
| 50 protected: | |
| 51 MediaMimeCanPlayTypeTest() { } | |
| 52 ~MediaMimeCanPlayTypeTest() { } | |
| 53 | |
| 54 std::string CanPlayTypeTest(const std::string& commandString) { | |
| 55 std::string command("document.createElement('video').canPlayType("); | |
| 56 command.append(commandString); | |
| 57 command.append(")"); | |
| 58 | |
| 59 std::string result; | |
| 60 EXPECT_TRUE(ExecuteScriptAndExtractString( | |
| 61 test_shell_->web_contents(), | |
| 62 "window.domAutomationController.send(" + command + ");", | |
| 63 &result)); | |
| 64 return result; | |
| 65 } | |
| 66 | |
| 67 void SetUpShell() { | |
|
ddorwin
2014/03/18 17:58:02
No, if you use SetUp(), it will automatically be c
amogh.bihani
2014/03/19 13:22:17
Yes, I had tried that but that still gives runtime
ddorwin
2014/03/19 23:28:14
Somehow, a Shell must have already been created ([
| |
| 68 test_shell_ = CreateBrowser(); | |
| 69 } | |
| 70 | |
| 71 void TearDownShell() { | |
| 72 test_shell_->Close(); | |
| 73 } | |
| 74 private: | |
| 75 Shell* test_shell_; | |
| 76 | |
| 77 DISALLOW_COPY_AND_ASSIGN(MediaMimeCanPlayTypeTest); | |
| 78 }; | |
| 79 | |
| 80 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_wav) { | |
| 81 SetUpShell(); | |
| 82 EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'audio/wav'")); | |
| 83 EXPECT_EQ(kProbablySupported, CanPlayTypeTest("'audio/wav; codecs=\"1\"'")); | |
| 84 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"vorbis\"'")); | |
| 85 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"theora\"'")); | |
| 86 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"vp8\"'")); | |
| 87 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"vp9\"'")); | |
| 88 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"opus\"'")); | |
| 89 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"avc3\"'")); | |
| 90 EXPECT_EQ(kNotSupported, | |
| 91 CanPlayTypeTest("'audio/wav; codecs=\"mp4a.40.5\"'")); | |
| 92 EXPECT_EQ(kNotSupported, | |
| 93 CanPlayTypeTest("'audio/wav; codecs=\"avc1.4D401E\"'")); | |
| 94 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/wav; codecs=\"garbage\"'")); | |
| 95 TearDownShell(); | |
| 96 } | |
| 97 | |
| 98 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_webm) { | |
| 99 SetUpShell(); | |
| 100 // video/webm | |
| 101 EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'video/webm'")); | |
| 102 EXPECT_EQ(kProbablySupported, | |
| 103 CanPlayTypeTest("'video/webm; codecs=\"vp8\"'")); | |
| 104 EXPECT_EQ(kProbablySupported, | |
| 105 CanPlayTypeTest("'video/webm; codecs=\"vp8, vorbis\"'")); | |
| 106 EXPECT_EQ(kOpusProbablySupported, | |
| 107 CanPlayTypeTest("'video/webm; codecs=\"vp8, opus\"'")); | |
| 108 EXPECT_EQ(kProbablySupported, | |
| 109 CanPlayTypeTest("'video/webm; codecs=\"vp9\"'")); | |
| 110 EXPECT_EQ(kProbablySupported, | |
| 111 CanPlayTypeTest("'video/webm; codecs=\"vp9, vorbis\"'")); | |
| 112 EXPECT_EQ(kOpusProbablySupported, | |
| 113 CanPlayTypeTest("'video/webm; codecs=\"vp9, opus\"'")); | |
| 114 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/webm; codecs=\"vp9, 1\"'")); | |
| 115 EXPECT_EQ(kNotSupported, | |
| 116 CanPlayTypeTest("'video/webm; codecs=\"vp8, mp4a.40.2\"'")); | |
| 117 EXPECT_EQ(kNotSupported, | |
| 118 CanPlayTypeTest("'video/webm; codecs=\"theora\"'")); | |
| 119 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/webm; codecs=\"1\"'")); | |
| 120 EXPECT_EQ(kNotSupported, | |
| 121 CanPlayTypeTest("'video/webm; codecs=\"avc1.4D401E\"'")); | |
| 122 EXPECT_EQ(kNotSupported, | |
| 123 CanPlayTypeTest("'video/webm; codecs=\"mp4a.40.2\"'")); | |
| 124 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/webm; codecs=\"garbage\"'")); | |
| 125 // audio/webm | |
| 126 EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'audio/webm'")); | |
| 127 EXPECT_EQ(kProbablySupported, | |
| 128 CanPlayTypeTest("'audio/webm; codecs=\"vorbis\"'")); | |
| 129 EXPECT_EQ(kOpusProbablySupported, | |
| 130 CanPlayTypeTest("'audio/webm; codecs=\"opus\"'")); | |
| 131 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"1\"'")); | |
| 132 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"vp8\"'")); | |
| 133 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"vp9\"'")); | |
| 134 EXPECT_EQ(kNotSupported, | |
| 135 CanPlayTypeTest("'audio/webm; codecs=\"vp9, opus\"'")); | |
| 136 EXPECT_EQ(kNotSupported, | |
| 137 CanPlayTypeTest("'audio/webm; codecs=\"vp9, vorbis\"'")); | |
| 138 EXPECT_EQ(kNotSupported, | |
| 139 CanPlayTypeTest("'audio/webm; codecs=\"avc1.4D401E\"'")); | |
| 140 EXPECT_EQ(kNotSupported, | |
| 141 CanPlayTypeTest("'audio/webm; codecs=\"mp4a.40.2\"'")); | |
| 142 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'audio/webm; codecs=\"garbage\"'")); | |
| 143 TearDownShell(); | |
| 144 } | |
| 145 | |
| 146 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_ogg) { | |
| 147 SetUpShell(); | |
| 148 // video/ogg | |
| 149 EXPECT_EQ(kTheoraMaybeSupported, CanPlayTypeTest("'video/ogg'")); | |
| 150 EXPECT_EQ(kTheoraProbablySupported, | |
| 151 CanPlayTypeTest("'video/ogg; codecs=\"theora\"'")); | |
| 152 EXPECT_EQ(kTheoraProbablySupported, | |
| 153 CanPlayTypeTest("'video/ogg; codecs=\"theora, vorbis\"'")); | |
| 154 EXPECT_EQ(kTheoraProbablySupported, | |
| 155 CanPlayTypeTest("'video/ogg; codecs=\"theora, opus\"'")); | |
| 156 EXPECT_EQ(kTheoraProbablySupported, | |
| 157 CanPlayTypeTest("'video/ogg; codecs=\"vp8\"'")); | |
| 158 EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, | |
| 159 CanPlayTypeTest("'video/ogg; codecs=\"avc1\"'")); | |
| 160 EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, | |
| 161 CanPlayTypeTest("'video/ogg; codecs=\"avc3\"'")); | |
| 162 EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, | |
| 163 CanPlayTypeTest("'video/ogg; codecs=\"mp4a\"'")); | |
| 164 EXPECT_EQ(kTheoraAndProprietaryProbablyElseMaybeSupported, | |
| 165 CanPlayTypeTest("'video/ogg; codecs=\"avc1, mp4a\"'")); | |
| 166 EXPECT_EQ(kTheoraMaybeSupported, | |
| 167 CanPlayTypeTest("'video/ogg; codecs=\"avc1.4D401E\"'")); | |
| 168 EXPECT_EQ(kTheoraMaybeSupported, | |
| 169 CanPlayTypeTest("'video/ogg; codecs=\"avc3.64001F\"'")); | |
| 170 EXPECT_EQ(kTheoraMaybeSupported, | |
| 171 CanPlayTypeTest("'video/ogg; codecs=\"mp4a.4.02\"'")); | |
| 172 EXPECT_EQ(kTheoraMaybeSupported, | |
| 173 CanPlayTypeTest("'video/ogg; codecs=\"avc3.64001F, mp4a.40.2\"'")); | |
| 174 EXPECT_EQ(kTheoraMaybeSupported, | |
| 175 CanPlayTypeTest("'video/ogg; codecs=\"garbage\"'")); | |
| 176 // audio/ogg | |
| 177 EXPECT_EQ(kMaybeSupported, CanPlayTypeTest("'audio/ogg'")); | |
| 178 EXPECT_EQ(kProbablySupported, | |
| 179 CanPlayTypeTest("'audio/ogg; codecs=\"vorbis\"'")); | |
| 180 EXPECT_EQ(kTheoraProbablySupported, | |
| 181 CanPlayTypeTest("'audio/ogg; codecs=\"theora\"'")); | |
| 182 EXPECT_EQ(kProbablySupported, | |
| 183 CanPlayTypeTest("'audio/ogg; codecs=\"vp8.0\"'")); | |
| 184 EXPECT_EQ(kProbablySupported, | |
| 185 CanPlayTypeTest("'audio/ogg; codecs=\"vp9.0\"'")); | |
| 186 EXPECT_EQ(kOpusProbablySupported, | |
| 187 CanPlayTypeTest("'audio/ogg; codecs=\"opus\"'")); | |
| 188 EXPECT_EQ(kProprietaryProbablyElseMaybeSupported, | |
|
ddorwin
2014/03/18 17:58:02
OOC, is this something that will be fixed in your
amogh.bihani
2014/03/19 13:22:17
Yes. :)
| |
| 189 CanPlayTypeTest("'audio/ogg; codecs=\"mp4a\"'")); | |
| 190 EXPECT_EQ(kProprietaryProbablyElseMaybeSupported, | |
| 191 CanPlayTypeTest("'audio/ogg; codecs=\"avc1\"'")); | |
| 192 EXPECT_EQ(kProprietaryProbablyElseMaybeSupported, | |
| 193 CanPlayTypeTest("'audio/ogg; codecs=\"avc3\"'")); | |
| 194 EXPECT_EQ(kMaybeSupported, | |
| 195 CanPlayTypeTest("'audio/ogg; codecs=\"mp4a.40.2\"'")); | |
| 196 EXPECT_EQ(kMaybeSupported, | |
| 197 CanPlayTypeTest("'audio/ogg; codecs=\"avc1.4D401E\"'")); | |
| 198 EXPECT_EQ(kMaybeSupported, | |
| 199 CanPlayTypeTest("'audio/ogg; codecs=\"avc3.64001F\"'")); | |
| 200 EXPECT_EQ(kMaybeSupported, | |
| 201 CanPlayTypeTest("'audio/ogg; codecs=\"garbage\"'")); | |
| 202 TearDownShell(); | |
| 203 } | |
| 204 | |
| 205 IN_PROC_BROWSER_TEST_F(MediaMimeCanPlayTypeTest, CodecSupportTest_mpeg) { | |
| 206 SetUpShell(); | |
| 207 EXPECT_EQ(kNotSupported, CanPlayTypeTest("'video/mp3'")); | |
| 208 // video/mp4 | |
| 209 EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'video/mp4'")); | |
| 210 EXPECT_EQ(kProprietaryProbablySupported, | |
| 211 CanPlayTypeTest("'video/mp4; codecs=\"avc1\"'")); | |
| 212 EXPECT_EQ(kProprietaryProbablySupported, | |
| 213 CanPlayTypeTest("'video/mp4; codecs=\"avc3\"'")); | |
| 214 EXPECT_EQ(kProprietaryProbablySupported, | |
| 215 CanPlayTypeTest("'video/mp4; codecs=\"avc1, mp4a\"'")); | |
| 216 EXPECT_EQ(kProprietaryProbablySupported, | |
| 217 CanPlayTypeTest("'video/mp4; codecs=\"avc3\"'")); | |
| 218 EXPECT_EQ(kProprietaryProbablySupported, | |
| 219 CanPlayTypeTest("'video/mp4; codecs=\"avc1, mp4a\"'")); | |
| 220 EXPECT_EQ(kProprietaryMaybeSupported, | |
| 221 CanPlayTypeTest("'video/mp4; codecs=\"avc1.4D401E\"'")); | |
| 222 EXPECT_EQ(kProprietaryMaybeSupported, | |
| 223 CanPlayTypeTest("'video/mp4; codecs=\"avc3.64001F\"'")); | |
| 224 EXPECT_EQ(kProprietaryMaybeSupported, | |
| 225 CanPlayTypeTest("'video/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"'")); | |
| 226 EXPECT_EQ(kProprietaryMaybeSupported, | |
| 227 CanPlayTypeTest("'video/mp4; codecs=\"avc3.64001F, mp4a.40.5\"'")); | |
| 228 EXPECT_EQ(kProprietaryMaybeSupported, | |
| 229 CanPlayTypeTest("'video/mp4; codecs=\"garbage\"'")); | |
| 230 EXPECT_EQ(kProprietaryProbablySupported, | |
| 231 CanPlayTypeTest("'video/mp4; codecs=\"vp8\"'")); | |
| 232 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
| 233 CanPlayTypeTest("'video/mp4; codecs=\"opus\"'")); | |
| 234 EXPECT_EQ(kProprietaryProbablySupported, | |
| 235 CanPlayTypeTest("'video/mp4; codecs=\"vorbis\"'")); | |
| 236 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
| 237 CanPlayTypeTest("'video/mp4; codecs=\"theora\"'")); | |
| 238 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
| 239 CanPlayTypeTest("'video/mp4; codecs=\"vp9, opus\"'")); | |
| 240 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
| 241 CanPlayTypeTest("'video/mp4; codecs=\"theora, vorbis\"'")); | |
| 242 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
| 243 CanPlayTypeTest("'video/mp4; codecs=\"theora, mp4a\"'")); | |
| 244 EXPECT_EQ(kProprietaryProbablySupported, | |
| 245 CanPlayTypeTest("'video/mp4; codecs=\"avc1, vorbis\"'")); | |
| 246 // audio/mpeg | |
| 247 EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'audio/mpeg'")); | |
| 248 EXPECT_EQ(kProprietaryProbablySupported, | |
| 249 CanPlayTypeTest("'audio/mpeg; codecs=\"mp4a\"'")); | |
| 250 EXPECT_EQ(kProprietaryProbablySupported, | |
| 251 CanPlayTypeTest("'audio/mpeg; codecs=\"avc1\"'")); | |
| 252 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
| 253 CanPlayTypeTest("'audio/mpeg; codecs=\"opus\"'")); | |
| 254 EXPECT_EQ(kProprietaryProbablySupported, | |
| 255 CanPlayTypeTest("'audio/mpeg; codecs=\"vorbis\"'")); | |
| 256 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
| 257 CanPlayTypeTest("'audio/mpeg; codecs=\"theora\"'")); | |
| 258 EXPECT_EQ(kProprietaryProbablySupported, | |
| 259 CanPlayTypeTest("'audio/mpeg; codecs=\"vp8\"'")); | |
| 260 // audio/mp3 | |
| 261 EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'audio/mp3'")); | |
| 262 EXPECT_EQ(kProprietaryProbablySupported, | |
| 263 CanPlayTypeTest("'audio/mp3; codecs=\"mp4a\"'")); | |
| 264 EXPECT_EQ(kProprietaryProbablySupported, | |
| 265 CanPlayTypeTest("'audio/mp3; codecs=\"avc1\"'")); | |
| 266 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
| 267 CanPlayTypeTest("'audio/mp3; codecs=\"opus\"'")); | |
| 268 EXPECT_EQ(kProprietaryProbablySupported, | |
| 269 CanPlayTypeTest("'audio/mp3; codecs=\"vorbis\"'")); | |
| 270 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
| 271 CanPlayTypeTest("'audio/mp3; codecs=\"theora\"'")); | |
| 272 EXPECT_EQ(kProprietaryProbablySupported, | |
| 273 CanPlayTypeTest("'audio/mp3; codecs=\"vp8\"'")); | |
| 274 // audio/mp4 | |
| 275 EXPECT_EQ(kProprietaryMaybeSupported, CanPlayTypeTest("'audio/mp4'")); | |
| 276 EXPECT_EQ(kProprietaryProbablySupported, | |
| 277 CanPlayTypeTest("'audio/mp4; codecs=\"mp4a\"'")); | |
| 278 EXPECT_EQ(kProprietaryMaybeSupported, | |
| 279 CanPlayTypeTest("'audio/mp4; codecs=\"mp4a.40.2\"'")); | |
| 280 EXPECT_EQ(kProprietaryProbablySupported, | |
| 281 CanPlayTypeTest("'audio/mp4; codecs=\"avc1\"'")); | |
| 282 EXPECT_EQ(kProprietaryProbablySupported, | |
| 283 CanPlayTypeTest("'audio/mp4; codecs=\"avc3\"'")); | |
| 284 EXPECT_EQ(kProprietaryMaybeSupported, | |
| 285 CanPlayTypeTest("'audio/mp4; codecs=\"avc1.4D401E\"'")); | |
| 286 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
| 287 CanPlayTypeTest("'audio/mp4; codecs=\"opus\"'")); | |
| 288 EXPECT_EQ(kProprietaryProbablySupported, | |
| 289 CanPlayTypeTest("'audio/mp4; codecs=\"vorbis\"'")); | |
| 290 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
| 291 CanPlayTypeTest("'audio/mp4; codecs=\"theora\"'")); | |
| 292 EXPECT_EQ(kProprietaryProbablySupported, | |
| 293 CanPlayTypeTest("'audio/mp4; codecs=\"vp8\"'")); | |
| 294 EXPECT_EQ(kOpusAndProprietaryProbablySupported, | |
| 295 CanPlayTypeTest("'audio/mp4; codecs=\"vp9, opus\"'")); | |
| 296 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
| 297 CanPlayTypeTest("'audio/mp4; codecs=\"theora, vorbis\"'")); | |
| 298 EXPECT_EQ(kTheoraAndProprietaryProbablySupported, | |
| 299 CanPlayTypeTest("'audio/mp4; codecs=\"theora, mp4a\"'")); | |
| 300 EXPECT_EQ(kProprietaryProbablySupported, | |
| 301 CanPlayTypeTest("'audio/mp4; codecs=\"avc1, vorbis\"'")); | |
| 302 TearDownShell(); | |
| 303 } | |
| 304 | |
| 305 } // namespace content | |
| OLD | NEW |