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

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

Issue 2342723002: Reland: Update image and text color when row is selected in the chooser on Mac (Closed)
Patch Set: fixed Mac asan test Created 4 years, 3 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 683a74413f45cc3848727bb718a28a1a18961db9..a4ccce77ec73ae1cf18796fdae493a8d490244eb 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
@@ -17,6 +17,7 @@
#import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h"
#include "chrome/browser/ui/cocoa/spinner_view.h"
#include "chrome/grit/generated_resources.h"
+#include "skia/ext/skia_utils_mac.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/gtest_mac.h"
@@ -35,6 +36,10 @@ namespace {
const int kSignalStrengthLevelImageIds[5] = {IDR_SIGNAL_0_BAR, IDR_SIGNAL_1_BAR,
IDR_SIGNAL_2_BAR, IDR_SIGNAL_3_BAR,
IDR_SIGNAL_4_BAR};
+const int kSignalStrengthLevelImageSelectedIds[5] = {
+ IDR_SIGNAL_0_BAR_SELECTED, IDR_SIGNAL_1_BAR_SELECTED,
+ IDR_SIGNAL_2_BAR_SELECTED, IDR_SIGNAL_3_BAR_SELECTED,
+ IDR_SIGNAL_4_BAR_SELECTED};
} // namespace
@@ -89,24 +94,27 @@ class ChooserDialogCocoaControllerTest : public CocoaProfileTest {
}
void ExpectSignalStrengthLevelImageIs(int row,
- int expected_signal_strength_level) {
+ int expected_signal_strength_level,
+ int expected_color) {
NSImageView* image_view =
[chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)];
ASSERT_TRUE(image_view);
- EXPECT_NSEQ(
- rb_.GetNativeImageNamed(
- kSignalStrengthLevelImageIds[expected_signal_strength_level])
- .ToNSImage(),
- [image_view image]);
+ int image_id =
+ expected_color == MockChooserController::kImageColorUnselected
+ ? kSignalStrengthLevelImageIds[expected_signal_strength_level]
+ : kSignalStrengthLevelImageSelectedIds
+ [expected_signal_strength_level];
+ EXPECT_NSEQ(rb_.GetNativeImageNamed(image_id).ToNSImage(),
+ [image_view image]);
}
- void ExpectRowImageIsConnectedImage(int row) {
+ void ExpectRowImageIsConnectedImage(int row, SkColor expected_color) {
NSImageView* image_view =
[chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)];
ASSERT_TRUE(image_view);
EXPECT_TRUE(gfx::test::AreImagesEqual(
gfx::Image(gfx::CreateVectorIcon(gfx::VectorIconId::BLUETOOTH_CONNECTED,
- gfx::kChromeIconGrey)),
+ expected_color)),
gfx::Image([[image_view image] copy])));
}
@@ -116,6 +124,12 @@ class ChooserDialogCocoaControllerTest : public CocoaProfileTest {
tableRowViewText:static_cast<NSInteger>(row)] stringValue]);
}
+ void ExpectRowTextColorIs(int row, NSColor* expected_color) {
+ EXPECT_NSEQ(expected_color,
+ [[chooser_content_view_
+ tableRowViewText:static_cast<NSInteger>(row)] textColor]);
+ }
+
bool IsRowPaired(int row) {
NSTextField* paired_status = [chooser_content_view_
tableRowViewPairedStatus:static_cast<NSInteger>(row)];
@@ -128,6 +142,13 @@ class ChooserDialogCocoaControllerTest : public CocoaProfileTest {
}
}
+ void ExpectPairedTextColorIs(int row, NSColor* expected_color) {
+ EXPECT_NSEQ(
+ expected_color,
+ [[chooser_content_view_
+ tableRowViewPairedStatus:static_cast<NSInteger>(row)] textColor]);
+ }
+
ui::ResourceBundle& rb_;
std::unique_ptr<ChooserDialogCocoa> chooser_dialog_;
@@ -182,7 +203,7 @@ TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
// |table_view_| should be enabled since there is an option.
EXPECT_TRUE(table_view_.enabled);
EXPECT_EQ(-1, table_view_.selectedRow);
- ExpectRowImageIsConnectedImage(0);
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
ExpectRowTextIs(0, @"a");
EXPECT_TRUE(IsRowPaired(0));
EXPECT_FALSE(connect_button_.enabled);
@@ -197,7 +218,8 @@ TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
EXPECT_TRUE(table_view_.enabled);
EXPECT_EQ(-1, table_view_.selectedRow);
ExpectSignalStrengthLevelImageIs(
- 1, MockChooserController::kSignalStrengthLevel0Bar);
+ 1, MockChooserController::kSignalStrengthLevel0Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(1, @"b");
EXPECT_FALSE(IsRowPaired(1));
@@ -209,7 +231,8 @@ TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
EXPECT_TRUE(table_view_.enabled);
EXPECT_EQ(-1, table_view_.selectedRow);
ExpectSignalStrengthLevelImageIs(
- 2, MockChooserController::kSignalStrengthLevel1Bar);
+ 2, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(2, @"c");
EXPECT_FALSE(IsRowPaired(2));
@@ -217,7 +240,8 @@ TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar,
MockChooserController::ConnectedPairedStatus::NONE);
ExpectSignalStrengthLevelImageIs(
- 3, MockChooserController::kSignalStrengthLevel2Bar);
+ 3, MockChooserController::kSignalStrengthLevel2Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(3, @"d");
EXPECT_FALSE(IsRowPaired(3));
@@ -225,7 +249,8 @@ TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
base::ASCIIToUTF16("e"), MockChooserController::kSignalStrengthLevel3Bar,
MockChooserController::ConnectedPairedStatus::NONE);
ExpectSignalStrengthLevelImageIs(
- 4, MockChooserController::kSignalStrengthLevel3Bar);
+ 4, MockChooserController::kSignalStrengthLevel3Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(4, @"e");
EXPECT_FALSE(IsRowPaired(4));
@@ -233,7 +258,8 @@ TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
base::ASCIIToUTF16("f"), MockChooserController::kSignalStrengthLevel4Bar,
MockChooserController::ConnectedPairedStatus::NONE);
ExpectSignalStrengthLevelImageIs(
- 5, MockChooserController::kSignalStrengthLevel4Bar);
+ 5, MockChooserController::kSignalStrengthLevel4Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(5, @"f");
EXPECT_FALSE(IsRowPaired(5));
}
@@ -258,11 +284,12 @@ TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) {
EXPECT_EQ(1, table_view_.numberOfColumns);
EXPECT_TRUE(table_view_.enabled);
EXPECT_EQ(-1, table_view_.selectedRow);
- ExpectRowImageIsConnectedImage(0);
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
ExpectRowTextIs(0, @"a");
EXPECT_TRUE(IsRowPaired(0));
ExpectSignalStrengthLevelImageIs(
- 1, MockChooserController::kSignalStrengthLevel1Bar);
+ 1, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(1, @"c");
EXPECT_FALSE(IsRowPaired(1));
@@ -321,14 +348,15 @@ TEST_F(ChooserDialogCocoaControllerTest, UpdateOption) {
EXPECT_EQ(1, table_view_.numberOfColumns);
EXPECT_TRUE(table_view_.enabled);
EXPECT_EQ(-1, table_view_.selectedRow);
- ExpectRowImageIsConnectedImage(0);
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
ExpectRowTextIs(0, @"a");
EXPECT_TRUE(IsRowPaired(0));
- ExpectRowImageIsConnectedImage(1);
+ ExpectRowImageIsConnectedImage(1, gfx::kChromeIconGrey);
ExpectRowTextIs(1, @"d");
EXPECT_TRUE(IsRowPaired(1));
ExpectSignalStrengthLevelImageIs(
- 2, MockChooserController::kSignalStrengthLevel1Bar);
+ 2, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(2, @"c");
EXPECT_FALSE(IsRowPaired(2));
}
@@ -389,15 +417,173 @@ TEST_F(ChooserDialogCocoaControllerTest, UpdateAndRemoveTheUpdatedOption) {
EXPECT_EQ(1, table_view_.numberOfColumns);
EXPECT_TRUE(table_view_.enabled);
EXPECT_EQ(-1, table_view_.selectedRow);
- ExpectRowImageIsConnectedImage(0);
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
ExpectRowTextIs(0, @"a");
EXPECT_TRUE(IsRowPaired(0));
ExpectSignalStrengthLevelImageIs(
- 1, MockChooserController::kSignalStrengthLevel1Bar);
+ 1, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(1, @"c");
EXPECT_FALSE(IsRowPaired(1));
}
+TEST_F(ChooserDialogCocoaControllerTest,
+ RowImageAndTextChangeColorWhenSelectionChanges) {
+ CreateChooserDialog();
+
+ mock_chooser_controller_->OptionAdded(
+ base::ASCIIToUTF16("a"),
+ MockChooserController::kNoSignalStrengthLevelImage,
+ MockChooserController::ConnectedPairedStatus::CONNECTED |
+ MockChooserController::ConnectedPairedStatus::PAIRED);
+ mock_chooser_controller_->OptionAdded(
+ base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
+ MockChooserController::ConnectedPairedStatus::NONE);
+ mock_chooser_controller_->OptionAdded(
+ base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::ConnectedPairedStatus::NONE);
+
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
+ ExpectSignalStrengthLevelImageIs(
+ 1, MockChooserController::kSignalStrengthLevel0Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectSignalStrengthLevelImageIs(
+ 2, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectRowTextColorIs(0, [NSColor blackColor]);
+ ExpectRowTextColorIs(1, [NSColor blackColor]);
+ ExpectRowTextColorIs(2, [NSColor blackColor]);
+ ExpectPairedTextColorIs(
+ 0, skia::SkColorToCalibratedNSColor(gfx::kGoogleGreen700));
+
+ // Option 0 shows a Bluetooth connected image, the following code tests the
+ // color of that image and text change when the option is selected or
+ // deselected.
+ // Select option 0.
+ [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
+ byExtendingSelection:NO];
+ EXPECT_EQ(0, table_view_.selectedRow);
+ ExpectRowImageIsConnectedImage(0, SK_ColorWHITE);
+ ExpectSignalStrengthLevelImageIs(
+ 1, MockChooserController::kSignalStrengthLevel0Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectSignalStrengthLevelImageIs(
+ 2, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectRowTextColorIs(0, [NSColor whiteColor]);
+ ExpectRowTextColorIs(1, [NSColor blackColor]);
+ ExpectRowTextColorIs(2, [NSColor blackColor]);
+ ExpectPairedTextColorIs(
+ 0, skia::SkColorToCalibratedNSColor(gfx::kGoogleGreen300));
+
+ // Deselect option 0.
+ [table_view_ deselectRow:0];
+ EXPECT_EQ(-1, table_view_.selectedRow);
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
+ ExpectSignalStrengthLevelImageIs(
+ 1, MockChooserController::kSignalStrengthLevel0Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectSignalStrengthLevelImageIs(
+ 2, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectRowTextColorIs(0, [NSColor blackColor]);
+ ExpectRowTextColorIs(1, [NSColor blackColor]);
+ ExpectRowTextColorIs(2, [NSColor blackColor]);
+ ExpectPairedTextColorIs(
+ 0, skia::SkColorToCalibratedNSColor(gfx::kGoogleGreen700));
+
+ // Option 1 shows a signal strengh level image, the following code tests the
+ // color of that image and text change when the option is selected or
+ // deselected.
+ // Select option 1.
+ [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
+ byExtendingSelection:NO];
+ EXPECT_EQ(1, table_view_.selectedRow);
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
+ ExpectSignalStrengthLevelImageIs(
+ 1, MockChooserController::kSignalStrengthLevel0Bar,
+ MockChooserController::kImageColorSelected);
+ ExpectSignalStrengthLevelImageIs(
+ 2, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectRowTextColorIs(0, [NSColor blackColor]);
+ ExpectRowTextColorIs(1, [NSColor whiteColor]);
+ ExpectRowTextColorIs(2, [NSColor blackColor]);
+ ExpectPairedTextColorIs(
+ 0, skia::SkColorToCalibratedNSColor(gfx::kGoogleGreen700));
+
+ // Deselect option 1.
+ [table_view_ deselectRow:1];
+ EXPECT_EQ(-1, table_view_.selectedRow);
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
+ ExpectSignalStrengthLevelImageIs(
+ 1, MockChooserController::kSignalStrengthLevel0Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectSignalStrengthLevelImageIs(
+ 2, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectRowTextColorIs(0, [NSColor blackColor]);
+ ExpectRowTextColorIs(1, [NSColor blackColor]);
+ ExpectRowTextColorIs(2, [NSColor blackColor]);
+ ExpectPairedTextColorIs(
+ 0, skia::SkColorToCalibratedNSColor(gfx::kGoogleGreen700));
+
+ // The following code tests the color of the image and text change when
+ // selecting another option without deselecting the first.
+ // Select option 0.
+ [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
+ byExtendingSelection:NO];
+
+ // Select option 1.
+ [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
+ byExtendingSelection:NO];
+ EXPECT_EQ(1, table_view_.selectedRow);
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
+ ExpectSignalStrengthLevelImageIs(
+ 1, MockChooserController::kSignalStrengthLevel0Bar,
+ MockChooserController::kImageColorSelected);
+ ExpectSignalStrengthLevelImageIs(
+ 2, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
+ ExpectRowTextColorIs(0, [NSColor blackColor]);
+ ExpectRowTextColorIs(1, [NSColor whiteColor]);
+ ExpectRowTextColorIs(2, [NSColor blackColor]);
+ ExpectPairedTextColorIs(
+ 0, skia::SkColorToCalibratedNSColor(gfx::kGoogleGreen700));
+
+ // The following code tests the color of the image and text of a selected
+ // option when it is updated.
+ // Select option 2.
+ [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2]
+ byExtendingSelection:NO];
+
+ // Update option 2 from one signal strength to another.
+ mock_chooser_controller_->OptionUpdated(
+ base::ASCIIToUTF16("c"), base::ASCIIToUTF16("e"),
+ MockChooserController::kSignalStrengthLevel2Bar,
+ MockChooserController::ConnectedPairedStatus::NONE);
+ ExpectSignalStrengthLevelImageIs(
+ 2, MockChooserController::kSignalStrengthLevel2Bar,
+ MockChooserController::kImageColorSelected);
+ ExpectRowTextColorIs(0, [NSColor blackColor]);
+ ExpectRowTextColorIs(1, [NSColor blackColor]);
+ ExpectRowTextColorIs(2, [NSColor whiteColor]);
+
+ // Update option 2 again from non-connected and non-paired to connected
+ // and paired.
+ mock_chooser_controller_->OptionUpdated(
+ base::ASCIIToUTF16("e"), base::ASCIIToUTF16("f"),
+ MockChooserController::kNoSignalStrengthLevelImage,
+ MockChooserController::ConnectedPairedStatus::CONNECTED |
+ MockChooserController::ConnectedPairedStatus::PAIRED);
+ ExpectRowImageIsConnectedImage(2, SK_ColorWHITE);
+ ExpectRowTextColorIs(0, [NSColor blackColor]);
+ ExpectRowTextColorIs(1, [NSColor blackColor]);
+ ExpectRowTextColorIs(2, [NSColor whiteColor]);
+ ExpectPairedTextColorIs(
+ 2, skia::SkColorToCalibratedNSColor(gfx::kGoogleGreen300));
+}
+
TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) {
CreateChooserDialog();
@@ -567,14 +753,15 @@ TEST_F(ChooserDialogCocoaControllerTest,
MockChooserController::ConnectedPairedStatus::PAIRED);
EXPECT_EQ(1, table_view_.selectedRow);
- ExpectRowImageIsConnectedImage(0);
+ ExpectRowImageIsConnectedImage(0, gfx::kChromeIconGrey);
ExpectRowTextIs(0, @"a");
EXPECT_TRUE(IsRowPaired(0));
- ExpectRowImageIsConnectedImage(1);
+ ExpectRowImageIsConnectedImage(1, SK_ColorWHITE);
ExpectRowTextIs(1, @"d");
EXPECT_TRUE(IsRowPaired(1));
ExpectSignalStrengthLevelImageIs(
- 2, MockChooserController::kSignalStrengthLevel1Bar);
+ 2, MockChooserController::kSignalStrengthLevel1Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(2, @"c");
EXPECT_FALSE(IsRowPaired(2));
EXPECT_TRUE(connect_button_.enabled);
@@ -855,7 +1042,8 @@ TEST_F(ChooserDialogCocoaControllerTest,
// No option selected.
EXPECT_EQ(-1, table_view_.selectedRow);
ExpectSignalStrengthLevelImageIs(
- 0, MockChooserController::kSignalStrengthLevel2Bar);
+ 0, MockChooserController::kSignalStrengthLevel2Bar,
+ MockChooserController::kImageColorUnselected);
ExpectRowTextIs(0, @"d");
EXPECT_FALSE(IsRowPaired(0));
EXPECT_TRUE(spinner_.hidden);

Powered by Google App Engine
This is Rietveld 408576698