1 // Copyright 2013 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 "chrome/browser/media/media_browsertest.h" 6 7 #include "base/path_service.h" 8 #include "base/strings/stringprintf.h" 9 #include "base/strings/utf_string_conversions.h" 10 #include "chrome/browser/ui/browser.h" 11 #include "chrome/browser/ui/tabs/tab_strip_model.h" 12 #include "chrome/common/chrome_paths.h" 13 #include "chrome/test/base/ui_test_utils.h" 14 #include "content/public/test/browser_test_utils.h" 15 16 // Common test results. 17 const char MediaBrowserTest::kEnded[] = "ENDED"; 18 const char MediaBrowserTest::kError[] = "ERROR"; 19 const char MediaBrowserTest::kFailed[] = "FAILED"; 20 21 MediaBrowserTest::MediaBrowserTest() { 22 } 23 24 MediaBrowserTest::~MediaBrowserTest() { 25 } 26 27 void MediaBrowserTest::RunMediaTestPage( 28 const char* html_page, std::vector<StringPair>* query_params, 29 const char* expected_title, bool http) { 30 GURL gurl; 31 std::string query = ""; 32 if (query_params != NULL && !query_params->empty()) { 33 std::vector<StringPair>::const_iterator itr = query_params->begin(); 34 query = base::StringPrintf("%s=%s", itr->first, itr->second); 35 ++itr; 36 for (; itr != query_params->end(); ++itr) { 37 query.append(base::StringPrintf("&%s=%s", itr->first, itr->second)); 38 } 39 } 40 if (http) { 41 ASSERT_TRUE(test_server()->Start()); 42 gurl = test_server()->GetURL( 43 base::StringPrintf("files/media/%s?%s", html_page, query.c_str())); 44 } else { 45 base::FilePath test_file_path; 46 PathService::Get(chrome::DIR_TEST_DATA, &test_file_path); 47 test_file_path = test_file_path.AppendASCII("media") 48 .AppendASCII(html_page); 49 gurl = content::GetFileUrlWithQuery(test_file_path, query); 50 } 51 52 base::string16 final_title = RunTest(gurl, expected_title); 53 EXPECT_EQ(ASCIIToUTF16(expected_title), final_title); 54 } 55 56 base::string16 MediaBrowserTest::RunTest(const GURL& gurl, 57 const char* expected_title) { 58 DVLOG(1) << "Running test URL: " << gurl; 59 content::TitleWatcher title_watcher( 60 browser()->tab_strip_model()->GetActiveWebContents(), 61 ASCIIToUTF16(expected_title)); 62 AddWaitForTitles(&title_watcher); 63 ui_test_utils::NavigateToURL(browser(), gurl); 64 65 return title_watcher.WaitAndGetTitle(); 66 } 67 68 void MediaBrowserTest::AddWaitForTitles(content::TitleWatcher* title_watcher) { 69 title_watcher->AlsoWaitForTitle(ASCIIToUTF16(kEnded)); 70 title_watcher->AlsoWaitForTitle(ASCIIToUTF16(kError)); 71 title_watcher->AlsoWaitForTitle(ASCIIToUTF16(kFailed)); 72 } 73