diff options
author | lazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-01 17:03:26 +0000 |
---|---|---|
committer | lazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-01 17:03:26 +0000 |
commit | 5811bc7423fcdac8cb4e960b48033ea3ae487339 (patch) | |
tree | 3203542ed3b3fde590d25b7a86436d958f58b5b6 | |
parent | b98fe89b50983ed18e4209c209d0c030c0957c12 (diff) | |
download | chromium_src-5811bc7423fcdac8cb4e960b48033ea3ae487339.zip chromium_src-5811bc7423fcdac8cb4e960b48033ea3ae487339.tar.gz chromium_src-5811bc7423fcdac8cb4e960b48033ea3ae487339.tar.bz2 |
Add unit test for context_menu_content_type.cc
BUG=None
Test=Unit test only change.
Review URL: https://codereview.chromium.org/185003003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@254374 0039d316-1c4b-4281-b951-d872f2087c98
3 files changed, 156 insertions, 0 deletions
diff --git a/chrome/browser/renderer_context_menu/context_menu_content_type.h b/chrome/browser/renderer_context_menu/context_menu_content_type.h index 9bbb97d..66f9a14 100644 --- a/chrome/browser/renderer_context_menu/context_menu_content_type.h +++ b/chrome/browser/renderer_context_menu/context_menu_content_type.h @@ -75,6 +75,7 @@ class ContextMenuContentType { private: friend class ContextMenuContentTypeFactory; + friend class ContextMenuContentTypeTest; bool HasCustomItems(const std::vector<content::MenuItem>& items) const; void Initialize(); diff --git a/chrome/browser/renderer_context_menu/context_menu_content_type_unittest.cc b/chrome/browser/renderer_context_menu/context_menu_content_type_unittest.cc new file mode 100644 index 0000000..9d77a456 --- /dev/null +++ b/chrome/browser/renderer_context_menu/context_menu_content_type_unittest.cc @@ -0,0 +1,154 @@ +// Copyright 2014 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 "chrome/browser/renderer_context_menu/context_menu_content_type.h" + +#include "base/memory/scoped_ptr.h" +#include "base/strings/utf_string_conversions.h" +#include "chrome/browser/renderer_context_menu/render_view_context_menu_test_util.h" +#include "chrome/test/base/chrome_render_view_host_test_harness.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" + + +using extensions::MenuItem; + +class ContextMenuContentTypeTest : public ChromeRenderViewHostTestHarness { + public: + static ContextMenuContentType* Create( + content::RenderFrameHost* render_frame_host, + content::ContextMenuParams& params) { + return new ContextMenuContentType(render_frame_host, params, true); + } +}; + +// Generates a ContextMenuParams that matches the specified contexts. +content::ContextMenuParams CreateParams(int contexts) { + content::ContextMenuParams rv; + rv.is_editable = false; + rv.media_type = blink::WebContextMenuData::MediaTypeNone; + rv.page_url = GURL("http://test.page/"); + + static const base::string16 selected_text = base::ASCIIToUTF16("sel"); + if (contexts & MenuItem::SELECTION) + rv.selection_text = selected_text; + + if (contexts & MenuItem::LINK) { + rv.link_url = GURL("http://test.link/"); + rv.unfiltered_link_url = GURL("http://test.link/"); + } + + if (contexts & MenuItem::EDITABLE) + rv.is_editable = true; + + if (contexts & MenuItem::IMAGE) { + rv.src_url = GURL("http://test.image/"); + rv.media_type = blink::WebContextMenuData::MediaTypeImage; + } + + if (contexts & MenuItem::VIDEO) { + rv.src_url = GURL("http://test.video/"); + rv.media_type = blink::WebContextMenuData::MediaTypeVideo; + } + + if (contexts & MenuItem::AUDIO) { + rv.src_url = GURL("http://test.audio/"); + rv.media_type = blink::WebContextMenuData::MediaTypeAudio; + } + + if (contexts & MenuItem::FRAME) + rv.frame_url = GURL("http://test.frame/"); + + return rv; +} + +TEST_F(ContextMenuContentTypeTest, CheckTypes) { + { + content::ContextMenuParams params = CreateParams(MenuItem::LINK); + scoped_ptr<ContextMenuContentType> content_type(Create(main_rfh(), params)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_LINK)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_ALL_EXTENSION)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_CURRENT_EXTENSION)); + } + + { + content::ContextMenuParams params = CreateParams(MenuItem::SELECTION); + scoped_ptr<ContextMenuContentType> content_type(Create(main_rfh(), params)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_LINK)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_COPY)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_EDITABLE)); + } + + { + content::ContextMenuParams params = CreateParams(MenuItem::EDITABLE); + scoped_ptr<ContextMenuContentType> content_type(Create(main_rfh(), params)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_LINK)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_COPY)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_EDITABLE)); + } + + { + content::ContextMenuParams params = CreateParams(MenuItem::IMAGE); + scoped_ptr<ContextMenuContentType> content_type(Create(main_rfh(), params)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_IMAGE)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_SEARCHWEBFORIMAGE)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_PRINT)); + + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_VIDEO)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_AUDIO)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_PLUGIN)); + } + + { + content::ContextMenuParams params = CreateParams(MenuItem::VIDEO); + scoped_ptr<ContextMenuContentType> content_type(Create(main_rfh(), params)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_VIDEO)); + + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_IMAGE)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_AUDIO)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_PLUGIN)); + } + + { + content::ContextMenuParams params = CreateParams(MenuItem::AUDIO); + scoped_ptr<ContextMenuContentType> content_type(Create(main_rfh(), params)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_AUDIO)); + + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_IMAGE)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_VIDEO)); + EXPECT_FALSE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_MEDIA_PLUGIN)); + } + + { + content::ContextMenuParams params = CreateParams(MenuItem::FRAME); + scoped_ptr<ContextMenuContentType> content_type(Create(main_rfh(), params)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_FRAME)); + EXPECT_TRUE(content_type->SupportsGroup( + ContextMenuContentType::ITEM_GROUP_PAGE)); + } +} diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi index 65823c6..2659d93 100644 --- a/chrome/chrome_tests_unit.gypi +++ b/chrome/chrome_tests_unit.gypi @@ -1186,6 +1186,7 @@ 'browser/profiles/profile_list_desktop_unittest.cc', 'browser/profiles/profile_manager_unittest.cc', 'browser/profiles/profile_shortcut_manager_unittest_win.cc', + 'browser/renderer_context_menu/context_menu_content_type_unittest.cc', 'browser/renderer_context_menu/render_view_context_menu_test_util.cc', 'browser/renderer_context_menu/render_view_context_menu_test_util.h', 'browser/renderer_context_menu/render_view_context_menu_unittest.cc', |