// 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 #include "base/memory/scoped_ptr.h" #include "base/string16.h" #include "base/utf_string_conversions.h" #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/tab_contents/render_view_context_menu.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/browser/navigation_controller.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/web_contents.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebContextMenuData.h" using content::WebContents; namespace { class TestRenderViewContextMenu : public RenderViewContextMenu { public: TestRenderViewContextMenu(WebContents* web_contents, content::ContextMenuParams params) : RenderViewContextMenu(web_contents, params) { } virtual void PlatformInit() { } virtual bool GetAcceleratorForCommandId( int command_id, ui::Accelerator* accelerator) { return false; } bool IsItemPresent(int command_id) { return menu_model_.GetIndexOfCommandId(command_id) != -1; } }; class ContextMenuBrowserTest : public InProcessBrowserTest { public: ContextMenuBrowserTest() { } TestRenderViewContextMenu* CreateContextMenu(GURL unfiltered_url, GURL url) { content::ContextMenuParams params; params.media_type = WebKit::WebContextMenuData::MediaTypeNone; params.unfiltered_link_url = unfiltered_url; params.link_url = url; WebContents* web_contents = browser()->GetSelectedWebContents(); params.page_url = web_contents->GetController().GetActiveEntry()->GetURL(); #if defined(OS_MACOSX) params.writing_direction_default = 0; params.writing_direction_left_to_right = 0; params.writing_direction_right_to_left = 0; #endif // OS_MACOSX TestRenderViewContextMenu* menu = new TestRenderViewContextMenu( browser()->GetSelectedWebContents(), params); menu->Init(); return menu; } }; IN_PROC_BROWSER_TEST_F(ContextMenuBrowserTest, OpenEntryPresentForNormalURLs) { scoped_ptr menu( CreateContextMenu(GURL("http://www.google.com/"), GURL("http://www.google.com/"))); ASSERT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_OPENLINKNEWTAB)); ASSERT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW)); ASSERT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); } IN_PROC_BROWSER_TEST_F(ContextMenuBrowserTest, OpenEntryAbsentForFilteredURLs) { scoped_ptr menu( CreateContextMenu(GURL("chrome://history"), GURL())); ASSERT_FALSE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_OPENLINKNEWTAB)); ASSERT_FALSE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW)); ASSERT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); } } // namespace