// Copyright (c) 2011 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/command_line.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_webnavigation_api.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/chrome_switches.h" #include "chrome/test/ui_test_utils.h" #include "content/browser/tab_contents/tab_contents.h" IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigation) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); FrameNavigationState::set_allow_extension_scheme(true); ASSERT_TRUE(RunExtensionTest("webnavigation/api")) << message_; } IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationClientRedirect) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); FrameNavigationState::set_allow_extension_scheme(true); ASSERT_TRUE(RunExtensionTest("webnavigation/clientRedirect")) << message_; } IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationForwardBack) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); FrameNavigationState::set_allow_extension_scheme(true); ASSERT_TRUE(RunExtensionTest("webnavigation/forwardBack")) << message_; } IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationIFrame) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); FrameNavigationState::set_allow_extension_scheme(true); ASSERT_TRUE(RunExtensionTest("webnavigation/iframe")) << message_; } IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationOpenTab) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); FrameNavigationState::set_allow_extension_scheme(true); ASSERT_TRUE(RunExtensionTest("webnavigation/openTab")) << message_; } IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationReferenceFragment) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); FrameNavigationState::set_allow_extension_scheme(true); ASSERT_TRUE(RunExtensionTest("webnavigation/referenceFragment")) << message_; } IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationSimpleLoad) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); FrameNavigationState::set_allow_extension_scheme(true); ASSERT_TRUE(RunExtensionTest("webnavigation/simpleLoad")) << message_; } IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationFailures) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); FrameNavigationState::set_allow_extension_scheme(true); ASSERT_TRUE(RunExtensionTest("webnavigation/failures")) << message_; } IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WebNavigationUserAction) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); FrameNavigationState::set_allow_extension_scheme(true); // Wait for the extension to set itself up and return control to us. ASSERT_TRUE(RunExtensionTest("webnavigation/userAction")) << message_; ResultCatcher catcher; ExtensionService* service = browser()->profile()->GetExtensionService(); const Extension* extension = service->GetExtensionById(last_loaded_extension_id_, false); GURL url = extension->GetResourceURL("a.html"); ui_test_utils::NavigateToURL(browser(), url); url = extension->GetResourceURL("b.html"); // This corresponds to "Open link in new tab". browser()->GetSelectedTabContents()->OpenURL( url, GURL(), NEW_BACKGROUND_TAB, PageTransition::LINK); ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); }