1// Copyright 2014 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 "base/path_service.h" 6#include "base/strings/stringprintf.h" 7#include "content/public/test/browser_test_utils.h" 8#include "content/public/test/test_utils.h" 9#include "extensions/browser/app_window/app_window.h" 10#include "extensions/browser/app_window/app_window_registry.h" 11#include "extensions/browser/extension_host.h" 12#include "extensions/browser/guest_view/guest_view_manager.h" 13#include "extensions/browser/guest_view/guest_view_manager_factory.h" 14#include "extensions/browser/guest_view/web_view/test_guest_view_manager.h" 15#include "extensions/browser/process_manager.h" 16#include "extensions/common/extension.h" 17#include "extensions/common/extension_paths.h" 18#include "extensions/shell/browser/shell_extension_system.h" 19#include "extensions/shell/test/shell_test.h" 20#include "extensions/test/extension_test_message_listener.h" 21 22namespace extensions { 23 24// This class intercepts download request from the guest. 25class WebViewAPITest : public AppShellTest { 26 protected: 27 void RunTest(const std::string& test_name, const std::string& app_location) { 28 base::FilePath test_data_dir; 29 PathService::Get(DIR_TEST_DATA, &test_data_dir); 30 test_data_dir = test_data_dir.AppendASCII(app_location.c_str()); 31 32 ASSERT_TRUE(extension_system_->LoadApp(test_data_dir)); 33 extension_system_->LaunchApp(); 34 35 ExtensionTestMessageListener launch_listener("LAUNCHED", false); 36 ASSERT_TRUE(launch_listener.WaitUntilSatisfied()); 37 38 const AppWindowRegistry::AppWindowList& app_window_list = 39 AppWindowRegistry::Get(browser_context_)->app_windows(); 40 DCHECK(app_window_list.size() == 1); 41 content::WebContents* embedder_web_contents = 42 (*app_window_list.begin())->web_contents(); 43 44 ExtensionTestMessageListener done_listener("TEST_PASSED", false); 45 done_listener.set_failure_message("TEST_FAILED"); 46 if (!content::ExecuteScript( 47 embedder_web_contents, 48 base::StringPrintf("runTest('%s')", test_name.c_str()))) { 49 LOG(ERROR) << "Unable to start test."; 50 return; 51 } 52 ASSERT_TRUE(done_listener.WaitUntilSatisfied()); 53 } 54 55 WebViewAPITest() { GuestViewManager::set_factory_for_testing(&factory_); } 56 57 private: 58 TestGuestViewManagerFactory factory_; 59}; 60 61IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAllowTransparencyAttribute) { 62 RunTest("testAllowTransparencyAttribute", "web_view/apitest"); 63} 64 65IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAPIMethodExistence) { 66 RunTest("testAPIMethodExistence", "web_view/apitest"); 67} 68 69IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeAfterNavigation) { 70 RunTest("testAutosizeAfterNavigation", "web_view/apitest"); 71} 72 73IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeBeforeNavigation) { 74 RunTest("testAutosizeBeforeNavigation", "web_view/apitest"); 75} 76 77IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeHeight) { 78 RunTest("testAutosizeHeight", "web_view/apitest"); 79} 80 81IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeRemoveAttributes) { 82 RunTest("testAutosizeRemoveAttributes", "web_view/apitest"); 83} 84 85IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeWithPartialAttributes) { 86 RunTest("testAutosizeWithPartialAttributes", "web_view/apitest"); 87} 88 89} // namespace extensions 90