summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-01 17:03:26 +0000
committerlazyboy@chromium.org <lazyboy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-01 17:03:26 +0000
commit5811bc7423fcdac8cb4e960b48033ea3ae487339 (patch)
tree3203542ed3b3fde590d25b7a86436d958f58b5b6
parentb98fe89b50983ed18e4209c209d0c030c0957c12 (diff)
downloadchromium_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
-rw-r--r--chrome/browser/renderer_context_menu/context_menu_content_type.h1
-rw-r--r--chrome/browser/renderer_context_menu/context_menu_content_type_unittest.cc154
-rw-r--r--chrome/chrome_tests_unit.gypi1
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',