13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/file_util.h" 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/files/file_path.h" 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/path_service.h" 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/browser/web_contents.h" 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/common/content_paths.h" 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/test/browser_test_utils.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/shell/browser/shell.h" 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/test/content_browser_test.h" 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/test/content_browser_test_utils.h" 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "grit/content_resources.h" 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "grit/webui_resources.h" 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "net/base/net_util.h" 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace content { 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class WebUIResourceBrowserTest : public ContentBrowserTest { 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public: 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) WebUIResourceBrowserTest() {} 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual ~WebUIResourceBrowserTest() {} 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Runs all test functions in |file|, waiting for them to complete. 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void RunTest(const base::FilePath& file) { 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ASSERT_TRUE(PathExists(file)); 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NavigateToURL(shell(), net::FilePathToFileURL(file)); 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) RenderViewHost* rvh = shell()->web_contents()->GetRenderViewHost(); 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ASSERT_TRUE(rvh); 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(ExecuteWebUIResourceTest(rvh, include_libraries_)); 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void RunMediaInternalsTest(const base::FilePath::CharType* file) { 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) AddLibrary(IDR_WEBUI_JS_CR); 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) AddLibrary(IDR_MEDIA_INTERNALS_JS); 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::FilePath path; 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) PathService::Get(DIR_TEST_DATA, &path); 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) RunTest(path.Append(FILE_PATH_LITERAL("media")) 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) .Append(FILE_PATH_LITERAL("webui")) 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) .Append(file)); 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Queues the library corresponding to |resource_id| for injection into the 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // test. The code injection is performed post-load, so any common test 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // initialization that depends on the library should be placed in a setUp 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // function. 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void AddLibrary(int resource_id) { 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) include_libraries_.push_back(resource_id); 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private: 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Resource IDs for internal javascript libraries to inject into the test. 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::vector<int> include_libraries_; 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WebUIResourceBrowserTest); 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MediaInternals_Integration) { 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) RunMediaInternalsTest(FILE_PATH_LITERAL("integration_test.html")); 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MediaInternals_PlayerInfo) { 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) RunMediaInternalsTest(FILE_PATH_LITERAL("player_info_test.html")); 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MediaInternals_Manager) { 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) RunMediaInternalsTest(FILE_PATH_LITERAL("manager_test.html")); 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace content 74