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

Side by Side 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 8 years, 11 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <vector> 5 #include <vector>
6 6
7 #include "base/json/json_reader.h" 7 #include "base/json/json_reader.h"
8 #include "base/memory/scoped_vector.h" 8 #include "base/memory/scoped_vector.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 ASSERT_EQ(params.page_url.spec(), tmp); 486 ASSERT_EQ(params.page_url.spec(), tmp);
487 487
488 string16 tmp16; 488 string16 tmp16;
489 ASSERT_TRUE(info->GetString("selectionText", &tmp16)); 489 ASSERT_TRUE(info->GetString("selectionText", &tmp16));
490 ASSERT_EQ(params.selection_text, tmp16); 490 ASSERT_EQ(params.selection_text, tmp16);
491 491
492 bool bool_tmp = true; 492 bool bool_tmp = true;
493 ASSERT_TRUE(info->GetBoolean("editable", &bool_tmp)); 493 ASSERT_TRUE(info->GetBoolean("editable", &bool_tmp));
494 ASSERT_EQ(params.is_editable, bool_tmp); 494 ASSERT_EQ(params.is_editable, bool_tmp);
495 } 495 }
496
497 // Test that there is always only one radio item selected.
498 TEST_F(ExtensionMenuManagerTest, SanitizeRadioButtons) {
499 Extension* extension = AddExtension("test");
500
501 // A single unchecked item should get checked
502 ExtensionMenuItem* item1 = CreateTestItem(extension);
503
504 item1->set_type(ExtensionMenuItem::RADIO);
505 item1->SetChecked(false);
506 ASSERT_FALSE(item1->checked());
507 manager_.AddContextItem(extension, item1);
508 ASSERT_TRUE(item1->checked());
509
510 // In a run of two unchecked items, the first should get selected.
511 item1->SetChecked(false);
512 ExtensionMenuItem* item2 = CreateTestItem(extension);
513 item2->set_type(ExtensionMenuItem::RADIO);
514 item2->SetChecked(false);
515 ASSERT_FALSE(item1->checked());
516 ASSERT_FALSE(item2->checked());
517 manager_.AddContextItem(extension, item2);
518 ASSERT_TRUE(item1->checked());
519 ASSERT_FALSE(item2->checked());
520
521 // If multiple items are checked, only the last item should get checked.
522 item1->SetChecked(true);
523 item2->SetChecked(true);
524 ASSERT_TRUE(item1->checked());
525 ASSERT_TRUE(item2->checked());
526 manager_.ItemUpdated(item1->id());
527 ASSERT_FALSE(item1->checked());
528 ASSERT_TRUE(item2->checked());
529
530 // If the checked item is removed, the new first item should get checked.
531 item1->SetChecked(false);
532 item2->SetChecked(true);
533 ASSERT_FALSE(item1->checked());
534 ASSERT_TRUE(item2->checked());
535 manager_.RemoveContextMenuItem(item2->id());
536 item2 = NULL;
537 ASSERT_TRUE(item1->checked());
538
539 // If a checked item is added to a run that already has a checked item,
540 // then the new item should get checked.
541 item1->SetChecked(true);
542 ExtensionMenuItem* new_item = CreateTestItem(extension);
543 new_item->set_type(ExtensionMenuItem::RADIO);
544 new_item->SetChecked(true);
545 ASSERT_TRUE(item1->checked());
546 ASSERT_TRUE(new_item->checked());
547 manager_.AddContextItem(extension, new_item);
548 ASSERT_FALSE(item1->checked());
549 ASSERT_TRUE(new_item->checked());
550 // Make sure that children are checked as well.
551 ExtensionMenuItem* parent = CreateTestItem(extension);
552 manager_.AddContextItem(extension, parent);
553 ExtensionMenuItem* child1 = CreateTestItem(extension);
554 child1->set_type(ExtensionMenuItem::RADIO);
555 child1->SetChecked(false);
556 ExtensionMenuItem* child2 = CreateTestItem(extension);
557 child2->set_type(ExtensionMenuItem::RADIO);
558 child2->SetChecked(true);
559 ASSERT_FALSE(child1->checked());
560 ASSERT_TRUE(child2->checked());
561
562 manager_.AddChildItem(parent->id(), child1);
563 ASSERT_TRUE(child1->checked());
564
565 manager_.AddChildItem(parent->id(), child2);
566 ASSERT_FALSE(child1->checked());
567 ASSERT_TRUE(child2->checked());
568
569 // Removing the checked item from the children should cause the
570 // remaining child to be checked.
571 manager_.RemoveContextMenuItem(child2->id());
572 child2 = NULL;
573 ASSERT_TRUE(child1->checked());
574
575 // This should NOT cause |new_item| to be deseleted because
576 // |parent| will be seperating the two runs of radio items.
577 manager_.ChangeParent(child1->id(), NULL);
578 ASSERT_TRUE(new_item->checked());
579 ASSERT_TRUE(child1->checked());
580
581 // Removing |parent| should cause only |child1| to be selected.
582 manager_.RemoveContextMenuItem(parent->id());
583 parent = NULL;
584 ASSERT_FALSE(new_item->checked());
585 ASSERT_TRUE(child1->checked());
586 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698