Chromium Code Reviews| Index: chrome/browser/extensions/extension_menu_manager_unittest.cc |
| =================================================================== |
| --- chrome/browser/extensions/extension_menu_manager_unittest.cc (revision 114114) |
| +++ chrome/browser/extensions/extension_menu_manager_unittest.cc (working copy) |
| @@ -251,7 +251,6 @@ |
| // Now create a third item, initially add it as a child of item1, then move |
| // it to be a child of item2. |
| ExtensionMenuItem* item3 = CreateTestItem(extension1); |
| - |
| ASSERT_TRUE(manager_.AddChildItem(item1->id(), item3)); |
| ASSERT_EQ(1, item1->child_count()); |
| ASSERT_EQ(item3, item1->children()[0]); |
| @@ -493,3 +492,64 @@ |
| ASSERT_TRUE(info->GetBoolean("editable", &bool_tmp)); |
| ASSERT_EQ(params.is_editable, bool_tmp); |
| } |
| + |
| +// Test that SanitizeRadioButtons will always leave a run of |
| +// radio buttons with one item selected. |
| +TEST_F(ExtensionMenuManagerTest, SanitizeRadioButtons) { |
| + Extension* extension = AddExtension("test"); |
| + |
| + // A single unchecked item should get checked |
| + ExtensionMenuItem* item1 = CreateTestItem(extension); |
| + |
| + manager_.AddContextItem(extension, item1); |
| + item1->set_type(ExtensionMenuItem::RADIO); |
| + item1->SetChecked(false); |
| + ASSERT_FALSE(item1->checked()); |
| + manager_.SanitizeRadioButtons(); |
| + ASSERT_TRUE(item1->checked()); |
| + |
| + // In a run of two unchecked items, the first should get selected. |
| + item1->SetChecked(false); |
| + ExtensionMenuItem* item2 = CreateTestItem(extension); |
| + item2->set_type(ExtensionMenuItem::RADIO); |
| + item2->SetChecked(false); |
| + manager_.AddContextItem(extension, item2); |
| + ASSERT_FALSE(item1->checked()); |
| + ASSERT_FALSE(item2->checked()); |
| + manager_.SanitizeRadioButtons(); |
| + ASSERT_TRUE(item1->checked()); |
| + ASSERT_FALSE(item2->checked()); |
| + |
| + // If multiple items are checked, only the last item should get checked. |
| + item1->SetChecked(true); |
| + item2->SetChecked(true); |
| + ASSERT_TRUE(item1->checked()); |
| + ASSERT_TRUE(item2->checked()); |
| + manager_.SanitizeRadioButtons(); |
| + ASSERT_FALSE(item1->checked()); |
| + ASSERT_TRUE(item2->checked()); |
| + |
| + // If the checked item is removed, the new first item should get checked. |
| + item1->SetChecked(false); |
| + item2->SetChecked(true); |
| + ASSERT_FALSE(item1->checked()); |
| + ASSERT_TRUE(item2->checked()); |
| + manager_.RemoveContextMenuItem(item2->id()); |
| + manager_.SanitizeRadioButtons(); |
| + ASSERT_TRUE(item1->checked()); |
| + |
| + // If a checked item is added to a run that already has a checked item, |
| + // then the new item should get checked. |
| + item1->SetChecked(true); |
| + ExtensionMenuItem* newItem = CreateTestItem(extension); |
| + newItem->set_type(ExtensionMenuItem::RADIO); |
| + newItem->SetChecked(true); |
| + ASSERT_TRUE(item1->checked()); |
| + ASSERT_TRUE(newItem->checked()); |
| + manager_.AddContextItem(extension, newItem); |
| + manager_.SanitizeRadioButtons(); |
| + ASSERT_FALSE(item1->checked()); |
| + ASSERT_TRUE(newItem->checked()); |
| +} |
| + |
| + |
|
Aaron Boodman
2011/12/15 00:53:55
Remove extra blank lines. There should be exactly
|