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

Unified Diff: chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm

Issue 2054333002: Modify chooser controller to correctly handle removing item on Mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: modified chooser controller to correctly handle removing item on Mac Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm
diff --git a/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm b/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm
index b9c39bd862354015c60f60191d9e4803ddef35bd..d3d9dd8e4a52ae2bcea14097dbe7a77960b23f2a 100644
--- a/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm
@@ -14,64 +14,11 @@
#import "chrome/browser/ui/cocoa/cocoa_profile_test.h"
#include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
#import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h"
+#include "components/chooser_controller/mock_chooser_controller.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/gtest_mac.h"
-namespace {
-
-class MockChooserController : public ChooserController {
- public:
- explicit MockChooserController(content::RenderFrameHost* owner)
- : ChooserController(owner) {}
- ~MockChooserController() override {}
-
- // ChooserController:
- size_t NumOptions() const override { return option_names_.size(); }
-
- // ChooserController:
- const base::string16& GetOption(size_t index) const override {
- return option_names_[index];
- }
-
- // ChooserController:
- MOCK_METHOD1(Select, void(size_t index));
-
- // ChooserController:
- MOCK_METHOD0(Cancel, void());
-
- // ChooserController:
- MOCK_METHOD0(Close, void());
-
- // ChooserController:
- MOCK_CONST_METHOD0(OpenHelpCenterUrl, void());
-
- void OptionAdded(const base::string16 option_name) {
- option_names_.push_back(option_name);
- if (observer())
- observer()->OnOptionAdded(option_names_.size() - 1);
- }
-
- void OptionRemoved(const base::string16 option_name) {
- for (auto it = option_names_.begin(); it != option_names_.end(); ++it) {
- if (*it == option_name) {
- size_t index = it - option_names_.begin();
- option_names_.erase(it);
- if (observer())
- observer()->OnOptionRemoved(index);
- return;
- }
- }
- }
-
- private:
- std::vector<base::string16> option_names_;
-
- DISALLOW_COPY_AND_ASSIGN(MockChooserController);
-};
-
-} // namespace
-
class ChooserDialogCocoaControllerTest : public CocoaProfileTest {
protected:
ChooserDialogCocoaControllerTest() {}
@@ -128,12 +75,12 @@ TEST_F(ChooserDialogCocoaControllerTest, InitialState) {
// Since "No devices found." needs to be displayed on the |table_view_|,
// the number of rows is 1.
- EXPECT_EQ(table_view_.numberOfRows, 1);
- EXPECT_EQ(table_view_.numberOfColumns, 1);
+ EXPECT_EQ(1, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.numberOfColumns);
// |table_view_| should be disabled since there is no option shown.
ASSERT_FALSE(table_view_.enabled);
// No option selected.
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
// |connect_button_| should be disabled since no option selected.
ASSERT_FALSE(connect_button_.enabled);
ASSERT_TRUE(cancel_button_.enabled);
@@ -144,26 +91,26 @@ TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
CreateChooserDialog();
chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
- EXPECT_EQ(table_view_.numberOfRows, 1);
- EXPECT_EQ(table_view_.numberOfColumns, 1);
+ EXPECT_EQ(1, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.numberOfColumns);
// |table_view_| should be enabled since there is an option.
ASSERT_TRUE(table_view_.enabled);
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
ASSERT_FALSE(connect_button_.enabled);
ASSERT_TRUE(cancel_button_.enabled);
ASSERT_TRUE(help_button_.enabled);
chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
- EXPECT_EQ(table_view_.numberOfRows, 2);
- EXPECT_EQ(table_view_.numberOfColumns, 1);
+ EXPECT_EQ(2, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.numberOfColumns);
ASSERT_TRUE(table_view_.enabled);
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
- EXPECT_EQ(table_view_.numberOfRows, 3);
- EXPECT_EQ(table_view_.numberOfColumns, 1);
+ EXPECT_EQ(3, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.numberOfColumns);
ASSERT_TRUE(table_view_.enabled);
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
}
TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) {
@@ -174,53 +121,51 @@ TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) {
chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
- EXPECT_EQ(table_view_.numberOfRows, 2);
- EXPECT_EQ(table_view_.numberOfColumns, 1);
+ EXPECT_EQ(2, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.numberOfColumns);
ASSERT_TRUE(table_view_.enabled);
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
// Remove a non-existent option, the number of rows should not change.
chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent"));
- EXPECT_EQ(table_view_.numberOfRows, 2);
- EXPECT_EQ(table_view_.numberOfColumns, 1);
+ EXPECT_EQ(2, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.numberOfColumns);
ASSERT_TRUE(table_view_.enabled);
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
- EXPECT_EQ(table_view_.numberOfRows, 1);
- EXPECT_EQ(table_view_.numberOfColumns, 1);
+ EXPECT_EQ(1, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.numberOfColumns);
ASSERT_TRUE(table_view_.enabled);
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
// There is no option shown now. But since "No devices found."
// needs to be displayed on the |table_view_|, the number of rows is 1.
- EXPECT_EQ(table_view_.numberOfRows, 1);
- EXPECT_EQ(table_view_.numberOfColumns, 1);
+ EXPECT_EQ(1, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.numberOfColumns);
// |table_view_| should be disabled since all options are removed.
ASSERT_FALSE(table_view_.enabled);
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
}
TEST_F(ChooserDialogCocoaControllerTest, AddAndRemoveOption) {
CreateChooserDialog();
chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
- EXPECT_EQ(table_view_.numberOfRows, 1);
+ EXPECT_EQ(1, table_view_.numberOfRows);
chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
- EXPECT_EQ(table_view_.numberOfRows, 2);
+ EXPECT_EQ(2, table_view_.numberOfRows);
chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
- EXPECT_EQ(table_view_.numberOfRows, 1);
+ EXPECT_EQ(1, table_view_.numberOfRows);
chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
- EXPECT_EQ(table_view_.numberOfRows, 2);
+ EXPECT_EQ(2, table_view_.numberOfRows);
chooser_controller_->OptionAdded(base::ASCIIToUTF16("d"));
- EXPECT_EQ(table_view_.numberOfRows, 3);
+ EXPECT_EQ(3, table_view_.numberOfRows);
chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d"));
- EXPECT_EQ(table_view_.numberOfRows, 2);
+ EXPECT_EQ(2, table_view_.numberOfRows);
chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
- // There is no option shown now. But since "No devices found."
- // needs to be displayed on the |table_view_|, the number of rows is 1.
- EXPECT_EQ(table_view_.numberOfRows, 1);
+ EXPECT_EQ(1, table_view_.numberOfRows);
}
TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) {
@@ -233,23 +178,23 @@ TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) {
// Select option 0.
[table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
byExtendingSelection:NO];
- EXPECT_EQ(table_view_.selectedRow, 0);
+ EXPECT_EQ(0, table_view_.selectedRow);
ASSERT_TRUE(connect_button_.enabled);
- // Disselect option 0.
+ // Deselect option 0.
[table_view_ deselectRow:0];
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
ASSERT_FALSE(connect_button_.enabled);
// Select option 1.
[table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
byExtendingSelection:NO];
- EXPECT_EQ(table_view_.selectedRow, 1);
+ EXPECT_EQ(1, table_view_.selectedRow);
ASSERT_TRUE(connect_button_.enabled);
- // Disselect option 1.
+ // Deselect option 1.
[table_view_ deselectRow:1];
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
ASSERT_FALSE(connect_button_.enabled);
}
@@ -264,19 +209,47 @@ TEST_F(ChooserDialogCocoaControllerTest,
// Select option 0.
[table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
byExtendingSelection:NO];
- EXPECT_EQ(table_view_.selectedRow, 0);
+ EXPECT_EQ(0, table_view_.selectedRow);
ASSERT_TRUE(connect_button_.enabled);
// Select option 1.
[table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
byExtendingSelection:NO];
- EXPECT_EQ(table_view_.selectedRow, 1);
+ EXPECT_EQ(1, table_view_.selectedRow);
ASSERT_TRUE(connect_button_.enabled);
// Select option 2.
[table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2]
byExtendingSelection:NO];
- EXPECT_EQ(table_view_.selectedRow, 2);
+ EXPECT_EQ(2, table_view_.selectedRow);
+ ASSERT_TRUE(connect_button_.enabled);
+}
+
+TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndRemoveAnotherOption) {
+ CreateChooserDialog();
+
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
+
+ // Select option 1.
+ [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
+ byExtendingSelection:NO];
+ EXPECT_EQ(3, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.selectedRow);
+ ASSERT_TRUE(connect_button_.enabled);
+
+ // Remove option 0. The list becomes: b c. And the index of the previously
+ // selected item "b" becomes 0.
+ chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
+ EXPECT_EQ(2, table_view_.numberOfRows);
+ EXPECT_EQ(0, table_view_.selectedRow);
+ ASSERT_TRUE(connect_button_.enabled);
+
+ // Remove option 1. The list becomes: b.
+ chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
+ EXPECT_EQ(1, table_view_.numberOfRows);
+ EXPECT_EQ(0, table_view_.selectedRow);
ASSERT_TRUE(connect_button_.enabled);
}
@@ -291,15 +264,41 @@ TEST_F(ChooserDialogCocoaControllerTest,
// Select option 1.
[table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
byExtendingSelection:NO];
- EXPECT_EQ(table_view_.numberOfRows, 3);
- EXPECT_EQ(table_view_.selectedRow, 1);
+ EXPECT_EQ(3, table_view_.numberOfRows);
+ EXPECT_EQ(1, table_view_.selectedRow);
ASSERT_TRUE(connect_button_.enabled);
// Remove option 1
chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
- EXPECT_EQ(table_view_.numberOfRows, 2);
+ EXPECT_EQ(2, table_view_.numberOfRows);
// No option selected.
- EXPECT_EQ(table_view_.selectedRow, -1);
+ EXPECT_EQ(-1, table_view_.selectedRow);
+ // Since no option selected, the "Connect" button should be disabled.
+ ASSERT_FALSE(connect_button_.enabled);
+}
+
+TEST_F(ChooserDialogCocoaControllerTest,
+ AddAnOptionAndSelectItAndRemoveTheSelectedOption) {
+ CreateChooserDialog();
+
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
+
+ // Select option 0.
+ [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
+ byExtendingSelection:NO];
+ EXPECT_EQ(1, table_view_.numberOfRows);
+ EXPECT_EQ(0, table_view_.selectedRow);
+ ASSERT_TRUE(connect_button_.enabled);
+
+ // Remove option 0.
+ chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
+ // There is no option shown now. But since "No devices found."
+ // needs to be displayed on the |table_view_|, the number of rows is 1.
+ EXPECT_EQ(1, table_view_.numberOfRows);
+ // No option selected.
+ EXPECT_EQ(-1, table_view_.selectedRow);
+ // |table_view_| should be disabled since there is no option shown.
+ ASSERT_FALSE(table_view_.enabled);
// Since no option selected, the "Connect" button should be disabled.
ASSERT_FALSE(connect_button_.enabled);
}

Powered by Google App Engine
This is Rietveld 408576698