| Index: chrome/browser/apps/guest_view/web_view_browsertest.cc
|
| diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc
|
| index a7ef8be795ec7260c255e11b463a2f9916d3ed6a..bec47cb357e88a5a1774efada048abe70e5b2199 100644
|
| --- a/chrome/browser/apps/guest_view/web_view_browsertest.cc
|
| +++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc
|
| @@ -5,6 +5,7 @@
|
| #include "base/path_service.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "chrome/app/chrome_command_ids.h"
|
| #include "chrome/browser/apps/app_browsertest_util.h"
|
| #include "chrome/browser/chrome_content_browser_client.h"
|
| #include "chrome/browser/prerender/prerender_link_manager.h"
|
| @@ -1831,6 +1832,86 @@ void WebViewTest::MediaAccessAPIAllowTestHelper(const std::string& test_name) {
|
| mock->WaitForRequestMediaPermission();
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(WebViewTest, OpenURLFromTab_CurrentTab_Abort) {
|
| + LoadAppWithGuest("web_view/simple");
|
| +
|
| + // Verify that OpenURLFromTab with a window disposition of CURRENT_TAB will
|
| + // navigate the current <webview>.
|
| + ExtensionTestMessageListener load_listener("WebViewTest.LOADSTOP", false);
|
| +
|
| + // Navigating to a file URL is forbidden inside a <webview>.
|
| + content::OpenURLParams params(GURL("file://foo"),
|
| + content::Referrer(),
|
| + CURRENT_TAB,
|
| + ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
|
| + true /* is_renderer_initiated */);
|
| + GetGuestWebContents()->GetDelegate()->OpenURLFromTab(
|
| + GetGuestWebContents(), params);
|
| +
|
| + ASSERT_TRUE(load_listener.WaitUntilSatisfied());
|
| +
|
| + // Verify that the <webview> ends up at about:blank.
|
| + EXPECT_EQ(GURL(url::kAboutBlankURL),
|
| + GetGuestWebContents()->GetLastCommittedURL());
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(WebViewTest, OpenURLFromTab_NewWindow_Abort) {
|
| + LoadAppWithGuest("web_view/simple");
|
| +
|
| + // Verify that OpenURLFromTab with a window disposition of NEW_BACKGROUND_TAB
|
| + // will trigger the <webview>'s New Window API.
|
| + ExtensionTestMessageListener new_window_listener(
|
| + "WebViewTest.NEWWINDOW", false);
|
| +
|
| + // Navigating to a file URL is forbidden inside a <webview>.
|
| + content::OpenURLParams params(GURL("file://foo"),
|
| + content::Referrer(),
|
| + NEW_BACKGROUND_TAB,
|
| + ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
|
| + true /* is_renderer_initiated */);
|
| + GetGuestWebContents()->GetDelegate()->OpenURLFromTab(
|
| + GetGuestWebContents(), params);
|
| +
|
| + ASSERT_TRUE(new_window_listener.WaitUntilSatisfied());
|
| +
|
| + // Verify that a new guest was created.
|
| + content::WebContents* new_guest_web_contents =
|
| + GetGuestViewManager()->GetLastGuestCreated();
|
| + EXPECT_NE(GetGuestWebContents(), new_guest_web_contents);
|
| +
|
| + // Verify that the new <webview> guest ends up at about:blank.
|
| + EXPECT_EQ(GURL(url::kAboutBlankURL),
|
| + new_guest_web_contents->GetLastCommittedURL());
|
| +}
|
| +
|
| +// This test executes the context menu command 'LanguageSettings' which will
|
| +// load chrome://settings/languages in a browser window. This is a browser-
|
| +// initiated operation and so we expect this to succeed if the embedder is
|
| +// allowed to perform the operation.
|
| +IN_PROC_BROWSER_TEST_F(WebViewTest, ContextMenuLanguageSettings) {
|
| + LoadAppWithGuest("web_view/context_menus/basic");
|
| +
|
| + content::WebContents* guest_web_contents = GetGuestWebContents();
|
| + content::WebContents* embedder = GetEmbedderWebContents();
|
| + ASSERT_TRUE(embedder);
|
| +
|
| + // Create and build our test context menu.
|
| + content::WebContentsAddedObserver web_contents_added_observer;
|
| +
|
| + GURL page_url("http://www.google.com");
|
| + scoped_ptr<TestRenderViewContextMenu> menu(TestRenderViewContextMenu::Create(
|
| + guest_web_contents, page_url, GURL(), GURL()));
|
| + menu->ExecuteCommand(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS, 0);
|
| +
|
| + content::WebContents* new_contents =
|
| + web_contents_added_observer.GetWebContents();
|
| +
|
| + // Verify that a new WebContents has been created that is at the Language
|
| + // Settings page.
|
| + EXPECT_EQ(GURL("chrome://settings/languages"),
|
| + new_contents->GetVisibleURL());
|
| +}
|
| +
|
| IN_PROC_BROWSER_TEST_F(WebViewTest, ContextMenusAPI_Basic) {
|
| LoadAppWithGuest("web_view/context_menus/basic");
|
|
|
| @@ -1956,7 +2037,7 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, ChromeVoxInjection) {
|
| #endif
|
| IN_PROC_BROWSER_TEST_F(WebViewTest, MAYBE_TearDownTest) {
|
| const extensions::Extension* extension =
|
| - LoadAndLaunchPlatformApp("web_view/teardown", "guest-loaded");
|
| + LoadAndLaunchPlatformApp("web_view/simple", "WebViewTest.LAUNCHED");
|
| extensions::AppWindow* window = NULL;
|
| if (!GetAppWindowCount())
|
| window = CreateAppWindow(extension);
|
| @@ -1965,7 +2046,7 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, MAYBE_TearDownTest) {
|
| CloseAppWindow(window);
|
|
|
| // Load the app again.
|
| - LoadAndLaunchPlatformApp("web_view/teardown", "guest-loaded");
|
| + LoadAndLaunchPlatformApp("web_view/simple", "WebViewTest.LAUNCHED");
|
| }
|
|
|
| // In following GeolocationAPIEmbedderHasNoAccess* tests, embedder (i.e. the
|
|
|