| Index: chrome/browser/extensions/extension_context_menu_browsertest.cc
|
| diff --git a/chrome/browser/extensions/extension_context_menu_browsertest.cc b/chrome/browser/extensions/extension_context_menu_browsertest.cc
|
| index 1ea9ef546e75a2fccd174e5372eb509115c64a28..ed68ab6024ec84fd116c19ff08c9bdae69566bb7 100644
|
| --- a/chrome/browser/extensions/extension_context_menu_browsertest.cc
|
| +++ b/chrome/browser/extensions/extension_context_menu_browsertest.cc
|
| @@ -94,6 +94,16 @@ class ExtensionContextMenuBrowserTest : public ExtensionBrowserTest {
|
| return LoadExtension(extension_dir);
|
| }
|
|
|
| + // Helper to load an extension from context_menus/top_level/|subdirectory| in
|
| + // the extensions test data dir.
|
| + const extensions::Extension* LoadTopLevelContextMenuExtension(
|
| + std::string subdirectory) {
|
| + base::FilePath extension_dir =
|
| + test_data_dir_.AppendASCII("context_menus").AppendASCII("top_level");
|
| + extension_dir = extension_dir.AppendASCII(subdirectory);
|
| + return LoadExtension(extension_dir);
|
| + }
|
| +
|
| const extensions::Extension* LoadContextMenuExtensionIncognito(
|
| std::string subdirectory) {
|
| base::FilePath extension_dir =
|
| @@ -331,6 +341,64 @@ IN_PROC_BROWSER_TEST_F(ExtensionContextMenuBrowserTest, LongTitle) {
|
| ASSERT_TRUE(label.size() <= limit);
|
| }
|
|
|
| +// Checks that Context Menus are ordered alphabetically by their name when
|
| +// extensions have only one single Context Menu item and by the extension name
|
| +// when multiples Context Menu items are created.
|
| +IN_PROC_BROWSER_TEST_F(ExtensionContextMenuBrowserTest, TopLevel) {
|
| + // We expect to see the following items in the menu:
|
| + // An Extension with multiple Context Menus
|
| + // Context Menu #1
|
| + // Context Menu #2
|
| + // Context Menu #1 - Extension #2
|
| + // Context Menu #2 - Extension #3
|
| + // Context Menu #3 - Extension #1
|
| + // Ze Extension with multiple Context Menus
|
| + // Context Menu #1
|
| + // Context Menu #2
|
| +
|
| + // Load extensions and wait until it's created a single menu item.
|
| + ExtensionTestMessageListener listener1("created item", false);
|
| + ASSERT_TRUE(LoadTopLevelContextMenuExtension("single1"));
|
| + ASSERT_TRUE(listener1.WaitUntilSatisfied());
|
| +
|
| + ExtensionTestMessageListener listener2("created item", false);
|
| + ASSERT_TRUE(LoadTopLevelContextMenuExtension("single2"));
|
| + ASSERT_TRUE(listener2.WaitUntilSatisfied());
|
| +
|
| + ExtensionTestMessageListener listener3("created item", false);
|
| + ASSERT_TRUE(LoadTopLevelContextMenuExtension("single3"));
|
| + ASSERT_TRUE(listener3.WaitUntilSatisfied());
|
| +
|
| + // Load extensions and wait until it's created two menu items.
|
| + ExtensionTestMessageListener listener4("created items", false);
|
| + ASSERT_TRUE(LoadTopLevelContextMenuExtension("multi4"));
|
| + ASSERT_TRUE(listener4.WaitUntilSatisfied());
|
| +
|
| + ExtensionTestMessageListener listener5("created items", false);
|
| + ASSERT_TRUE(LoadTopLevelContextMenuExtension("multi5"));
|
| + ASSERT_TRUE(listener5.WaitUntilSatisfied());
|
| +
|
| + GURL url("http://foo.com/");
|
| + scoped_ptr<TestRenderViewContextMenu> menu(
|
| + CreateMenu(browser(), url, GURL(), GURL()));
|
| +
|
| + int index = 0;
|
| + MenuModel* model = NULL;
|
| +
|
| + ASSERT_TRUE(menu->GetMenuModelAndItemIndex(
|
| + IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST, &model, &index));
|
| + EXPECT_EQ(UTF8ToUTF16("An Extension with multiple Context Menus"),
|
| + model->GetLabelAt(index++));
|
| + EXPECT_EQ(UTF8ToUTF16("Context Menu #1 - Extension #2"),
|
| + model->GetLabelAt(index++));
|
| + EXPECT_EQ(UTF8ToUTF16("Context Menu #2 - Extension #3"),
|
| + model->GetLabelAt(index++));
|
| + EXPECT_EQ(UTF8ToUTF16("Context Menu #3 - Extension #1"),
|
| + model->GetLabelAt(index++));
|
| + EXPECT_EQ(UTF8ToUTF16("Ze Extension with multiple Context Menus"),
|
| + model->GetLabelAt(index++));
|
| +}
|
| +
|
| // Checks that in |menu|, the item at |index| has type |expected_type| and a
|
| // label of |expected_label|.
|
| static void ExpectLabelAndType(const char* expected_label,
|
|
|