11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/path_service.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/strings/stringprintf.h" 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/test/browser_test_utils.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/test/test_utils.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/app_window/app_window.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/app_window/app_window_registry.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/extension_host.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/guest_view/guest_view_manager.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/guest_view/guest_view_manager_factory.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/guest_view/web_view/test_guest_view_manager.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/process_manager.h" 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/common/extension.h" 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/common/extension_paths.h" 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/shell/browser/shell_extension_system.h" 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/shell/test/shell_test.h" 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/test/extension_test_message_listener.h" 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace extensions { 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This class intercepts download request from the guest. 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebViewAPITest : public AppShellTest { 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci protected: 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void RunTest(const std::string& test_name, const std::string& app_location) { 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::FilePath test_data_dir; 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci PathService::Get(DIR_TEST_DATA, &test_data_dir); 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci test_data_dir = test_data_dir.AppendASCII(app_location.c_str()); 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(extension_system_->LoadApp(test_data_dir)); 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci extension_system_->LaunchApp(); 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ExtensionTestMessageListener launch_listener("LAUNCHED", false); 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(launch_listener.WaitUntilSatisfied()); 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const AppWindowRegistry::AppWindowList& app_window_list = 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AppWindowRegistry::Get(browser_context_)->app_windows(); 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(app_window_list.size() == 1); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::WebContents* embedder_web_contents = 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (*app_window_list.begin())->web_contents(); 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ExtensionTestMessageListener done_listener("TEST_PASSED", false); 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci done_listener.set_failure_message("TEST_FAILED"); 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!content::ExecuteScript( 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci embedder_web_contents, 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::StringPrintf("runTest('%s')", test_name.c_str()))) { 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LOG(ERROR) << "Unable to start test."; 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(done_listener.WaitUntilSatisfied()); 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci WebViewAPITest() { GuestViewManager::set_factory_for_testing(&factory_); } 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestGuestViewManagerFactory factory_; 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAllowTransparencyAttribute) { 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RunTest("testAllowTransparencyAttribute", "web_view/apitest"); 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAPIMethodExistence) { 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RunTest("testAPIMethodExistence", "web_view/apitest"); 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeAfterNavigation) { 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RunTest("testAutosizeAfterNavigation", "web_view/apitest"); 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeBeforeNavigation) { 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RunTest("testAutosizeBeforeNavigation", "web_view/apitest"); 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeHeight) { 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RunTest("testAutosizeHeight", "web_view/apitest"); 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeRemoveAttributes) { 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RunTest("testAutosizeRemoveAttributes", "web_view/apitest"); 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIN_PROC_BROWSER_TEST_F(WebViewAPITest, TestAutosizeWithPartialAttributes) { 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RunTest("testAutosizeWithPartialAttributes", "web_view/apitest"); 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace extensions 90