OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/utf_string_conversions.h" | 5 #include "base/utf_string_conversions.h" |
6 #include "chrome/app/chrome_command_ids.h" | 6 #include "chrome/app/chrome_command_ids.h" |
7 #include "chrome/browser/extensions/extension_browsertest.h" | 7 #include "chrome/browser/extensions/extension_browsertest.h" |
8 #include "chrome/browser/extensions/extension_service.h" | 8 #include "chrome/browser/extensions/extension_service.h" |
9 #include "chrome/browser/extensions/extension_system.h" | 9 #include "chrome/browser/extensions/extension_system.h" |
10 #include "chrome/browser/extensions/extension_test_message_listener.h" | 10 #include "chrome/browser/extensions/extension_test_message_listener.h" |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
87 public: | 87 public: |
88 // Helper to load an extension from context_menus/|subdirectory| in the | 88 // Helper to load an extension from context_menus/|subdirectory| in the |
89 // extensions test data dir. | 89 // extensions test data dir. |
90 const extensions::Extension* LoadContextMenuExtension( | 90 const extensions::Extension* LoadContextMenuExtension( |
91 std::string subdirectory) { | 91 std::string subdirectory) { |
92 base::FilePath extension_dir = | 92 base::FilePath extension_dir = |
93 test_data_dir_.AppendASCII("context_menus").AppendASCII(subdirectory); | 93 test_data_dir_.AppendASCII("context_menus").AppendASCII(subdirectory); |
94 return LoadExtension(extension_dir); | 94 return LoadExtension(extension_dir); |
95 } | 95 } |
96 | 96 |
97 // Helper to load an extension from context_menus/top_level/|subdirectory| in | |
98 // the extensions test data dir. | |
99 const extensions::Extension* LoadTopLevelContextMenuExtension( | |
100 std::string subdirectory) { | |
101 base::FilePath extension_dir = | |
102 test_data_dir_.AppendASCII("context_menus").AppendASCII("top_level"); | |
103 extension_dir = extension_dir.AppendASCII(subdirectory); | |
104 return LoadExtension(extension_dir); | |
105 } | |
106 | |
97 const extensions::Extension* LoadContextMenuExtensionIncognito( | 107 const extensions::Extension* LoadContextMenuExtensionIncognito( |
98 std::string subdirectory) { | 108 std::string subdirectory) { |
99 base::FilePath extension_dir = | 109 base::FilePath extension_dir = |
100 test_data_dir_.AppendASCII("context_menus").AppendASCII(subdirectory); | 110 test_data_dir_.AppendASCII("context_menus").AppendASCII(subdirectory); |
101 return LoadExtensionIncognito(extension_dir); | 111 return LoadExtensionIncognito(extension_dir); |
102 } | 112 } |
103 | 113 |
104 TestRenderViewContextMenu* CreateMenu(Browser* browser, | 114 TestRenderViewContextMenu* CreateMenu(Browser* browser, |
105 const GURL& page_url, | 115 const GURL& page_url, |
106 const GURL& link_url, | 116 const GURL& link_url, |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
324 // truncated. | 334 // truncated. |
325 GURL url("http://foo.com/"); | 335 GURL url("http://foo.com/"); |
326 scoped_ptr<TestRenderViewContextMenu> menu( | 336 scoped_ptr<TestRenderViewContextMenu> menu( |
327 CreateMenu(browser(), url, GURL(), GURL())); | 337 CreateMenu(browser(), url, GURL(), GURL())); |
328 | 338 |
329 string16 label; | 339 string16 label; |
330 ASSERT_TRUE(GetItemLabel(menu.get(), item->id(), &label)); | 340 ASSERT_TRUE(GetItemLabel(menu.get(), item->id(), &label)); |
331 ASSERT_TRUE(label.size() <= limit); | 341 ASSERT_TRUE(label.size() <= limit); |
332 } | 342 } |
333 | 343 |
344 // Checks that Context Menus are ordered alphabetically by their name when | |
345 // extensions have only one single Context Menu item and by the extension name | |
346 // when multiples Context Menu items are created. | |
347 IN_PROC_BROWSER_TEST_F(ExtensionContextMenuBrowserTest, TopLevel) { | |
348 // We expect to see the following items in the menu: | |
349 // An Extension with multiple Context Menus | |
350 // Context Menu #1 | |
351 // Context Menu #2 | |
352 // Context Menu #1 - Extension #2 | |
353 // Context Menu #2 - Extension #3 | |
354 // Context Menu #3 - Extension #1 | |
355 // Ze Extension with multiple Context Menus | |
356 // Context Menu #1 | |
357 // Context Menu #2 | |
358 | |
359 // Load extensions and wait until it's created a single menu item. | |
360 ExtensionTestMessageListener listener1("created item", false); | |
361 ASSERT_TRUE(LoadTopLevelContextMenuExtension("single1")); | |
362 ASSERT_TRUE(listener1.WaitUntilSatisfied()); | |
363 | |
364 ExtensionTestMessageListener listener2("created item", false); | |
365 ASSERT_TRUE(LoadTopLevelContextMenuExtension("single2")); | |
366 ASSERT_TRUE(listener2.WaitUntilSatisfied()); | |
367 | |
368 ExtensionTestMessageListener listener3("created item", false); | |
369 ASSERT_TRUE(LoadTopLevelContextMenuExtension("single3")); | |
370 ASSERT_TRUE(listener3.WaitUntilSatisfied()); | |
371 | |
372 // Load extensions and wait until it's created two menu items. | |
373 ExtensionTestMessageListener listener4("created items", false); | |
374 ASSERT_TRUE(LoadTopLevelContextMenuExtension("multi4")); | |
375 ASSERT_TRUE(listener4.WaitUntilSatisfied()); | |
376 | |
377 ExtensionTestMessageListener listener5("created items", false); | |
378 ASSERT_TRUE(LoadTopLevelContextMenuExtension("multi5")); | |
379 ASSERT_TRUE(listener5.WaitUntilSatisfied()); | |
380 | |
381 GURL url("http://foo.com/"); | |
382 scoped_ptr<TestRenderViewContextMenu> menu( | |
383 CreateMenu(browser(), url, GURL(), GURL())); | |
384 | |
385 int index = 0; | |
386 MenuModel* model = NULL; | |
387 | |
388 ASSERT_TRUE(menu->GetMenuModelAndItemIndex( | |
389 IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST, &model, &index)); | |
Yoyo Zhou
2013/05/08 22:54:30
Line continuations like this are 4 space indents.
François Beaufort
2013/06/04 13:09:20
Done.
| |
390 EXPECT_EQ(UTF8ToUTF16("An Extension with multiple Context Menus"), | |
391 model->GetLabelAt(index++)); | |
Yoyo Zhou
2013/05/08 22:54:30
Indentation is still not to the open paren.
François Beaufort
2013/06/04 13:09:20
Done.
| |
392 EXPECT_EQ(UTF8ToUTF16("Context Menu #1 - Extension #2"), | |
393 model->GetLabelAt(index++)); | |
394 EXPECT_EQ(UTF8ToUTF16("Context Menu #2 - Extension #3"), | |
395 model->GetLabelAt(index++)); | |
396 EXPECT_EQ(UTF8ToUTF16("Context Menu #3 - Extension #1"), | |
397 model->GetLabelAt(index++)); | |
398 EXPECT_EQ(UTF8ToUTF16("Ze Extension with multiple Context Menus"), | |
399 model->GetLabelAt(index++)); | |
400 } | |
401 | |
334 // Checks that in |menu|, the item at |index| has type |expected_type| and a | 402 // Checks that in |menu|, the item at |index| has type |expected_type| and a |
335 // label of |expected_label|. | 403 // label of |expected_label|. |
336 static void ExpectLabelAndType(const char* expected_label, | 404 static void ExpectLabelAndType(const char* expected_label, |
337 MenuModel::ItemType expected_type, | 405 MenuModel::ItemType expected_type, |
338 const MenuModel& menu, | 406 const MenuModel& menu, |
339 int index) { | 407 int index) { |
340 EXPECT_EQ(expected_type, menu.GetTypeAt(index)); | 408 EXPECT_EQ(expected_type, menu.GetTypeAt(index)); |
341 EXPECT_EQ(UTF8ToUTF16(expected_label), menu.GetLabelAt(index)); | 409 EXPECT_EQ(UTF8ToUTF16(expected_label), menu.GetLabelAt(index)); |
342 } | 410 } |
343 | 411 |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
580 ASSERT_TRUE(LoadContextMenuExtensionIncognito("incognito")); | 648 ASSERT_TRUE(LoadContextMenuExtensionIncognito("incognito")); |
581 | 649 |
582 // Wait for the extension's processes to tell us they've created an item. | 650 // Wait for the extension's processes to tell us they've created an item. |
583 ASSERT_TRUE(created.WaitUntilSatisfied()); | 651 ASSERT_TRUE(created.WaitUntilSatisfied()); |
584 ASSERT_TRUE(created_incognito.WaitUntilSatisfied()); | 652 ASSERT_TRUE(created_incognito.WaitUntilSatisfied()); |
585 ASSERT_EQ(2u, GetItems().size()); | 653 ASSERT_EQ(2u, GetItems().size()); |
586 | 654 |
587 browser()->profile()->DestroyOffTheRecordProfile(); | 655 browser()->profile()->DestroyOffTheRecordProfile(); |
588 ASSERT_EQ(1u, GetItems().size()); | 656 ASSERT_EQ(1u, GetItems().size()); |
589 } | 657 } |
OLD | NEW |