| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.h" | 5 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.h" |
| 6 | 6 |
| 7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
| 13 #include "chrome/browser/chooser_controller/mock_chooser_controller.h" | 13 #include "chrome/browser/chooser_controller/mock_chooser_controller.h" |
| 14 #import "chrome/browser/ui/cocoa/chooser_content_view_cocoa.h" | 14 #import "chrome/browser/ui/cocoa/chooser_content_view_cocoa.h" |
| 15 #import "chrome/browser/ui/cocoa/cocoa_profile_test.h" | 15 #import "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
| 16 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h" | 16 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h" |
| 17 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h" | 17 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h" |
| 18 #include "chrome/browser/ui/cocoa/spinner_view.h" | 18 #include "chrome/browser/ui/cocoa/spinner_view.h" |
| 19 #include "chrome/grit/generated_resources.h" | 19 #include "chrome/grit/generated_resources.h" |
| 20 #include "testing/gmock/include/gmock/gmock.h" | 20 #include "testing/gmock/include/gmock/gmock.h" |
| 21 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
| 22 #include "testing/gtest_mac.h" | 22 #include "testing/gtest_mac.h" |
| 23 #include "ui/base/l10n/l10n_util_mac.h" | 23 #include "ui/base/l10n/l10n_util_mac.h" |
| 24 #include "ui/base/resource/resource_bundle.h" | 24 #include "ui/base/resource/resource_bundle.h" |
| 25 #include "ui/gfx/color_palette.h" |
| 26 #include "ui/gfx/image/image.h" |
| 27 #include "ui/gfx/image/image_unittest_util.h" |
| 28 #include "ui/gfx/paint_vector_icon.h" |
| 29 #include "ui/gfx/vector_icons_public.h" |
| 25 #include "ui/resources/grit/ui_resources.h" | 30 #include "ui/resources/grit/ui_resources.h" |
| 26 | 31 |
| 27 namespace { | 32 namespace { |
| 28 | 33 |
| 29 // The lookup table for signal strength level image. | 34 // The lookup table for signal strength level image. |
| 30 const int kSignalStrengthLevelImageIds[5] = {IDR_SIGNAL_0_BAR, IDR_SIGNAL_1_BAR, | 35 const int kSignalStrengthLevelImageIds[5] = {IDR_SIGNAL_0_BAR, IDR_SIGNAL_1_BAR, |
| 31 IDR_SIGNAL_2_BAR, IDR_SIGNAL_3_BAR, | 36 IDR_SIGNAL_2_BAR, IDR_SIGNAL_3_BAR, |
| 32 IDR_SIGNAL_4_BAR}; | 37 IDR_SIGNAL_4_BAR}; |
| 33 | 38 |
| 34 } // namespace | 39 } // namespace |
| (...skipping 11 matching lines...) Expand all Loading... |
| 46 | 51 |
| 47 // Create a ChooserDialogCocoa. | 52 // Create a ChooserDialogCocoa. |
| 48 void CreateChooserDialog() { | 53 void CreateChooserDialog() { |
| 49 content::WebContents* web_contents = | 54 content::WebContents* web_contents = |
| 50 content::WebContents::Create(content::WebContents::CreateParams( | 55 content::WebContents::Create(content::WebContents::CreateParams( |
| 51 profile(), content::SiteInstance::Create(profile()))); | 56 profile(), content::SiteInstance::Create(profile()))); |
| 52 ASSERT_TRUE(web_contents); | 57 ASSERT_TRUE(web_contents); |
| 53 std::unique_ptr<MockChooserController> chooser_controller( | 58 std::unique_ptr<MockChooserController> chooser_controller( |
| 54 new MockChooserController(web_contents->GetMainFrame())); | 59 new MockChooserController(web_contents->GetMainFrame())); |
| 55 ASSERT_TRUE(chooser_controller); | 60 ASSERT_TRUE(chooser_controller); |
| 56 chooser_controller_ = chooser_controller.get(); | 61 mock_chooser_controller_ = chooser_controller.get(); |
| 57 chooser_dialog_.reset( | 62 chooser_dialog_.reset( |
| 58 new ChooserDialogCocoa(web_contents, std::move(chooser_controller))); | 63 new ChooserDialogCocoa(web_contents, std::move(chooser_controller))); |
| 59 ASSERT_TRUE(chooser_dialog_); | 64 ASSERT_TRUE(chooser_dialog_); |
| 60 chooser_dialog_controller_ = | 65 chooser_dialog_controller_ = |
| 61 chooser_dialog_->chooser_dialog_cocoa_controller_.get(); | 66 chooser_dialog_->chooser_dialog_cocoa_controller_.get(); |
| 62 ASSERT_TRUE(chooser_dialog_controller_); | 67 ASSERT_TRUE(chooser_dialog_controller_); |
| 63 chooser_content_view_ = [chooser_dialog_controller_ chooserContentView]; | 68 chooser_content_view_ = [chooser_dialog_controller_ chooserContentView]; |
| 64 ASSERT_TRUE(chooser_content_view_); | 69 ASSERT_TRUE(chooser_content_view_); |
| 65 table_view_ = [chooser_content_view_ tableView]; | 70 table_view_ = [chooser_content_view_ tableView]; |
| 66 ASSERT_TRUE(table_view_); | 71 ASSERT_TRUE(table_view_); |
| 67 spinner_ = [chooser_content_view_ spinner]; | 72 spinner_ = [chooser_content_view_ spinner]; |
| 68 ASSERT_TRUE(spinner_); | 73 ASSERT_TRUE(spinner_); |
| 69 status_ = [chooser_content_view_ status]; | 74 status_ = [chooser_content_view_ status]; |
| 70 ASSERT_TRUE(status_); | 75 ASSERT_TRUE(status_); |
| 71 rescan_button_ = [chooser_content_view_ rescanButton]; | 76 rescan_button_ = [chooser_content_view_ rescanButton]; |
| 72 ASSERT_TRUE(rescan_button_); | 77 ASSERT_TRUE(rescan_button_); |
| 73 connect_button_ = [chooser_content_view_ connectButton]; | 78 connect_button_ = [chooser_content_view_ connectButton]; |
| 74 ASSERT_TRUE(connect_button_); | 79 ASSERT_TRUE(connect_button_); |
| 75 cancel_button_ = [chooser_content_view_ cancelButton]; | 80 cancel_button_ = [chooser_content_view_ cancelButton]; |
| 76 ASSERT_TRUE(cancel_button_); | 81 ASSERT_TRUE(cancel_button_); |
| 77 help_button_ = [chooser_content_view_ helpButton]; | 82 help_button_ = [chooser_content_view_ helpButton]; |
| 78 ASSERT_TRUE(help_button_); | 83 ASSERT_TRUE(help_button_); |
| 79 } | 84 } |
| 80 | 85 |
| 86 void ExpectNoRowImage(int row) { |
| 87 ASSERT_FALSE( |
| 88 [chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)]); |
| 89 } |
| 90 |
| 81 void ExpectSignalStrengthLevelImageIs(int row, | 91 void ExpectSignalStrengthLevelImageIs(int row, |
| 82 int expected_signal_strength_level) { | 92 int expected_signal_strength_level) { |
| 83 NSImageView* image_view = | 93 NSImageView* image_view = |
| 84 [chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)]; | 94 [chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)]; |
| 95 ASSERT_TRUE(image_view); |
| 96 EXPECT_NSEQ( |
| 97 rb_.GetNativeImageNamed( |
| 98 kSignalStrengthLevelImageIds[expected_signal_strength_level]) |
| 99 .ToNSImage(), |
| 100 [image_view image]); |
| 101 } |
| 85 | 102 |
| 86 if (expected_signal_strength_level == -1) { | 103 void ExpectRowImageIsConnectedImage(int row) { |
| 87 ASSERT_FALSE(image_view); | 104 NSImageView* image_view = |
| 88 } else { | 105 [chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)]; |
| 89 ASSERT_TRUE(image_view); | 106 ASSERT_TRUE(image_view); |
| 90 EXPECT_NSEQ( | 107 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 91 rb_.GetNativeImageNamed( | 108 gfx::Image(gfx::CreateVectorIcon(gfx::VectorIconId::BLUETOOTH_CONNECTED, |
| 92 kSignalStrengthLevelImageIds[expected_signal_strength_level]) | 109 gfx::kChromeIconGrey)), |
| 93 .ToNSImage(), | 110 gfx::Image([[image_view image] copy]))); |
| 94 [image_view image]); | |
| 95 } | |
| 96 } | 111 } |
| 97 | 112 |
| 98 void ExpectRowTextIs(int row, NSString* expected_text) { | 113 void ExpectRowTextIs(int row, NSString* expected_text) { |
| 99 EXPECT_NSEQ(expected_text, | 114 EXPECT_NSEQ(expected_text, |
| 100 [[chooser_content_view_ | 115 [[chooser_content_view_ |
| 101 tableRowViewText:static_cast<NSInteger>(row)] stringValue]); | 116 tableRowViewText:static_cast<NSInteger>(row)] stringValue]); |
| 102 } | 117 } |
| 103 | 118 |
| 119 bool IsRowPaired(int row) { |
| 120 NSTextField* paired_status = [chooser_content_view_ |
| 121 tableRowViewPairedStatus:static_cast<NSInteger>(row)]; |
| 122 if (paired_status) { |
| 123 EXPECT_NSEQ(l10n_util::GetNSString(IDS_DEVICE_CHOOSER_PAIRED_STATUS_TEXT), |
| 124 [paired_status stringValue]); |
| 125 return true; |
| 126 } else { |
| 127 return false; |
| 128 } |
| 129 } |
| 130 |
| 104 ui::ResourceBundle& rb_; | 131 ui::ResourceBundle& rb_; |
| 105 | 132 |
| 106 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_; | 133 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_; |
| 107 | 134 |
| 108 MockChooserController* chooser_controller_; | 135 MockChooserController* mock_chooser_controller_; |
| 109 ChooserDialogCocoaController* chooser_dialog_controller_; | 136 ChooserDialogCocoaController* chooser_dialog_controller_; |
| 110 ChooserContentViewCocoa* chooser_content_view_; | 137 ChooserContentViewCocoa* chooser_content_view_; |
| 111 NSTableView* table_view_; | 138 NSTableView* table_view_; |
| 112 SpinnerView* spinner_; | 139 SpinnerView* spinner_; |
| 113 NSTextField* status_; | 140 NSTextField* status_; |
| 114 NSButton* rescan_button_; | 141 NSButton* rescan_button_; |
| 115 NSButton* connect_button_; | 142 NSButton* connect_button_; |
| 116 NSButton* cancel_button_; | 143 NSButton* cancel_button_; |
| 117 NSButton* help_button_; | 144 NSButton* help_button_; |
| 118 | 145 |
| 119 private: | 146 private: |
| 120 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest); | 147 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest); |
| 121 }; | 148 }; |
| 122 | 149 |
| 123 TEST_F(ChooserDialogCocoaControllerTest, InitialState) { | 150 TEST_F(ChooserDialogCocoaControllerTest, InitialState) { |
| 124 CreateChooserDialog(); | 151 CreateChooserDialog(); |
| 125 | 152 |
| 126 // Since "No devices found." needs to be displayed on the |table_view_|, | 153 // Since "No devices found." needs to be displayed on the |table_view_|, |
| 127 // the number of rows is 1. | 154 // the number of rows is 1. |
| 128 EXPECT_EQ(1, table_view_.numberOfRows); | 155 EXPECT_EQ(1, table_view_.numberOfRows); |
| 129 EXPECT_EQ(1, table_view_.numberOfColumns); | 156 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 130 // No signal strength level image shown. | 157 // No image shown. |
| 131 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 158 ExpectNoRowImage(0); |
| 132 ExpectRowTextIs( | 159 ExpectRowTextIs( |
| 133 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 160 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 161 EXPECT_FALSE(IsRowPaired(0)); |
| 134 // |table_view_| should be disabled since there is no option shown. | 162 // |table_view_| should be disabled since there is no option shown. |
| 135 ASSERT_FALSE(table_view_.enabled); | 163 EXPECT_FALSE(table_view_.enabled); |
| 136 // No option selected. | 164 // No option selected. |
| 137 EXPECT_EQ(-1, table_view_.selectedRow); | 165 EXPECT_EQ(-1, table_view_.selectedRow); |
| 138 // |connect_button_| should be disabled since no option selected. | 166 // |connect_button_| should be disabled since no option selected. |
| 139 ASSERT_FALSE(connect_button_.enabled); | 167 EXPECT_FALSE(connect_button_.enabled); |
| 140 ASSERT_TRUE(cancel_button_.enabled); | 168 EXPECT_TRUE(cancel_button_.enabled); |
| 141 ASSERT_TRUE(help_button_.enabled); | 169 EXPECT_TRUE(help_button_.enabled); |
| 142 } | 170 } |
| 143 | 171 |
| 144 TEST_F(ChooserDialogCocoaControllerTest, AddOption) { | 172 TEST_F(ChooserDialogCocoaControllerTest, AddOption) { |
| 145 CreateChooserDialog(); | 173 CreateChooserDialog(); |
| 146 | 174 |
| 147 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 175 mock_chooser_controller_->OptionAdded( |
| 148 MockChooserController::kNoImage); | 176 base::ASCIIToUTF16("a"), |
| 177 MockChooserController::kNoSignalStrengthLevelImage, |
| 178 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 179 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 149 EXPECT_EQ(1, table_view_.numberOfRows); | 180 EXPECT_EQ(1, table_view_.numberOfRows); |
| 150 EXPECT_EQ(1, table_view_.numberOfColumns); | 181 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 151 // |table_view_| should be enabled since there is an option. | 182 // |table_view_| should be enabled since there is an option. |
| 152 ASSERT_TRUE(table_view_.enabled); | 183 EXPECT_TRUE(table_view_.enabled); |
| 153 EXPECT_EQ(-1, table_view_.selectedRow); | 184 EXPECT_EQ(-1, table_view_.selectedRow); |
| 154 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 185 ExpectRowImageIsConnectedImage(0); |
| 155 ExpectRowTextIs(0, @"a"); | 186 ExpectRowTextIs(0, @"a"); |
| 156 ASSERT_FALSE(connect_button_.enabled); | 187 EXPECT_TRUE(IsRowPaired(0)); |
| 157 ASSERT_TRUE(cancel_button_.enabled); | 188 EXPECT_FALSE(connect_button_.enabled); |
| 158 ASSERT_TRUE(help_button_.enabled); | 189 EXPECT_TRUE(cancel_button_.enabled); |
| 159 | 190 EXPECT_TRUE(help_button_.enabled); |
| 160 chooser_controller_->OptionAdded( | 191 |
| 161 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 192 mock_chooser_controller_->OptionAdded( |
| 162 EXPECT_EQ(2, table_view_.numberOfRows); | 193 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 163 EXPECT_EQ(1, table_view_.numberOfColumns); | 194 MockChooserController::ConnectedPairedStatus::NONE); |
| 164 ASSERT_TRUE(table_view_.enabled); | 195 EXPECT_EQ(2, table_view_.numberOfRows); |
| 196 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 197 EXPECT_TRUE(table_view_.enabled); |
| 165 EXPECT_EQ(-1, table_view_.selectedRow); | 198 EXPECT_EQ(-1, table_view_.selectedRow); |
| 166 ExpectSignalStrengthLevelImageIs( | 199 ExpectSignalStrengthLevelImageIs( |
| 167 1, MockChooserController::kSignalStrengthLevel0Bar); | 200 1, MockChooserController::kSignalStrengthLevel0Bar); |
| 168 ExpectRowTextIs(1, @"b"); | 201 ExpectRowTextIs(1, @"b"); |
| 169 | 202 EXPECT_FALSE(IsRowPaired(1)); |
| 170 chooser_controller_->OptionAdded( | 203 |
| 171 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 204 mock_chooser_controller_->OptionAdded( |
| 205 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 206 MockChooserController::ConnectedPairedStatus::NONE); |
| 172 EXPECT_EQ(3, table_view_.numberOfRows); | 207 EXPECT_EQ(3, table_view_.numberOfRows); |
| 173 EXPECT_EQ(1, table_view_.numberOfColumns); | 208 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 174 ASSERT_TRUE(table_view_.enabled); | 209 EXPECT_TRUE(table_view_.enabled); |
| 175 EXPECT_EQ(-1, table_view_.selectedRow); | 210 EXPECT_EQ(-1, table_view_.selectedRow); |
| 176 ExpectSignalStrengthLevelImageIs( | 211 ExpectSignalStrengthLevelImageIs( |
| 177 2, MockChooserController::kSignalStrengthLevel1Bar); | 212 2, MockChooserController::kSignalStrengthLevel1Bar); |
| 178 ExpectRowTextIs(2, @"c"); | 213 ExpectRowTextIs(2, @"c"); |
| 179 | 214 EXPECT_FALSE(IsRowPaired(2)); |
| 180 chooser_controller_->OptionAdded( | 215 |
| 181 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar); | 216 mock_chooser_controller_->OptionAdded( |
| 217 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar, |
| 218 MockChooserController::ConnectedPairedStatus::NONE); |
| 182 ExpectSignalStrengthLevelImageIs( | 219 ExpectSignalStrengthLevelImageIs( |
| 183 3, MockChooserController::kSignalStrengthLevel2Bar); | 220 3, MockChooserController::kSignalStrengthLevel2Bar); |
| 184 ExpectRowTextIs(3, @"d"); | 221 ExpectRowTextIs(3, @"d"); |
| 185 | 222 EXPECT_FALSE(IsRowPaired(3)); |
| 186 chooser_controller_->OptionAdded( | 223 |
| 187 base::ASCIIToUTF16("e"), MockChooserController::kSignalStrengthLevel3Bar); | 224 mock_chooser_controller_->OptionAdded( |
| 225 base::ASCIIToUTF16("e"), MockChooserController::kSignalStrengthLevel3Bar, |
| 226 MockChooserController::ConnectedPairedStatus::NONE); |
| 188 ExpectSignalStrengthLevelImageIs( | 227 ExpectSignalStrengthLevelImageIs( |
| 189 4, MockChooserController::kSignalStrengthLevel3Bar); | 228 4, MockChooserController::kSignalStrengthLevel3Bar); |
| 190 ExpectRowTextIs(4, @"e"); | 229 ExpectRowTextIs(4, @"e"); |
| 191 | 230 EXPECT_FALSE(IsRowPaired(4)); |
| 192 chooser_controller_->OptionAdded( | 231 |
| 193 base::ASCIIToUTF16("f"), MockChooserController::kSignalStrengthLevel4Bar); | 232 mock_chooser_controller_->OptionAdded( |
| 233 base::ASCIIToUTF16("f"), MockChooserController::kSignalStrengthLevel4Bar, |
| 234 MockChooserController::ConnectedPairedStatus::NONE); |
| 194 ExpectSignalStrengthLevelImageIs( | 235 ExpectSignalStrengthLevelImageIs( |
| 195 5, MockChooserController::kSignalStrengthLevel4Bar); | 236 5, MockChooserController::kSignalStrengthLevel4Bar); |
| 196 ExpectRowTextIs(5, @"f"); | 237 ExpectRowTextIs(5, @"f"); |
| 238 EXPECT_FALSE(IsRowPaired(5)); |
| 197 } | 239 } |
| 198 | 240 |
| 199 TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) { | 241 TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) { |
| 200 CreateChooserDialog(); | 242 CreateChooserDialog(); |
| 201 | 243 |
| 202 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 244 mock_chooser_controller_->OptionAdded( |
| 203 MockChooserController::kNoImage); | 245 base::ASCIIToUTF16("a"), |
| 204 chooser_controller_->OptionAdded( | 246 MockChooserController::kNoSignalStrengthLevelImage, |
| 205 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 247 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 206 chooser_controller_->OptionAdded( | 248 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 207 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 249 mock_chooser_controller_->OptionAdded( |
| 208 | 250 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 209 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); | 251 MockChooserController::ConnectedPairedStatus::NONE); |
| 210 EXPECT_EQ(2, table_view_.numberOfRows); | 252 mock_chooser_controller_->OptionAdded( |
| 211 EXPECT_EQ(1, table_view_.numberOfColumns); | 253 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 212 ASSERT_TRUE(table_view_.enabled); | 254 MockChooserController::ConnectedPairedStatus::NONE); |
| 213 EXPECT_EQ(-1, table_view_.selectedRow); | 255 |
| 214 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 256 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); |
| 215 ExpectRowTextIs(0, @"a"); | 257 EXPECT_EQ(2, table_view_.numberOfRows); |
| 258 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 259 EXPECT_TRUE(table_view_.enabled); |
| 260 EXPECT_EQ(-1, table_view_.selectedRow); |
| 261 ExpectRowImageIsConnectedImage(0); |
| 262 ExpectRowTextIs(0, @"a"); |
| 263 EXPECT_TRUE(IsRowPaired(0)); |
| 216 ExpectSignalStrengthLevelImageIs( | 264 ExpectSignalStrengthLevelImageIs( |
| 217 1, MockChooserController::kSignalStrengthLevel1Bar); | 265 1, MockChooserController::kSignalStrengthLevel1Bar); |
| 218 ExpectRowTextIs(1, @"c"); | 266 ExpectRowTextIs(1, @"c"); |
| 267 EXPECT_FALSE(IsRowPaired(1)); |
| 219 | 268 |
| 220 // Remove a non-existent option, the number of rows should not change. | 269 // Remove a non-existent option, the number of rows should not change. |
| 221 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent")); | 270 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent")); |
| 222 EXPECT_EQ(2, table_view_.numberOfRows); | 271 EXPECT_EQ(2, table_view_.numberOfRows); |
| 223 EXPECT_EQ(1, table_view_.numberOfColumns); | 272 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 224 ASSERT_TRUE(table_view_.enabled); | 273 EXPECT_TRUE(table_view_.enabled); |
| 225 EXPECT_EQ(-1, table_view_.selectedRow); | 274 EXPECT_EQ(-1, table_view_.selectedRow); |
| 226 ExpectRowTextIs(0, @"a"); | 275 ExpectRowTextIs(0, @"a"); |
| 227 ExpectRowTextIs(1, @"c"); | 276 ExpectRowTextIs(1, @"c"); |
| 228 | 277 |
| 229 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); | 278 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); |
| 230 EXPECT_EQ(1, table_view_.numberOfRows); | 279 EXPECT_EQ(1, table_view_.numberOfRows); |
| 231 EXPECT_EQ(1, table_view_.numberOfColumns); | 280 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 232 ASSERT_TRUE(table_view_.enabled); | 281 EXPECT_TRUE(table_view_.enabled); |
| 233 EXPECT_EQ(-1, table_view_.selectedRow); | 282 EXPECT_EQ(-1, table_view_.selectedRow); |
| 234 ExpectRowTextIs(0, @"a"); | 283 ExpectRowTextIs(0, @"a"); |
| 235 | 284 |
| 236 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); | 285 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); |
| 237 // There is no option shown now. But since "No devices found." | 286 // There is no option shown now. But since "No devices found." |
| 238 // needs to be displayed on the |table_view_|, the number of rows is 1. | 287 // needs to be displayed on the |table_view_|, the number of rows is 1. |
| 239 EXPECT_EQ(1, table_view_.numberOfRows); | 288 EXPECT_EQ(1, table_view_.numberOfRows); |
| 240 EXPECT_EQ(1, table_view_.numberOfColumns); | 289 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 241 // |table_view_| should be disabled since all options are removed. | 290 // |table_view_| should be disabled since all options are removed. |
| 242 ASSERT_FALSE(table_view_.enabled); | 291 EXPECT_FALSE(table_view_.enabled); |
| 243 EXPECT_EQ(-1, table_view_.selectedRow); | 292 EXPECT_EQ(-1, table_view_.selectedRow); |
| 244 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 293 ExpectNoRowImage(0); |
| 245 ExpectRowTextIs( | 294 ExpectRowTextIs( |
| 246 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 295 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 296 EXPECT_FALSE(IsRowPaired(0)); |
| 247 } | 297 } |
| 248 | 298 |
| 249 TEST_F(ChooserDialogCocoaControllerTest, UpdateOption) { | 299 TEST_F(ChooserDialogCocoaControllerTest, UpdateOption) { |
| 250 CreateChooserDialog(); | 300 CreateChooserDialog(); |
| 251 | 301 |
| 252 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 302 mock_chooser_controller_->OptionAdded( |
| 253 MockChooserController::kNoImage); | 303 base::ASCIIToUTF16("a"), |
| 254 chooser_controller_->OptionAdded( | 304 MockChooserController::kNoSignalStrengthLevelImage, |
| 255 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 305 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 256 chooser_controller_->OptionAdded( | 306 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 257 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 307 mock_chooser_controller_->OptionAdded( |
| 258 | 308 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 259 chooser_controller_->OptionUpdated( | 309 MockChooserController::ConnectedPairedStatus::NONE); |
| 310 mock_chooser_controller_->OptionAdded( |
| 311 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 312 MockChooserController::ConnectedPairedStatus::NONE); |
| 313 |
| 314 mock_chooser_controller_->OptionUpdated( |
| 260 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), | 315 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), |
| 261 MockChooserController::kSignalStrengthLevel2Bar); | 316 MockChooserController::kNoSignalStrengthLevelImage, |
| 317 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 318 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 262 | 319 |
| 263 EXPECT_EQ(3, table_view_.numberOfRows); | 320 EXPECT_EQ(3, table_view_.numberOfRows); |
| 264 EXPECT_EQ(1, table_view_.numberOfColumns); | 321 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 265 ASSERT_TRUE(table_view_.enabled); | 322 EXPECT_TRUE(table_view_.enabled); |
| 266 EXPECT_EQ(-1, table_view_.selectedRow); | 323 EXPECT_EQ(-1, table_view_.selectedRow); |
| 267 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 324 ExpectRowImageIsConnectedImage(0); |
| 268 ExpectRowTextIs(0, @"a"); | 325 ExpectRowTextIs(0, @"a"); |
| 269 ExpectSignalStrengthLevelImageIs( | 326 EXPECT_TRUE(IsRowPaired(0)); |
| 270 1, MockChooserController::kSignalStrengthLevel2Bar); | 327 ExpectRowImageIsConnectedImage(1); |
| 271 ExpectRowTextIs(1, @"d"); | 328 ExpectRowTextIs(1, @"d"); |
| 329 EXPECT_TRUE(IsRowPaired(1)); |
| 272 ExpectSignalStrengthLevelImageIs( | 330 ExpectSignalStrengthLevelImageIs( |
| 273 2, MockChooserController::kSignalStrengthLevel1Bar); | 331 2, MockChooserController::kSignalStrengthLevel1Bar); |
| 274 ExpectRowTextIs(2, @"c"); | 332 ExpectRowTextIs(2, @"c"); |
| 333 EXPECT_FALSE(IsRowPaired(2)); |
| 275 } | 334 } |
| 276 | 335 |
| 277 TEST_F(ChooserDialogCocoaControllerTest, AddAndRemoveOption) { | 336 TEST_F(ChooserDialogCocoaControllerTest, AddAndRemoveOption) { |
| 278 CreateChooserDialog(); | 337 CreateChooserDialog(); |
| 279 | 338 |
| 280 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 339 mock_chooser_controller_->OptionAdded( |
| 281 MockChooserController::kNoImage); | 340 base::ASCIIToUTF16("a"), |
| 282 EXPECT_EQ(1, table_view_.numberOfRows); | 341 MockChooserController::kNoSignalStrengthLevelImage, |
| 283 chooser_controller_->OptionAdded( | 342 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 284 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 343 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 285 EXPECT_EQ(2, table_view_.numberOfRows); | 344 EXPECT_EQ(1, table_view_.numberOfRows); |
| 286 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); | 345 mock_chooser_controller_->OptionAdded( |
| 287 EXPECT_EQ(1, table_view_.numberOfRows); | 346 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 288 chooser_controller_->OptionAdded( | 347 MockChooserController::ConnectedPairedStatus::NONE); |
| 289 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 348 EXPECT_EQ(2, table_view_.numberOfRows); |
| 290 EXPECT_EQ(2, table_view_.numberOfRows); | 349 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); |
| 291 chooser_controller_->OptionAdded( | 350 EXPECT_EQ(1, table_view_.numberOfRows); |
| 292 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar); | 351 mock_chooser_controller_->OptionAdded( |
| 352 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 353 MockChooserController::ConnectedPairedStatus::NONE); |
| 354 EXPECT_EQ(2, table_view_.numberOfRows); |
| 355 mock_chooser_controller_->OptionAdded( |
| 356 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar, |
| 357 MockChooserController::ConnectedPairedStatus::NONE); |
| 293 EXPECT_EQ(3, table_view_.numberOfRows); | 358 EXPECT_EQ(3, table_view_.numberOfRows); |
| 294 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); | 359 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); |
| 295 EXPECT_EQ(2, table_view_.numberOfRows); | 360 EXPECT_EQ(2, table_view_.numberOfRows); |
| 296 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); | 361 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); |
| 297 EXPECT_EQ(1, table_view_.numberOfRows); | 362 EXPECT_EQ(1, table_view_.numberOfRows); |
| 298 } | 363 } |
| 299 | 364 |
| 300 TEST_F(ChooserDialogCocoaControllerTest, UpdateAndRemoveTheUpdatedOption) { | 365 TEST_F(ChooserDialogCocoaControllerTest, UpdateAndRemoveTheUpdatedOption) { |
| 301 CreateChooserDialog(); | 366 CreateChooserDialog(); |
| 302 | 367 |
| 303 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 368 mock_chooser_controller_->OptionAdded( |
| 304 MockChooserController::kNoImage); | 369 base::ASCIIToUTF16("a"), |
| 305 chooser_controller_->OptionAdded( | 370 MockChooserController::kNoSignalStrengthLevelImage, |
| 306 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 371 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 307 chooser_controller_->OptionAdded( | 372 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 308 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 373 mock_chooser_controller_->OptionAdded( |
| 309 | 374 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 310 chooser_controller_->OptionUpdated( | 375 MockChooserController::ConnectedPairedStatus::NONE); |
| 376 mock_chooser_controller_->OptionAdded( |
| 377 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 378 MockChooserController::ConnectedPairedStatus::NONE); |
| 379 |
| 380 mock_chooser_controller_->OptionUpdated( |
| 311 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), | 381 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), |
| 312 MockChooserController::kSignalStrengthLevel2Bar); | 382 MockChooserController::kNoSignalStrengthLevelImage, |
| 313 | 383 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 314 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); | 384 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 315 | 385 |
| 316 EXPECT_EQ(2, table_view_.numberOfRows); | 386 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); |
| 317 EXPECT_EQ(1, table_view_.numberOfColumns); | 387 |
| 318 ASSERT_TRUE(table_view_.enabled); | 388 EXPECT_EQ(2, table_view_.numberOfRows); |
| 319 EXPECT_EQ(-1, table_view_.selectedRow); | 389 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 320 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 390 EXPECT_TRUE(table_view_.enabled); |
| 321 ExpectRowTextIs(0, @"a"); | 391 EXPECT_EQ(-1, table_view_.selectedRow); |
| 392 ExpectRowImageIsConnectedImage(0); |
| 393 ExpectRowTextIs(0, @"a"); |
| 394 EXPECT_TRUE(IsRowPaired(0)); |
| 322 ExpectSignalStrengthLevelImageIs( | 395 ExpectSignalStrengthLevelImageIs( |
| 323 1, MockChooserController::kSignalStrengthLevel1Bar); | 396 1, MockChooserController::kSignalStrengthLevel1Bar); |
| 324 ExpectRowTextIs(1, @"c"); | 397 ExpectRowTextIs(1, @"c"); |
| 398 EXPECT_FALSE(IsRowPaired(1)); |
| 325 } | 399 } |
| 326 | 400 |
| 327 TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) { | 401 TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) { |
| 328 CreateChooserDialog(); | 402 CreateChooserDialog(); |
| 329 | 403 |
| 330 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 404 mock_chooser_controller_->OptionAdded( |
| 331 MockChooserController::kNoImage); | 405 base::ASCIIToUTF16("a"), |
| 332 chooser_controller_->OptionAdded( | 406 MockChooserController::kNoSignalStrengthLevelImage, |
| 333 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 407 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 334 chooser_controller_->OptionAdded( | 408 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 335 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 409 mock_chooser_controller_->OptionAdded( |
| 410 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 411 MockChooserController::ConnectedPairedStatus::NONE); |
| 412 mock_chooser_controller_->OptionAdded( |
| 413 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 414 MockChooserController::ConnectedPairedStatus::NONE); |
| 336 | 415 |
| 337 // Select option 0. | 416 // Select option 0. |
| 338 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 417 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
| 339 byExtendingSelection:NO]; | 418 byExtendingSelection:NO]; |
| 340 EXPECT_EQ(0, table_view_.selectedRow); | 419 EXPECT_EQ(0, table_view_.selectedRow); |
| 341 ASSERT_TRUE(connect_button_.enabled); | 420 EXPECT_TRUE(connect_button_.enabled); |
| 342 | 421 |
| 343 // Deselect option 0. | 422 // Deselect option 0. |
| 344 [table_view_ deselectRow:0]; | 423 [table_view_ deselectRow:0]; |
| 345 EXPECT_EQ(-1, table_view_.selectedRow); | 424 EXPECT_EQ(-1, table_view_.selectedRow); |
| 346 ASSERT_FALSE(connect_button_.enabled); | 425 EXPECT_FALSE(connect_button_.enabled); |
| 347 | 426 |
| 348 // Select option 1. | 427 // Select option 1. |
| 349 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 428 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
| 350 byExtendingSelection:NO]; | 429 byExtendingSelection:NO]; |
| 351 EXPECT_EQ(1, table_view_.selectedRow); | 430 EXPECT_EQ(1, table_view_.selectedRow); |
| 352 ASSERT_TRUE(connect_button_.enabled); | 431 EXPECT_TRUE(connect_button_.enabled); |
| 353 | 432 |
| 354 // Deselect option 1. | 433 // Deselect option 1. |
| 355 [table_view_ deselectRow:1]; | 434 [table_view_ deselectRow:1]; |
| 356 EXPECT_EQ(-1, table_view_.selectedRow); | 435 EXPECT_EQ(-1, table_view_.selectedRow); |
| 357 ASSERT_FALSE(connect_button_.enabled); | 436 EXPECT_FALSE(connect_button_.enabled); |
| 358 } | 437 } |
| 359 | 438 |
| 360 TEST_F(ChooserDialogCocoaControllerTest, | 439 TEST_F(ChooserDialogCocoaControllerTest, |
| 361 SelectAnOptionAndThenSelectAnotherOption) { | 440 SelectAnOptionAndThenSelectAnotherOption) { |
| 362 CreateChooserDialog(); | 441 CreateChooserDialog(); |
| 363 | 442 |
| 364 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 443 mock_chooser_controller_->OptionAdded( |
| 365 MockChooserController::kNoImage); | 444 base::ASCIIToUTF16("a"), |
| 366 chooser_controller_->OptionAdded( | 445 MockChooserController::kNoSignalStrengthLevelImage, |
| 367 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 446 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 368 chooser_controller_->OptionAdded( | 447 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 369 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 448 mock_chooser_controller_->OptionAdded( |
| 449 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 450 MockChooserController::ConnectedPairedStatus::NONE); |
| 451 mock_chooser_controller_->OptionAdded( |
| 452 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 453 MockChooserController::ConnectedPairedStatus::NONE); |
| 370 | 454 |
| 371 // Select option 0. | 455 // Select option 0. |
| 372 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 456 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
| 373 byExtendingSelection:NO]; | 457 byExtendingSelection:NO]; |
| 374 EXPECT_EQ(0, table_view_.selectedRow); | 458 EXPECT_EQ(0, table_view_.selectedRow); |
| 375 ASSERT_TRUE(connect_button_.enabled); | 459 EXPECT_TRUE(connect_button_.enabled); |
| 376 | 460 |
| 377 // Select option 1. | 461 // Select option 1. |
| 378 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 462 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
| 379 byExtendingSelection:NO]; | 463 byExtendingSelection:NO]; |
| 380 EXPECT_EQ(1, table_view_.selectedRow); | 464 EXPECT_EQ(1, table_view_.selectedRow); |
| 381 ASSERT_TRUE(connect_button_.enabled); | 465 EXPECT_TRUE(connect_button_.enabled); |
| 382 | 466 |
| 383 // Select option 2. | 467 // Select option 2. |
| 384 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] | 468 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] |
| 385 byExtendingSelection:NO]; | 469 byExtendingSelection:NO]; |
| 386 EXPECT_EQ(2, table_view_.selectedRow); | 470 EXPECT_EQ(2, table_view_.selectedRow); |
| 387 ASSERT_TRUE(connect_button_.enabled); | 471 EXPECT_TRUE(connect_button_.enabled); |
| 388 } | 472 } |
| 389 | 473 |
| 390 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndRemoveAnotherOption) { | 474 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndRemoveAnotherOption) { |
| 391 CreateChooserDialog(); | 475 CreateChooserDialog(); |
| 392 | 476 |
| 393 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 477 mock_chooser_controller_->OptionAdded( |
| 394 MockChooserController::kNoImage); | 478 base::ASCIIToUTF16("a"), |
| 395 chooser_controller_->OptionAdded( | 479 MockChooserController::kNoSignalStrengthLevelImage, |
| 396 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 480 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 397 chooser_controller_->OptionAdded( | 481 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 398 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 482 mock_chooser_controller_->OptionAdded( |
| 483 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 484 MockChooserController::ConnectedPairedStatus::NONE); |
| 485 mock_chooser_controller_->OptionAdded( |
| 486 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 487 MockChooserController::ConnectedPairedStatus::NONE); |
| 399 | 488 |
| 400 // Select option 1. | 489 // Select option 1. |
| 401 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 490 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
| 402 byExtendingSelection:NO]; | 491 byExtendingSelection:NO]; |
| 403 EXPECT_EQ(3, table_view_.numberOfRows); | 492 EXPECT_EQ(3, table_view_.numberOfRows); |
| 404 EXPECT_EQ(1, table_view_.selectedRow); | 493 EXPECT_EQ(1, table_view_.selectedRow); |
| 405 ASSERT_TRUE(connect_button_.enabled); | 494 EXPECT_TRUE(connect_button_.enabled); |
| 406 | 495 |
| 407 // Remove option 0. The list becomes: b c. And the index of the previously | 496 // Remove option 0. The list becomes: b c. And the index of the previously |
| 408 // selected item "b" becomes 0. | 497 // selected item "b" becomes 0. |
| 409 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); | 498 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); |
| 410 EXPECT_EQ(2, table_view_.numberOfRows); | 499 EXPECT_EQ(2, table_view_.numberOfRows); |
| 411 EXPECT_EQ(0, table_view_.selectedRow); | 500 EXPECT_EQ(0, table_view_.selectedRow); |
| 412 ASSERT_TRUE(connect_button_.enabled); | 501 EXPECT_TRUE(connect_button_.enabled); |
| 413 | 502 |
| 414 // Remove option 1. The list becomes: b. | 503 // Remove option 1. The list becomes: b. |
| 415 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); | 504 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); |
| 416 EXPECT_EQ(1, table_view_.numberOfRows); | 505 EXPECT_EQ(1, table_view_.numberOfRows); |
| 417 EXPECT_EQ(0, table_view_.selectedRow); | 506 EXPECT_EQ(0, table_view_.selectedRow); |
| 418 ASSERT_TRUE(connect_button_.enabled); | 507 EXPECT_TRUE(connect_button_.enabled); |
| 419 } | 508 } |
| 420 | 509 |
| 421 TEST_F(ChooserDialogCocoaControllerTest, | 510 TEST_F(ChooserDialogCocoaControllerTest, |
| 422 SelectAnOptionAndRemoveTheSelectedOption) { | 511 SelectAnOptionAndRemoveTheSelectedOption) { |
| 423 CreateChooserDialog(); | 512 CreateChooserDialog(); |
| 424 | 513 |
| 425 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 514 mock_chooser_controller_->OptionAdded( |
| 426 MockChooserController::kNoImage); | 515 base::ASCIIToUTF16("a"), |
| 427 chooser_controller_->OptionAdded( | 516 MockChooserController::kNoSignalStrengthLevelImage, |
| 428 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 517 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 429 chooser_controller_->OptionAdded( | 518 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 430 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 519 mock_chooser_controller_->OptionAdded( |
| 520 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 521 MockChooserController::ConnectedPairedStatus::NONE); |
| 522 mock_chooser_controller_->OptionAdded( |
| 523 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 524 MockChooserController::ConnectedPairedStatus::NONE); |
| 431 | 525 |
| 432 // Select option 1. | 526 // Select option 1. |
| 433 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 527 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
| 434 byExtendingSelection:NO]; | 528 byExtendingSelection:NO]; |
| 435 EXPECT_EQ(3, table_view_.numberOfRows); | 529 EXPECT_EQ(3, table_view_.numberOfRows); |
| 436 EXPECT_EQ(1, table_view_.selectedRow); | 530 EXPECT_EQ(1, table_view_.selectedRow); |
| 437 ASSERT_TRUE(connect_button_.enabled); | 531 EXPECT_TRUE(connect_button_.enabled); |
| 438 | 532 |
| 439 // Remove option 1 | 533 // Remove option 1 |
| 440 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); | 534 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); |
| 441 EXPECT_EQ(2, table_view_.numberOfRows); | 535 EXPECT_EQ(2, table_view_.numberOfRows); |
| 442 // No option selected. | 536 // No option selected. |
| 443 EXPECT_EQ(-1, table_view_.selectedRow); | 537 EXPECT_EQ(-1, table_view_.selectedRow); |
| 444 // Since no option selected, the "Connect" button should be disabled. | 538 // Since no option selected, the "Connect" button should be disabled. |
| 445 ASSERT_FALSE(connect_button_.enabled); | 539 EXPECT_FALSE(connect_button_.enabled); |
| 446 } | 540 } |
| 447 | 541 |
| 448 TEST_F(ChooserDialogCocoaControllerTest, | 542 TEST_F(ChooserDialogCocoaControllerTest, |
| 449 SelectAnOptionAndUpdateTheSelectedOption) { | 543 SelectAnOptionAndUpdateTheSelectedOption) { |
| 450 CreateChooserDialog(); | 544 CreateChooserDialog(); |
| 451 | 545 |
| 452 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 546 mock_chooser_controller_->OptionAdded( |
| 453 MockChooserController::kNoImage); | 547 base::ASCIIToUTF16("a"), |
| 454 chooser_controller_->OptionAdded( | 548 MockChooserController::kNoSignalStrengthLevelImage, |
| 455 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 549 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 456 chooser_controller_->OptionAdded( | 550 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 457 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 551 mock_chooser_controller_->OptionAdded( |
| 552 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 553 MockChooserController::ConnectedPairedStatus::NONE); |
| 554 mock_chooser_controller_->OptionAdded( |
| 555 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 556 MockChooserController::ConnectedPairedStatus::NONE); |
| 458 | 557 |
| 459 // Select option 1. | 558 // Select option 1. |
| 460 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 559 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
| 461 byExtendingSelection:NO]; | 560 byExtendingSelection:NO]; |
| 462 | 561 |
| 463 // Update option 1. | 562 // Update option 1. |
| 464 chooser_controller_->OptionUpdated( | 563 mock_chooser_controller_->OptionUpdated( |
| 465 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), | 564 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), |
| 466 MockChooserController::kSignalStrengthLevel2Bar); | 565 MockChooserController::kNoSignalStrengthLevelImage, |
| 566 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 567 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 467 | 568 |
| 468 EXPECT_EQ(1, table_view_.selectedRow); | 569 EXPECT_EQ(1, table_view_.selectedRow); |
| 469 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 570 ExpectRowImageIsConnectedImage(0); |
| 470 ExpectRowTextIs(0, @"a"); | 571 ExpectRowTextIs(0, @"a"); |
| 471 ExpectSignalStrengthLevelImageIs( | 572 EXPECT_TRUE(IsRowPaired(0)); |
| 472 1, MockChooserController::kSignalStrengthLevel2Bar); | 573 ExpectRowImageIsConnectedImage(1); |
| 473 ExpectRowTextIs(1, @"d"); | 574 ExpectRowTextIs(1, @"d"); |
| 575 EXPECT_TRUE(IsRowPaired(1)); |
| 474 ExpectSignalStrengthLevelImageIs( | 576 ExpectSignalStrengthLevelImageIs( |
| 475 2, MockChooserController::kSignalStrengthLevel1Bar); | 577 2, MockChooserController::kSignalStrengthLevel1Bar); |
| 476 ExpectRowTextIs(2, @"c"); | 578 ExpectRowTextIs(2, @"c"); |
| 477 ASSERT_TRUE(connect_button_.enabled); | 579 EXPECT_FALSE(IsRowPaired(2)); |
| 580 EXPECT_TRUE(connect_button_.enabled); |
| 478 } | 581 } |
| 479 | 582 |
| 480 TEST_F(ChooserDialogCocoaControllerTest, | 583 TEST_F(ChooserDialogCocoaControllerTest, |
| 481 AddAnOptionAndSelectItAndRemoveTheSelectedOption) { | 584 AddAnOptionAndSelectItAndRemoveTheSelectedOption) { |
| 482 CreateChooserDialog(); | 585 CreateChooserDialog(); |
| 483 | 586 |
| 484 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 587 mock_chooser_controller_->OptionAdded( |
| 485 MockChooserController::kNoImage); | 588 base::ASCIIToUTF16("a"), |
| 589 MockChooserController::kNoSignalStrengthLevelImage, |
| 590 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 591 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 486 | 592 |
| 487 // Select option 0. | 593 // Select option 0. |
| 488 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 594 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
| 489 byExtendingSelection:NO]; | 595 byExtendingSelection:NO]; |
| 490 EXPECT_EQ(1, table_view_.numberOfRows); | 596 EXPECT_EQ(1, table_view_.numberOfRows); |
| 491 EXPECT_EQ(0, table_view_.selectedRow); | 597 EXPECT_EQ(0, table_view_.selectedRow); |
| 492 ASSERT_TRUE(connect_button_.enabled); | 598 EXPECT_TRUE(connect_button_.enabled); |
| 493 | 599 |
| 494 // Remove option 0. | 600 // Remove option 0. |
| 495 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); | 601 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); |
| 496 // There is no option shown now. But since "No devices found." | 602 // There is no option shown now. But since "No devices found." |
| 497 // needs to be displayed on the |table_view_|, the number of rows is 1. | 603 // needs to be displayed on the |table_view_|, the number of rows is 1. |
| 498 EXPECT_EQ(1, table_view_.numberOfRows); | 604 EXPECT_EQ(1, table_view_.numberOfRows); |
| 499 // No option selected. | 605 // No option selected. |
| 500 EXPECT_EQ(-1, table_view_.selectedRow); | 606 EXPECT_EQ(-1, table_view_.selectedRow); |
| 501 // |table_view_| should be disabled since there is no option shown. | 607 // |table_view_| should be disabled since there is no option shown. |
| 502 ASSERT_FALSE(table_view_.enabled); | 608 EXPECT_FALSE(table_view_.enabled); |
| 503 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 609 ExpectNoRowImage(0); |
| 504 ExpectRowTextIs( | 610 ExpectRowTextIs( |
| 505 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 611 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 612 EXPECT_FALSE(IsRowPaired(0)); |
| 506 // Since no option selected, the "Connect" button should be disabled. | 613 // Since no option selected, the "Connect" button should be disabled. |
| 507 ASSERT_FALSE(connect_button_.enabled); | 614 EXPECT_FALSE(connect_button_.enabled); |
| 508 } | 615 } |
| 509 | 616 |
| 510 TEST_F(ChooserDialogCocoaControllerTest, NoOptionSelectedAndPressCancelButton) { | 617 TEST_F(ChooserDialogCocoaControllerTest, NoOptionSelectedAndPressCancelButton) { |
| 511 CreateChooserDialog(); | 618 CreateChooserDialog(); |
| 512 | 619 |
| 513 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 620 mock_chooser_controller_->OptionAdded( |
| 514 MockChooserController::kNoImage); | 621 base::ASCIIToUTF16("a"), |
| 515 chooser_controller_->OptionAdded( | 622 MockChooserController::kNoSignalStrengthLevelImage, |
| 516 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 623 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 517 chooser_controller_->OptionAdded( | 624 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 518 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 625 mock_chooser_controller_->OptionAdded( |
| 519 | 626 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 520 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); | 627 MockChooserController::ConnectedPairedStatus::NONE); |
| 521 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1); | 628 mock_chooser_controller_->OptionAdded( |
| 629 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 630 MockChooserController::ConnectedPairedStatus::NONE); |
| 631 |
| 632 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0); |
| 633 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(1); |
| 522 [cancel_button_ performClick:chooser_dialog_controller_]; | 634 [cancel_button_ performClick:chooser_dialog_controller_]; |
| 523 } | 635 } |
| 524 | 636 |
| 525 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressConnectButton) { | 637 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressConnectButton) { |
| 526 CreateChooserDialog(); | 638 CreateChooserDialog(); |
| 527 | 639 |
| 528 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 640 mock_chooser_controller_->OptionAdded( |
| 529 MockChooserController::kNoImage); | 641 base::ASCIIToUTF16("a"), |
| 530 chooser_controller_->OptionAdded( | 642 MockChooserController::kNoSignalStrengthLevelImage, |
| 531 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 643 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 532 chooser_controller_->OptionAdded( | 644 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 533 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 645 mock_chooser_controller_->OptionAdded( |
| 646 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 647 MockChooserController::ConnectedPairedStatus::NONE); |
| 648 mock_chooser_controller_->OptionAdded( |
| 649 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 650 MockChooserController::ConnectedPairedStatus::NONE); |
| 534 | 651 |
| 535 // Select option 0 and press "Connect" button. | 652 // Select option 0 and press "Connect" button. |
| 536 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 653 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
| 537 byExtendingSelection:NO]; | 654 byExtendingSelection:NO]; |
| 538 EXPECT_CALL(*chooser_controller_, Select(0)).Times(1); | 655 EXPECT_CALL(*mock_chooser_controller_, Select(0)).Times(1); |
| 539 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); | 656 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(0); |
| 540 [connect_button_ performClick:chooser_dialog_controller_]; | 657 [connect_button_ performClick:chooser_dialog_controller_]; |
| 541 | 658 |
| 542 // Select option 2 and press "Connect" button. | 659 // Select option 2 and press "Connect" button. |
| 543 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] | 660 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] |
| 544 byExtendingSelection:NO]; | 661 byExtendingSelection:NO]; |
| 545 EXPECT_CALL(*chooser_controller_, Select(2)).Times(1); | 662 EXPECT_CALL(*mock_chooser_controller_, Select(2)).Times(1); |
| 546 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); | 663 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(0); |
| 547 [connect_button_ performClick:chooser_dialog_controller_]; | 664 [connect_button_ performClick:chooser_dialog_controller_]; |
| 548 } | 665 } |
| 549 | 666 |
| 550 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressCancelButton) { | 667 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressCancelButton) { |
| 551 CreateChooserDialog(); | 668 CreateChooserDialog(); |
| 552 | 669 |
| 553 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 670 mock_chooser_controller_->OptionAdded( |
| 554 MockChooserController::kNoImage); | 671 base::ASCIIToUTF16("a"), |
| 555 chooser_controller_->OptionAdded( | 672 MockChooserController::kNoSignalStrengthLevelImage, |
| 556 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 673 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 557 chooser_controller_->OptionAdded( | 674 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 558 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 675 mock_chooser_controller_->OptionAdded( |
| 676 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 677 MockChooserController::ConnectedPairedStatus::NONE); |
| 678 mock_chooser_controller_->OptionAdded( |
| 679 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 680 MockChooserController::ConnectedPairedStatus::NONE); |
| 559 | 681 |
| 560 // Select option 0 and press "Cancel" button. | 682 // Select option 0 and press "Cancel" button. |
| 561 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 683 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
| 562 byExtendingSelection:NO]; | 684 byExtendingSelection:NO]; |
| 563 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); | 685 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0); |
| 564 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1); | 686 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(1); |
| 565 [cancel_button_ performClick:chooser_dialog_controller_]; | 687 [cancel_button_ performClick:chooser_dialog_controller_]; |
| 566 } | 688 } |
| 567 | 689 |
| 568 TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) { | 690 TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) { |
| 569 CreateChooserDialog(); | 691 CreateChooserDialog(); |
| 570 | 692 |
| 571 chooser_controller_->OnAdapterPresenceChanged( | 693 mock_chooser_controller_->OnAdapterPresenceChanged( |
| 572 content::BluetoothChooser::AdapterPresence::POWERED_ON); | 694 content::BluetoothChooser::AdapterPresence::POWERED_ON); |
| 573 EXPECT_FALSE(table_view_.hidden); | 695 EXPECT_FALSE(table_view_.hidden); |
| 574 // There is no option shown now. But since "No devices found." | 696 // There is no option shown now. But since "No devices found." |
| 575 // needs to be displayed on the |table_view_|, the number of rows is 1. | 697 // needs to be displayed on the |table_view_|, the number of rows is 1. |
| 576 EXPECT_EQ(1, table_view_.numberOfRows); | 698 EXPECT_EQ(1, table_view_.numberOfRows); |
| 577 // |table_view_| should be disabled since there is no option shown. | 699 // |table_view_| should be disabled since there is no option shown. |
| 578 ASSERT_FALSE(table_view_.enabled); | 700 EXPECT_FALSE(table_view_.enabled); |
| 579 // No option selected. | 701 // No option selected. |
| 580 EXPECT_EQ(-1, table_view_.selectedRow); | 702 EXPECT_EQ(-1, table_view_.selectedRow); |
| 581 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 703 ExpectNoRowImage(0); |
| 582 ExpectRowTextIs( | 704 ExpectRowTextIs( |
| 583 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 705 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 706 EXPECT_FALSE(IsRowPaired(0)); |
| 584 EXPECT_TRUE(spinner_.hidden); | 707 EXPECT_TRUE(spinner_.hidden); |
| 585 EXPECT_TRUE(status_.hidden); | 708 EXPECT_TRUE(status_.hidden); |
| 586 EXPECT_FALSE(rescan_button_.hidden); | 709 EXPECT_FALSE(rescan_button_.hidden); |
| 587 ASSERT_FALSE(connect_button_.enabled); | 710 EXPECT_FALSE(connect_button_.enabled); |
| 588 ASSERT_TRUE(cancel_button_.enabled); | 711 EXPECT_TRUE(cancel_button_.enabled); |
| 589 | 712 |
| 590 // Add options | 713 // Add options |
| 591 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 714 mock_chooser_controller_->OptionAdded( |
| 592 MockChooserController::kNoImage); | 715 base::ASCIIToUTF16("a"), |
| 593 chooser_controller_->OptionAdded( | 716 MockChooserController::kNoSignalStrengthLevelImage, |
| 594 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 717 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 595 chooser_controller_->OptionAdded( | 718 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 596 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 719 mock_chooser_controller_->OptionAdded( |
| 597 ASSERT_TRUE(table_view_.enabled); | 720 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 721 MockChooserController::ConnectedPairedStatus::NONE); |
| 722 mock_chooser_controller_->OptionAdded( |
| 723 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 724 MockChooserController::ConnectedPairedStatus::NONE); |
| 725 EXPECT_TRUE(table_view_.enabled); |
| 598 EXPECT_EQ(3, table_view_.numberOfRows); | 726 EXPECT_EQ(3, table_view_.numberOfRows); |
| 599 // Select option 1. | 727 // Select option 1. |
| 600 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 728 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
| 601 byExtendingSelection:NO]; | 729 byExtendingSelection:NO]; |
| 602 EXPECT_EQ(1, table_view_.selectedRow); | 730 EXPECT_EQ(1, table_view_.selectedRow); |
| 603 ASSERT_TRUE(connect_button_.enabled); | 731 EXPECT_TRUE(connect_button_.enabled); |
| 604 ASSERT_TRUE(cancel_button_.enabled); | 732 EXPECT_TRUE(cancel_button_.enabled); |
| 605 | 733 |
| 606 chooser_controller_->OnAdapterPresenceChanged( | 734 mock_chooser_controller_->OnAdapterPresenceChanged( |
| 607 content::BluetoothChooser::AdapterPresence::POWERED_OFF); | 735 content::BluetoothChooser::AdapterPresence::POWERED_OFF); |
| 608 EXPECT_FALSE(table_view_.hidden); | 736 EXPECT_FALSE(table_view_.hidden); |
| 609 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|, | 737 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|, |
| 610 // the number of rows is 1. | 738 // the number of rows is 1. |
| 611 EXPECT_EQ(1, table_view_.numberOfRows); | 739 EXPECT_EQ(1, table_view_.numberOfRows); |
| 612 // |table_view_| should be disabled since there is no option shown. | 740 // |table_view_| should be disabled since there is no option shown. |
| 613 EXPECT_FALSE(table_view_.enabled); | 741 EXPECT_FALSE(table_view_.enabled); |
| 614 // No option selected. | 742 // No option selected. |
| 615 EXPECT_EQ(-1, table_view_.selectedRow); | 743 EXPECT_EQ(-1, table_view_.selectedRow); |
| 616 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 744 ExpectNoRowImage(0); |
| 617 ExpectRowTextIs( | 745 ExpectRowTextIs( |
| 618 0, l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF)); | 746 0, l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF)); |
| 747 EXPECT_FALSE(IsRowPaired(0)); |
| 619 EXPECT_TRUE(spinner_.hidden); | 748 EXPECT_TRUE(spinner_.hidden); |
| 620 EXPECT_TRUE(status_.hidden); | 749 EXPECT_TRUE(status_.hidden); |
| 621 EXPECT_TRUE(rescan_button_.hidden); | 750 EXPECT_TRUE(rescan_button_.hidden); |
| 622 // Since the adapter is turned off, the previously selected option | 751 // Since the adapter is turned off, the previously selected option |
| 623 // becomes invalid, the OK button is disabled. | 752 // becomes invalid, the OK button is disabled. |
| 624 EXPECT_EQ(0u, chooser_controller_->NumOptions()); | 753 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); |
| 625 ASSERT_FALSE(connect_button_.enabled); | 754 EXPECT_FALSE(connect_button_.enabled); |
| 626 ASSERT_TRUE(cancel_button_.enabled); | 755 EXPECT_TRUE(cancel_button_.enabled); |
| 627 | 756 |
| 628 chooser_controller_->OnAdapterPresenceChanged( | 757 mock_chooser_controller_->OnAdapterPresenceChanged( |
| 629 content::BluetoothChooser::AdapterPresence::POWERED_ON); | 758 content::BluetoothChooser::AdapterPresence::POWERED_ON); |
| 630 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 759 ExpectNoRowImage(0); |
| 631 ExpectRowTextIs( | 760 ExpectRowTextIs( |
| 632 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 761 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 633 EXPECT_EQ(0u, chooser_controller_->NumOptions()); | 762 EXPECT_FALSE(IsRowPaired(0)); |
| 634 ASSERT_FALSE(connect_button_.enabled); | 763 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); |
| 635 ASSERT_TRUE(cancel_button_.enabled); | 764 EXPECT_FALSE(connect_button_.enabled); |
| 765 EXPECT_TRUE(cancel_button_.enabled); |
| 636 } | 766 } |
| 637 | 767 |
| 638 TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndNoOptionAddedAndIdle) { | 768 TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndNoOptionAddedAndIdle) { |
| 639 CreateChooserDialog(); | 769 CreateChooserDialog(); |
| 640 | 770 |
| 641 // Add options | 771 // Add options |
| 642 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 772 mock_chooser_controller_->OptionAdded( |
| 643 MockChooserController::kNoImage); | 773 base::ASCIIToUTF16("a"), |
| 644 chooser_controller_->OptionAdded( | 774 MockChooserController::kNoSignalStrengthLevelImage, |
| 645 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 775 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 646 chooser_controller_->OptionAdded( | 776 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 647 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 777 mock_chooser_controller_->OptionAdded( |
| 778 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 779 MockChooserController::ConnectedPairedStatus::NONE); |
| 780 mock_chooser_controller_->OptionAdded( |
| 781 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 782 MockChooserController::ConnectedPairedStatus::NONE); |
| 648 EXPECT_FALSE(table_view_.hidden); | 783 EXPECT_FALSE(table_view_.hidden); |
| 649 ASSERT_TRUE(table_view_.enabled); | 784 EXPECT_TRUE(table_view_.enabled); |
| 650 EXPECT_EQ(3, table_view_.numberOfRows); | 785 EXPECT_EQ(3, table_view_.numberOfRows); |
| 651 // Select option 1. | 786 // Select option 1. |
| 652 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 787 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
| 653 byExtendingSelection:NO]; | 788 byExtendingSelection:NO]; |
| 654 EXPECT_EQ(1, table_view_.selectedRow); | 789 EXPECT_EQ(1, table_view_.selectedRow); |
| 655 EXPECT_TRUE(spinner_.hidden); | 790 EXPECT_TRUE(spinner_.hidden); |
| 656 EXPECT_TRUE(status_.hidden); | 791 EXPECT_TRUE(status_.hidden); |
| 657 EXPECT_TRUE(rescan_button_.hidden); | 792 EXPECT_TRUE(rescan_button_.hidden); |
| 658 ASSERT_TRUE(connect_button_.enabled); | 793 EXPECT_TRUE(connect_button_.enabled); |
| 659 ASSERT_TRUE(cancel_button_.enabled); | 794 EXPECT_TRUE(cancel_button_.enabled); |
| 660 | 795 |
| 661 chooser_controller_->OnDiscoveryStateChanged( | 796 mock_chooser_controller_->OnDiscoveryStateChanged( |
| 662 content::BluetoothChooser::DiscoveryState::DISCOVERING); | 797 content::BluetoothChooser::DiscoveryState::DISCOVERING); |
| 663 EXPECT_TRUE(table_view_.hidden); | 798 EXPECT_TRUE(table_view_.hidden); |
| 664 EXPECT_FALSE(spinner_.hidden); | 799 EXPECT_FALSE(spinner_.hidden); |
| 665 EXPECT_FALSE(status_.hidden); | 800 EXPECT_FALSE(status_.hidden); |
| 666 EXPECT_TRUE(rescan_button_.hidden); | 801 EXPECT_TRUE(rescan_button_.hidden); |
| 667 // OK button is disabled since the chooser is refreshing options. | 802 // OK button is disabled since the chooser is refreshing options. |
| 668 ASSERT_FALSE(connect_button_.enabled); | 803 EXPECT_FALSE(connect_button_.enabled); |
| 669 ASSERT_TRUE(cancel_button_.enabled); | 804 EXPECT_TRUE(cancel_button_.enabled); |
| 670 | 805 |
| 671 chooser_controller_->OnDiscoveryStateChanged( | 806 mock_chooser_controller_->OnDiscoveryStateChanged( |
| 672 content::BluetoothChooser::DiscoveryState::IDLE); | 807 content::BluetoothChooser::DiscoveryState::IDLE); |
| 673 EXPECT_FALSE(table_view_.hidden); | 808 EXPECT_FALSE(table_view_.hidden); |
| 674 // There is no option shown now. But since "No devices found." | 809 // There is no option shown now. But since "No devices found." |
| 675 // needs to be displayed on the |table_view_|, the number of rows is 1. | 810 // needs to be displayed on the |table_view_|, the number of rows is 1. |
| 676 EXPECT_EQ(1, table_view_.numberOfRows); | 811 EXPECT_EQ(1, table_view_.numberOfRows); |
| 677 // |table_view_| should be disabled since there is no option shown. | 812 // |table_view_| should be disabled since there is no option shown. |
| 678 ASSERT_FALSE(table_view_.enabled); | 813 EXPECT_FALSE(table_view_.enabled); |
| 679 // No option selected. | 814 // No option selected. |
| 680 EXPECT_EQ(-1, table_view_.selectedRow); | 815 EXPECT_EQ(-1, table_view_.selectedRow); |
| 681 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 816 ExpectNoRowImage(0); |
| 682 ExpectRowTextIs( | 817 ExpectRowTextIs( |
| 683 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 818 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 819 EXPECT_FALSE(IsRowPaired(0)); |
| 684 EXPECT_TRUE(spinner_.hidden); | 820 EXPECT_TRUE(spinner_.hidden); |
| 685 EXPECT_TRUE(status_.hidden); | 821 EXPECT_TRUE(status_.hidden); |
| 686 EXPECT_FALSE(rescan_button_.hidden); | 822 EXPECT_FALSE(rescan_button_.hidden); |
| 687 // OK button is disabled since the chooser refreshed options. | 823 // OK button is disabled since the chooser refreshed options. |
| 688 ASSERT_FALSE(connect_button_.enabled); | 824 EXPECT_FALSE(connect_button_.enabled); |
| 689 ASSERT_TRUE(cancel_button_.enabled); | 825 EXPECT_TRUE(cancel_button_.enabled); |
| 690 } | 826 } |
| 691 | 827 |
| 692 TEST_F(ChooserDialogCocoaControllerTest, | 828 TEST_F(ChooserDialogCocoaControllerTest, |
| 693 DiscoveringAndOneOptionAddedAndSelectedAndIdle) { | 829 DiscoveringAndOneOptionAddedAndSelectedAndIdle) { |
| 694 CreateChooserDialog(); | 830 CreateChooserDialog(); |
| 695 | 831 |
| 696 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 832 mock_chooser_controller_->OptionAdded( |
| 697 MockChooserController::kNoImage); | 833 base::ASCIIToUTF16("a"), |
| 698 chooser_controller_->OptionAdded( | 834 MockChooserController::kNoSignalStrengthLevelImage, |
| 699 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 835 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 700 chooser_controller_->OptionAdded( | 836 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 701 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 837 mock_chooser_controller_->OptionAdded( |
| 838 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 839 MockChooserController::ConnectedPairedStatus::NONE); |
| 840 mock_chooser_controller_->OptionAdded( |
| 841 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 842 MockChooserController::ConnectedPairedStatus::NONE); |
| 702 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 843 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
| 703 byExtendingSelection:NO]; | 844 byExtendingSelection:NO]; |
| 704 | 845 |
| 705 chooser_controller_->OnDiscoveryStateChanged( | 846 mock_chooser_controller_->OnDiscoveryStateChanged( |
| 706 content::BluetoothChooser::DiscoveryState::DISCOVERING); | 847 content::BluetoothChooser::DiscoveryState::DISCOVERING); |
| 707 chooser_controller_->OptionAdded( | 848 mock_chooser_controller_->OptionAdded( |
| 708 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar); | 849 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar, |
| 850 MockChooserController::ConnectedPairedStatus::NONE); |
| 709 EXPECT_FALSE(table_view_.hidden); | 851 EXPECT_FALSE(table_view_.hidden); |
| 710 // |table_view_| should be enabled since there is an option. | 852 // |table_view_| should be enabled since there is an option. |
| 711 ASSERT_TRUE(table_view_.enabled); | 853 EXPECT_TRUE(table_view_.enabled); |
| 712 EXPECT_EQ(1, table_view_.numberOfRows); | 854 EXPECT_EQ(1, table_view_.numberOfRows); |
| 713 // No option selected. | 855 // No option selected. |
| 714 EXPECT_EQ(-1, table_view_.selectedRow); | 856 EXPECT_EQ(-1, table_view_.selectedRow); |
| 715 ExpectSignalStrengthLevelImageIs( | 857 ExpectSignalStrengthLevelImageIs( |
| 716 0, MockChooserController::kSignalStrengthLevel2Bar); | 858 0, MockChooserController::kSignalStrengthLevel2Bar); |
| 717 ExpectRowTextIs(0, @"d"); | 859 ExpectRowTextIs(0, @"d"); |
| 860 EXPECT_FALSE(IsRowPaired(0)); |
| 718 EXPECT_TRUE(spinner_.hidden); | 861 EXPECT_TRUE(spinner_.hidden); |
| 719 EXPECT_FALSE(status_.hidden); | 862 EXPECT_FALSE(status_.hidden); |
| 720 EXPECT_TRUE(rescan_button_.hidden); | 863 EXPECT_TRUE(rescan_button_.hidden); |
| 721 // OK button is disabled since no option is selected. | 864 // OK button is disabled since no option is selected. |
| 722 ASSERT_FALSE(connect_button_.enabled); | 865 EXPECT_FALSE(connect_button_.enabled); |
| 723 ASSERT_TRUE(cancel_button_.enabled); | 866 EXPECT_TRUE(cancel_button_.enabled); |
| 724 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 867 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
| 725 byExtendingSelection:NO]; | 868 byExtendingSelection:NO]; |
| 726 EXPECT_EQ(0, table_view_.selectedRow); | 869 EXPECT_EQ(0, table_view_.selectedRow); |
| 727 ASSERT_TRUE(connect_button_.enabled); | 870 EXPECT_TRUE(connect_button_.enabled); |
| 728 ASSERT_TRUE(cancel_button_.enabled); | 871 EXPECT_TRUE(cancel_button_.enabled); |
| 729 | 872 |
| 730 chooser_controller_->OnDiscoveryStateChanged( | 873 mock_chooser_controller_->OnDiscoveryStateChanged( |
| 731 content::BluetoothChooser::DiscoveryState::IDLE); | 874 content::BluetoothChooser::DiscoveryState::IDLE); |
| 732 EXPECT_FALSE(table_view_.hidden); | 875 EXPECT_FALSE(table_view_.hidden); |
| 733 ASSERT_TRUE(table_view_.enabled); | 876 EXPECT_TRUE(table_view_.enabled); |
| 734 EXPECT_EQ(1, table_view_.numberOfRows); | 877 EXPECT_EQ(1, table_view_.numberOfRows); |
| 735 EXPECT_EQ(0, table_view_.selectedRow); | 878 EXPECT_EQ(0, table_view_.selectedRow); |
| 736 ExpectRowTextIs(0, @"d"); | 879 ExpectRowTextIs(0, @"d"); |
| 880 EXPECT_FALSE(IsRowPaired(0)); |
| 737 EXPECT_TRUE(spinner_.hidden); | 881 EXPECT_TRUE(spinner_.hidden); |
| 738 EXPECT_TRUE(status_.hidden); | 882 EXPECT_TRUE(status_.hidden); |
| 739 EXPECT_FALSE(rescan_button_.hidden); | 883 EXPECT_FALSE(rescan_button_.hidden); |
| 740 ASSERT_TRUE(connect_button_.enabled); | 884 EXPECT_TRUE(connect_button_.enabled); |
| 741 ASSERT_TRUE(cancel_button_.enabled); | 885 EXPECT_TRUE(cancel_button_.enabled); |
| 742 } | 886 } |
| 743 | 887 |
| 744 TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) { | 888 TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) { |
| 745 CreateChooserDialog(); | 889 CreateChooserDialog(); |
| 746 | 890 |
| 747 EXPECT_CALL(*chooser_controller_, RefreshOptions()).Times(1); | 891 EXPECT_CALL(*mock_chooser_controller_, RefreshOptions()).Times(1); |
| 748 [rescan_button_ performClick:chooser_dialog_controller_]; | 892 [rescan_button_ performClick:chooser_dialog_controller_]; |
| 749 } | 893 } |
| 750 | 894 |
| 751 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) { | 895 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) { |
| 752 CreateChooserDialog(); | 896 CreateChooserDialog(); |
| 753 | 897 |
| 754 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 898 mock_chooser_controller_->OptionAdded( |
| 755 MockChooserController::kNoImage); | 899 base::ASCIIToUTF16("a"), |
| 756 chooser_controller_->OptionAdded( | 900 MockChooserController::kNoSignalStrengthLevelImage, |
| 757 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 901 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 758 chooser_controller_->OptionAdded( | 902 MockChooserController::ConnectedPairedStatus::PAIRED); |
| 759 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 903 mock_chooser_controller_->OptionAdded( |
| 904 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 905 MockChooserController::ConnectedPairedStatus::NONE); |
| 906 mock_chooser_controller_->OptionAdded( |
| 907 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 908 MockChooserController::ConnectedPairedStatus::NONE); |
| 760 | 909 |
| 761 // Select option 0 and press "Get help" button. | 910 // Select option 0 and press "Get help" button. |
| 762 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 911 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
| 763 byExtendingSelection:NO]; | 912 byExtendingSelection:NO]; |
| 764 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); | 913 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0); |
| 765 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); | 914 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(0); |
| 766 EXPECT_CALL(*chooser_controller_, OpenHelpCenterUrl()).Times(1); | 915 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1); |
| 767 [help_button_ performClick:chooser_dialog_controller_]; | 916 [help_button_ performClick:chooser_dialog_controller_]; |
| 768 } | 917 } |
| OLD | NEW |