| // Copyright 2013 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/files/file_path.h" |
| #include "base/files/file_util.h" |
| #include "base/macros.h" |
| #include "base/path_service.h" |
| #include "base/threading/thread_restrictions.h" |
| #include "content/browser/resources/media/grit/media_internals_resources.h" |
| #include "content/grit/content_resources.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/common/content_paths.h" |
| #include "content/public/test/browser_test.h" |
| #include "content/public/test/browser_test_utils.h" |
| #include "content/public/test/content_browser_test.h" |
| #include "content/public/test/content_browser_test_utils.h" |
| #include "content/shell/browser/shell.h" |
| #include "net/base/filename_util.h" |
| #include "ui/resources/grit/webui_resources.h" |
| |
| namespace content { |
| |
| class WebUIResourceBrowserTest : public ContentBrowserTest { |
| public: |
| WebUIResourceBrowserTest() {} |
| ~WebUIResourceBrowserTest() override {} |
| |
| // Runs all test functions in |file|, waiting for them to complete. |
| void RunTest(const base::FilePath& file) { |
| { |
| base::ScopedAllowBlockingForTesting allow_blocking; |
| ASSERT_TRUE(PathExists(file)); |
| } |
| |
| EXPECT_TRUE(NavigateToURL(shell(), net::FilePathToFileURL(file))); |
| |
| content::WebContents* web_contents = shell()->web_contents(); |
| ASSERT_TRUE(web_contents); |
| EXPECT_TRUE(ExecuteWebUIResourceTest(web_contents, include_libraries_)); |
| } |
| |
| void RunMediaInternalsTest(const base::FilePath::CharType* file) { |
| AddLibrary(IDR_WEBUI_JS_UTIL); |
| AddLibrary(IDR_WEBUI_JS_CR); |
| AddLibrary(IDR_MEDIA_INTERNALS_JS); |
| RunTest(GetTestFilePath("media", "webui").Append(file)); |
| } |
| |
| // Queues the library corresponding to |resource_id| for injection into the |
| // test. The code injection is performed post-load, so any common test |
| // initialization that depends on the library should be placed in a setUp |
| // function. |
| void AddLibrary(int resource_id) { |
| include_libraries_.push_back(resource_id); |
| } |
| |
| private: |
| // Resource IDs for internal javascript libraries to inject into the test. |
| std::vector<int> include_libraries_; |
| |
| DISALLOW_COPY_AND_ASSIGN(WebUIResourceBrowserTest); |
| }; |
| |
| IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MediaInternals_Integration) { |
| RunMediaInternalsTest(FILE_PATH_LITERAL("integration_test.html")); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MediaInternals_PlayerInfo) { |
| RunMediaInternalsTest(FILE_PATH_LITERAL("player_info_test.html")); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MediaInternals_Manager) { |
| RunMediaInternalsTest(FILE_PATH_LITERAL("manager_test.html")); |
| } |
| |
| } // namespace content |