blob: 9351d1ecba18e78f4902fd593c21741d5c56e15e [file] [log] [blame]
// Copyright 2014 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/macros.h"
#include "base/strings/string_split.h"
#include "base/strings/utf_string_conversions.h"
#include "chromecast/browser/test/chromecast_browser_test.h"
#include "chromecast/browser/test/chromecast_browser_test_helper.h"
#include "chromecast/chromecast_features.h"
#include "content/public/test/browser_test_utils.h"
#include "media/base/test_data_util.h"
#include "url/gurl.h"
#include "url/url_constants.h"
namespace chromecast {
namespace shell {
namespace {
const char kEnded[] = "ENDED";
const char kError[] = "ERROR";
const char kFailed[] = "FAILED";
}
class ChromecastShellBrowserTest : public ChromecastBrowserTest {
public:
ChromecastShellBrowserTest() {}
void LoadAboutBlank() {
content::WebContents* web_contents =
helper_->NavigateToURL(GURL(url::kAboutBlankURL));
content::TitleWatcher title_watcher(
web_contents, base::ASCIIToUTF16(url::kAboutBlankURL));
base::string16 result = title_watcher.WaitAndGetTitle();
EXPECT_EQ(url::kAboutBlankURL, base::UTF16ToASCII(result));
}
void PlayAudio(const std::string& media_file) {
PlayMedia("audio", media_file);
}
void PlayVideo(const std::string& media_file) {
PlayMedia("video", media_file);
}
private:
void PlayMedia(const std::string& tag,
const std::string& media_file) {
base::StringPairs query_params;
query_params.push_back(std::make_pair(tag, media_file));
RunMediaTestPage("player.html", query_params, kEnded);
}
void RunMediaTestPage(const std::string& html_page,
const base::StringPairs& query_params,
const std::string& expected_title) {
std::string query = media::GetURLQueryString(query_params);
GURL gurl = content::GetFileUrlWithQuery(
media::GetTestDataFilePath(html_page),
query);
std::string final_title = RunTest(gurl, expected_title);
EXPECT_EQ(expected_title, final_title);
}
std::string RunTest(const GURL& gurl,
const std::string& expected_title) {
content::WebContents* web_contents = helper_->NavigateToURL(gurl);
content::TitleWatcher title_watcher(web_contents,
base::ASCIIToUTF16(expected_title));
title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16(kEnded));
title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16(kError));
title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16(kFailed));
base::string16 result = title_watcher.WaitAndGetTitle();
return base::UTF16ToASCII(result);
}
DISALLOW_COPY_AND_ASSIGN(ChromecastShellBrowserTest);
};
IN_PROC_BROWSER_TEST_F(ChromecastShellBrowserTest, EmptyTest) {
// Run an entire browser lifecycle to ensure nothing breaks.
LoadAboutBlank();
}
IN_PROC_BROWSER_TEST_F(ChromecastShellBrowserTest, AudioPlaybackWavPcm) {
PlayAudio("bear_pcm.wav");
}
#if !BUILDFLAG(DISABLE_DISPLAY)
IN_PROC_BROWSER_TEST_F(ChromecastShellBrowserTest, VideoPlaybackMp4) {
PlayVideo("bear.mp4");
}
#endif
} // namespace shell
} // namespace chromecast