1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "content/browser/media/media_browsertest.h" 6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/strings/string_number_conversions.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 9b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "content/public/browser/web_contents.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_utils.h" 11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "content/public/test/content_browser_test_utils.h" 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/shell/browser/shell.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "media/base/test_data_util.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "net/test/spawned_test_server/spawned_test_server.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// TODO(wolenetz): Fix Media.YUV* tests on MSVS 2012 x64. crbug.com/180074 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_WIN) && defined(ARCH_CPU_X86_64) && _MSC_VER == 1700 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MAYBE(x) DISABLED_##x 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MAYBE(x) x 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Common test results. 26868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)const char MediaBrowserTest::kEnded[] = "ENDED"; 27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)const char MediaBrowserTest::kError[] = "ERROR"; 28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)const char MediaBrowserTest::kFailed[] = "FAILED"; 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void MediaBrowserTest::RunMediaTestPage(const std::string& html_page, 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const media::QueryParams& query_params, 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& expected_title, 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool http) { 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) GURL gurl; 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string query = media::GetURLQueryString(query_params); 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<net::SpawnedTestServer> http_test_server; 37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (http) { 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) http_test_server.reset( 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new net::SpawnedTestServer(net::SpawnedTestServer::TYPE_HTTP, 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) net::SpawnedTestServer::kLocalhost, 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) media::GetTestDataPath())); 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CHECK(http_test_server->Start()); 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) gurl = http_test_server->GetURL("files/" + html_page + "?" + query); 44868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } else { 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) gurl = content::GetFileUrlWithQuery(media::GetTestDataFilePath(html_page), 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) query); 47868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string final_title = RunTest(gurl, expected_title); 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(expected_title, final_title); 50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 51868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)std::string MediaBrowserTest::RunTest(const GURL& gurl, 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& expected_title) { 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) VLOG(0) << "Running test URL: " << gurl; 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) TitleWatcher title_watcher(shell()->web_contents(), 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::ASCIIToUTF16(expected_title)); 57d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) AddWaitForTitles(&title_watcher); 58868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) NavigateToURL(shell(), gurl); 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::string16 result = title_watcher.WaitAndGetTitle(); 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return base::UTF16ToASCII(result); 61d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 62d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 63d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void MediaBrowserTest::AddWaitForTitles(content::TitleWatcher* title_watcher) { 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kEnded)); 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kError)); 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(kFailed)); 67868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 68868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tests playback and seeking of an audio or video file over file or http based 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// on a test parameter. Test starts with playback, then, after X seconds or the 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ended event fires, seeks near end of file; see player.html for details. The 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// test completes when either the last 'ended' or an 'error' event fires. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MediaTest : public testing::WithParamInterface<bool>, 74868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public MediaBrowserTest { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Play specified audio over http:// or file:// depending on |http| setting. 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void PlayAudio(const std::string& media_file, bool http) { 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PlayMedia("audio", media_file, http); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Play specified video over http:// or file:// depending on |http| setting. 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void PlayVideo(const std::string& media_file, bool http) { 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PlayMedia("video", media_file, http); 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Run specified color format test with the expected result. 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void RunColorFormatTest(const std::string& media_file, 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& expected) { 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::FilePath test_file_path = 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) media::GetTestDataFilePath("blackwhite.html"); 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RunTest(GetFileUrlWithQuery(test_file_path, media_file), expected); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void PlayMedia(const std::string& tag, 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& media_file, 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool http) { 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) media::QueryParams query_params; 98868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) query_params.push_back(std::make_pair(tag, media_file)); 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunMediaTestPage("player.html", query_params, kEnded, http); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void RunVideoSizeTest(const char* media_file, int width, int height) { 1036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) std::string expected; 1046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) expected += base::IntToString(width); 1056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) expected += " "; 1066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) expected += base::IntToString(height); 1076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) media::QueryParams query_params; 1086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) query_params.push_back(std::make_pair("video", media_file)); 1096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) RunMediaTestPage("player.html", query_params, expected, false); 1106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearTheora) { 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear.ogv", GetParam()); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearSilentTheora) { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear_silent.ogv", GetParam()); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWebm) { 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear.webm", GetParam()); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearOpusWebm) { 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PlayVideo("bear-opus.webm", GetParam()); 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearOpusOgg) { 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PlayVideo("bear-opus.ogg", GetParam()); 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearSilentWebm) { 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear_silent.webm", GetParam()); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if defined(USE_PROPRIETARY_CODECS) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMp4) { 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear.mp4", GetParam()); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearSilentMp4) { 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear_silent.mp4", GetParam()); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// While we support the big endian (be) PCM codecs on Chromium, Quicktime seems 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// to be the only creator of this format and only for .mov files. 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(dalecurtis/ihf): Find or create some .wav test cases for "be" format. 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMovPcmS16be) { 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear_pcm_s16be.mov", GetParam()); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMovPcmS24be) { 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear_pcm_s24be.mov", GetParam()); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearRotated0) { 1586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) RunVideoSizeTest("bear_rotate_0.mp4", 1280, 720); 1596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 1606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearRotated90) { 1626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) RunVideoSizeTest("bear_rotate_90.mp4", 720, 1280); 1636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 1646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearRotated180) { 1666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) RunVideoSizeTest("bear_rotate_180.mp4", 1280, 720); 1676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 1686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 1696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearRotated270) { 1706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) RunVideoSizeTest("bear_rotate_270.mp4", 720, 1280); 1716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 1725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // defined(USE_PROPRIETARY_CODECS) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 1753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if defined(USE_PROPRIETARY_CODECS) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Mpeg4) { 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear_mpeg4_mp3.avi", GetParam()); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Mpeg4Asp) { 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PlayVideo("bear_mpeg4asp_mp3.avi", GetParam()); 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Divx) { 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear_divx_mp3.avi", GetParam()); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBear3gpAacH264) { 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear_h264_aac.3gp", GetParam()); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBear3gpAmrnbMpeg4) { 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("bear_mpeg4_amrnb.3gp", GetParam()); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavGsmms) { 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayAudio("bear_gsm_ms.wav", GetParam()); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearFlac) { 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayAudio("bear.flac", GetParam()); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // defined(USE_PROPRIETARY_CODECS) 2045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // defined(OS_CHROMEOS) 2055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavAlaw) { 208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PlayAudio("bear_alaw.wav", GetParam()); 209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 210f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 211f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavMulaw) { 212f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PlayAudio("bear_mulaw.wav", GetParam()); 213f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 214f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavPcm) { 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayAudio("bear_pcm.wav", GetParam()); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavPcm3kHz) { 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PlayAudio("bear_3kHz.wav", GetParam()); 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavPcm192kHz) { 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PlayAudio("bear_192kHz.wav", GetParam()); 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_P(MediaTest, VideoTulipWebm) { 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PlayVideo("tulip2.webm", GetParam()); 229b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 230b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 231b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// Covers tear-down when navigating away as opposed to browser exiting. 232b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, Navigate) { 233b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) PlayVideo("bear.ogv", false); 234f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) NavigateToURL(shell(), GURL(url::kAboutBlankURL)); 235b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) EXPECT_FALSE(shell()->web_contents()->IsCrashed()); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTANTIATE_TEST_CASE_P(File, MediaTest, ::testing::Values(false)); 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTANTIATE_TEST_CASE_P(Http, MediaTest, ::testing::Values(true)); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv420pTheora)) { 2425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunColorFormatTest("yuv420p.ogv", kEnded); 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv422pTheora)) { 2465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunColorFormatTest("yuv422p.ogv", kEnded); 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv444pTheora)) { 2505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunColorFormatTest("yuv444p.ogv", kEnded); 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv420pVp8)) { 2545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunColorFormatTest("yuv420p.webm", kEnded); 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv444pVp9)) { 25846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) RunColorFormatTest("yuv444p.webm", "ENDED"); 25946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 26046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if defined(USE_PROPRIETARY_CODECS) 2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv420pH264)) { 2635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunColorFormatTest("yuv420p.mp4", kEnded); 2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuvj420pH264)) { 2675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunColorFormatTest("yuvj420p.mp4", kEnded); 2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv422pH264)) { 2715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunColorFormatTest("yuv422p.mp4", kEnded); 2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE(Yuv444pH264)) { 2755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunColorFormatTest("yuv444p.mp4", kEnded); 2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MediaTest, Yuv420pMpeg4) { 2805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RunColorFormatTest("yuv420p.avi", kEnded); 2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 2833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif // defined(USE_PROPRIETARY_CODECS) 2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 286