Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4107)

Unified Diff: chrome/browser/extensions/extension_menu_manager_unittest.cc

Issue 8935016: Contributed by Eriq Augustine <eriq.augustine@gmail.com> (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698