blob: 2298e3d0de65eed94d208af833a20bafd61e4de8 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/basictypes.h"
#include "base/string16.h"
#include "base/stringprintf.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/test/layout_browsertest.h"
#include "googleurl/src/gurl.h"
class MediaTest : public InProcessBrowserTest {
protected:
GURL GetTestURL(const char* tag, const char* media_file) {
FilePath test_file_path = ui_test_utils::GetTestFilePath(
FilePath(FILE_PATH_LITERAL("media")),
FilePath(FILE_PATH_LITERAL("player.html")));
std::string query = base::StringPrintf("%s=%s", tag, media_file);
return ui_test_utils::GetFileUrlWithQuery(test_file_path, query);
}
void PlayMedia(const char* tag, const char* media_file) {
GURL player_gurl = GetTestURL(tag, media_file);
// Allow the media file to be loaded.
const string16 kPlaying = ASCIIToUTF16("PLAYING");
const string16 kFailed = ASCIIToUTF16("FAILED");
const string16 kError = ASCIIToUTF16("ERROR");
ui_test_utils::TitleWatcher title_watcher(
browser()->GetSelectedWebContents(), kPlaying);
title_watcher.AlsoWaitForTitle(kFailed);
title_watcher.AlsoWaitForTitle(kError);
ui_test_utils::NavigateToURL(browser(), player_gurl);
string16 final_title = title_watcher.WaitAndGetTitle();
EXPECT_EQ(kPlaying, final_title);
}
void PlayAudio(const char* url) {
PlayMedia("audio", url);
}
void PlayVideo(const char* url) {
PlayMedia("video", url);
}
};
#if defined(OS_MACOSX)
// http://crbug.com/88834 - VideoBearTheora, VideoBearWav and VideoBearWebm
// are flaky on Mac.
#define MAYBE_VideoBearTheora DISABLED_VideoBearTheora
#define MAYBE_VideoBearWavPcm DISABLED_VideoBearWavPcm
#define MAYBE_VideoBearWebm DISABLED_VideoBearWebm
#else
#define MAYBE_VideoBearTheora VideoBearTheora
#define MAYBE_VideoBearWavPcm VideoBearWavPcm
#define MAYBE_VideoBearWebm VideoBearWebm
#endif
IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE_VideoBearTheora) {
PlayVideo("bear.ogv");
}
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearSilentTheora) {
PlayVideo("bear_silent.ogv");
}
IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE_VideoBearWebm) {
PlayVideo("bear.webm");
}
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearSilentWebm) {
PlayVideo("bear_silent.webm");
}
#if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS)
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearMp4) {
PlayVideo("bear.mp4");
}
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearSilentMp4) {
PlayVideo("bear_silent.mp4");
}
#endif
#if defined(OS_CHROMEOS)
#if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS)
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearAviMp3Mpeg4) {
PlayVideo("bear_mpeg4_mp3.avi");
}
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearAviMp3Divx) {
PlayVideo("bear_divx_mp3.avi");
}
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBear3gpAacH264) {
PlayVideo("bear_h264_aac.3gp");
}
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBear3gpAmrnbMpeg4) {
PlayVideo("bear_mpeg4_amrnb.3gp");
}
// TODO(ihf): Enable these audio codecs for CrOS.
// IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearWavAlaw) {
// PlayVideo("bear_alaw.wav");
// }
// IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearWavGsmms) {
// PlayVideo("bear_gsmms.wav");
// }
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearWavMulaw) {
PlayVideo("bear_mulaw.wav");
}
IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearFlac) {
PlayVideo("bear.flac");
}
#endif
#endif
IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE_VideoBearWavPcm) {
PlayVideo("bear_pcm.wav");
}
class MediaLayoutTest : public InProcessBrowserLayoutTest {
protected:
MediaLayoutTest() : InProcessBrowserLayoutTest(
FilePath(), FilePath().AppendASCII("media")) {
}
virtual ~MediaLayoutTest() {}
virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
InProcessBrowserLayoutTest::SetUpInProcessBrowserTestFixture();
AddResourceForLayoutTest(FilePath().AppendASCII("media"),
FilePath().AppendASCII("content"));
AddResourceForLayoutTest(FilePath().AppendASCII("media"),
FilePath().AppendASCII("media-file.js"));
AddResourceForLayoutTest(FilePath().AppendASCII("media"),
FilePath().AppendASCII("media-fullscreen.js"));
AddResourceForLayoutTest(FilePath().AppendASCII("media"),
FilePath().AppendASCII("video-paint-test.js"));
AddResourceForLayoutTest(FilePath().AppendASCII("media"),
FilePath().AppendASCII("video-played.js"));
AddResourceForLayoutTest(FilePath().AppendASCII("media"),
FilePath().AppendASCII("video-test.js"));
}
};
IN_PROC_BROWSER_TEST_F(MediaLayoutTest, Tests) {
static const char* kMediaTests[] = {
"video-autoplay.html",
// "video-loop.html", disabled due to 52887.
"video-no-autoplay.html",
// TODO(sergeyu): Add more tests here.
};
for (size_t i = 0; i < arraysize(kMediaTests); ++i)
RunLayoutTest(kMediaTests[i]);
}