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

Side by Side Diff: chrome/browser/ui/views/chooser_content_view_unittest.cc

Issue 2344133003: Add help link when Bluetooth adapter is off for WebBluetooth chooser (Closed)
Patch Set: address more comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/views/chooser_content_view.cc ('k') | chrome/common/url_constants.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "chrome/browser/ui/views/chooser_content_view.h" 5 #include "chrome/browser/ui/views/chooser_content_view.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 mock_chooser_controller_ = mock_chooser_controller.get(); 48 mock_chooser_controller_ = mock_chooser_controller.get();
49 mock_table_view_observer_.reset(new MockTableViewObserver()); 49 mock_table_view_observer_.reset(new MockTableViewObserver());
50 chooser_content_view_.reset(new ChooserContentView( 50 chooser_content_view_.reset(new ChooserContentView(
51 mock_table_view_observer_.get(), std::move(mock_chooser_controller))); 51 mock_table_view_observer_.get(), std::move(mock_chooser_controller)));
52 table_view_ = chooser_content_view_->table_view_for_test(); 52 table_view_ = chooser_content_view_->table_view_for_test();
53 ASSERT_TRUE(table_view_); 53 ASSERT_TRUE(table_view_);
54 table_model_ = table_view_->model(); 54 table_model_ = table_view_->model();
55 ASSERT_TRUE(table_model_); 55 ASSERT_TRUE(table_model_);
56 throbber_ = chooser_content_view_->throbber_for_test(); 56 throbber_ = chooser_content_view_->throbber_for_test();
57 ASSERT_TRUE(throbber_); 57 ASSERT_TRUE(throbber_);
58 turn_adapter_off_help_ =
59 chooser_content_view_->turn_adapter_off_help_for_test();
60 ASSERT_TRUE(turn_adapter_off_help_);
58 discovery_state_.reset(chooser_content_view_->CreateExtraView()); 61 discovery_state_.reset(chooser_content_view_->CreateExtraView());
59 ASSERT_TRUE(discovery_state_); 62 ASSERT_TRUE(discovery_state_);
60 styled_label_.reset(chooser_content_view_->CreateFootnoteView()); 63 styled_label_.reset(chooser_content_view_->CreateFootnoteView());
61 ASSERT_TRUE(styled_label_); 64 ASSERT_TRUE(styled_label_);
62 } 65 }
63 66
64 protected: 67 protected:
65 // |discovery_state_| needs to be valid when |chooser_content_view_| is 68 // |discovery_state_| needs to be valid when |chooser_content_view_| is
66 // released, since ChooserContentView's destructor needs to access it. 69 // released, since ChooserContentView's destructor needs to access it.
67 // So it is declared before |chooser_content_view_|. 70 // So it is declared before |chooser_content_view_|.
68 std::unique_ptr<views::Link> discovery_state_; 71 std::unique_ptr<views::Link> discovery_state_;
69 std::unique_ptr<MockTableViewObserver> mock_table_view_observer_; 72 std::unique_ptr<MockTableViewObserver> mock_table_view_observer_;
70 std::unique_ptr<ChooserContentView> chooser_content_view_; 73 std::unique_ptr<ChooserContentView> chooser_content_view_;
71 MockChooserController* mock_chooser_controller_; 74 MockChooserController* mock_chooser_controller_;
72 views::TableView* table_view_; 75 views::TableView* table_view_;
73 ui::TableModel* table_model_; 76 ui::TableModel* table_model_;
74 views::Throbber* throbber_; 77 views::Throbber* throbber_;
78 views::Link* turn_adapter_off_help_;
75 std::unique_ptr<views::StyledLabel> styled_label_; 79 std::unique_ptr<views::StyledLabel> styled_label_;
76 80
77 private: 81 private:
78 DISALLOW_COPY_AND_ASSIGN(ChooserContentViewTest); 82 DISALLOW_COPY_AND_ASSIGN(ChooserContentViewTest);
79 }; 83 };
80 84
81 TEST_F(ChooserContentViewTest, InitialState) { 85 TEST_F(ChooserContentViewTest, InitialState) {
82 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0); 86 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0);
83 87
84 EXPECT_TRUE(table_view_->visible()); 88 EXPECT_TRUE(table_view_->visible());
85 // Since "No devices found." needs to be displayed on the |table_view_|, 89 // Since "No devices found." needs to be displayed on the |table_view_|,
86 // the number of rows is 1. 90 // the number of rows is 1.
87 EXPECT_EQ(1, table_view_->RowCount()); 91 EXPECT_EQ(1, table_view_->RowCount());
88 EXPECT_EQ( 92 EXPECT_EQ(
89 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 93 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
90 table_model_->GetText(0, 0)); 94 table_model_->GetText(0, 0));
91 // |table_view_| should be disabled since there is no option shown. 95 // |table_view_| should be disabled since there is no option shown.
92 EXPECT_FALSE(table_view_->enabled()); 96 EXPECT_FALSE(table_view_->enabled());
93 // No option selected. 97 // No option selected.
94 EXPECT_EQ(0, table_view_->SelectedRowCount()); 98 EXPECT_EQ(0, table_view_->SelectedRowCount());
95 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 99 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
96 EXPECT_FALSE(throbber_->visible()); 100 EXPECT_FALSE(throbber_->visible());
101 EXPECT_FALSE(turn_adapter_off_help_->visible());
97 EXPECT_TRUE(discovery_state_->text().empty()); 102 EXPECT_TRUE(discovery_state_->text().empty());
98 } 103 }
99 104
100 TEST_F(ChooserContentViewTest, AddOption) { 105 TEST_F(ChooserContentViewTest, AddOption) {
101 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0); 106 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0);
102 107
103 mock_chooser_controller_->OptionAdded( 108 mock_chooser_controller_->OptionAdded(
104 base::ASCIIToUTF16("a"), 109 base::ASCIIToUTF16("a"),
105 MockChooserController::kNoSignalStrengthLevelImage, 110 MockChooserController::kNoSignalStrengthLevelImage,
106 MockChooserController::ConnectedPairedStatus::CONNECTED | 111 MockChooserController::ConnectedPairedStatus::CONNECTED |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 EXPECT_EQ(1, table_view_->RowCount()); 486 EXPECT_EQ(1, table_view_->RowCount());
482 EXPECT_EQ( 487 EXPECT_EQ(
483 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 488 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
484 table_model_->GetText(0, 0)); 489 table_model_->GetText(0, 0));
485 // |table_view_| should be disabled since there is no option shown. 490 // |table_view_| should be disabled since there is no option shown.
486 EXPECT_FALSE(table_view_->enabled()); 491 EXPECT_FALSE(table_view_->enabled());
487 // No option selected. 492 // No option selected.
488 EXPECT_EQ(0, table_view_->SelectedRowCount()); 493 EXPECT_EQ(0, table_view_->SelectedRowCount());
489 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 494 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
490 EXPECT_FALSE(throbber_->visible()); 495 EXPECT_FALSE(throbber_->visible());
496 EXPECT_FALSE(turn_adapter_off_help_->visible());
491 EXPECT_TRUE(discovery_state_->enabled()); 497 EXPECT_TRUE(discovery_state_->enabled());
492 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN), 498 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN),
493 discovery_state_->text()); 499 discovery_state_->text());
494 500
495 mock_chooser_controller_->OptionAdded( 501 mock_chooser_controller_->OptionAdded(
496 base::ASCIIToUTF16("a"), 502 base::ASCIIToUTF16("a"),
497 MockChooserController::kNoSignalStrengthLevelImage, 503 MockChooserController::kNoSignalStrengthLevelImage,
498 MockChooserController::ConnectedPairedStatus::CONNECTED | 504 MockChooserController::ConnectedPairedStatus::CONNECTED |
499 MockChooserController::ConnectedPairedStatus::PAIRED); 505 MockChooserController::ConnectedPairedStatus::PAIRED);
500 mock_chooser_controller_->OptionAdded( 506 mock_chooser_controller_->OptionAdded(
501 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, 507 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
502 MockChooserController::ConnectedPairedStatus::NONE); 508 MockChooserController::ConnectedPairedStatus::NONE);
503 mock_chooser_controller_->OptionAdded( 509 mock_chooser_controller_->OptionAdded(
504 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, 510 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
505 MockChooserController::ConnectedPairedStatus::NONE); 511 MockChooserController::ConnectedPairedStatus::NONE);
506 512
507 table_view_->Select(1); 513 table_view_->Select(1);
508 514
509 mock_chooser_controller_->OnAdapterPresenceChanged( 515 mock_chooser_controller_->OnAdapterPresenceChanged(
510 content::BluetoothChooser::AdapterPresence::POWERED_OFF); 516 content::BluetoothChooser::AdapterPresence::POWERED_OFF);
511 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); 517 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions());
512 EXPECT_TRUE(table_view_->visible()); 518 EXPECT_FALSE(table_view_->visible());
513 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|,
514 // the number of rows is 1.
515 EXPECT_EQ(1, table_view_->RowCount());
516 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF),
517 table_model_->GetText(0, 0));
518 // |table_view_| should be disabled since there is no option shown.
519 EXPECT_FALSE(table_view_->enabled());
520 // No option selected.
521 EXPECT_EQ(0, table_view_->SelectedRowCount());
522 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
523 EXPECT_FALSE(throbber_->visible()); 519 EXPECT_FALSE(throbber_->visible());
520 EXPECT_TRUE(turn_adapter_off_help_->visible());
521 EXPECT_EQ(
522 l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_TURN_ADAPTER_OFF),
523 turn_adapter_off_help_->text());
524 EXPECT_FALSE(discovery_state_->enabled()); 524 EXPECT_FALSE(discovery_state_->enabled());
525 EXPECT_TRUE(discovery_state_->text().empty()); 525 EXPECT_TRUE(discovery_state_->text().empty());
526 526
527 mock_chooser_controller_->OnAdapterPresenceChanged( 527 mock_chooser_controller_->OnAdapterPresenceChanged(
528 content::BluetoothChooser::AdapterPresence::POWERED_ON); 528 content::BluetoothChooser::AdapterPresence::POWERED_ON);
529 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); 529 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions());
530 EXPECT_TRUE(table_view_->visible()); 530 EXPECT_TRUE(table_view_->visible());
531 EXPECT_EQ(1, table_view_->RowCount()); 531 EXPECT_EQ(1, table_view_->RowCount());
532 EXPECT_EQ( 532 EXPECT_EQ(
533 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 533 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
534 table_model_->GetText(0, 0)); 534 table_model_->GetText(0, 0));
535 EXPECT_FALSE(table_view_->enabled()); 535 EXPECT_FALSE(table_view_->enabled());
536 EXPECT_EQ(0, table_view_->SelectedRowCount()); 536 EXPECT_EQ(0, table_view_->SelectedRowCount());
537 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 537 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
538 EXPECT_FALSE(throbber_->visible()); 538 EXPECT_FALSE(throbber_->visible());
539 EXPECT_FALSE(turn_adapter_off_help_->visible());
539 EXPECT_TRUE(discovery_state_->enabled()); 540 EXPECT_TRUE(discovery_state_->enabled());
540 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN), 541 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN),
541 discovery_state_->text()); 542 discovery_state_->text());
542 } 543 }
543 544
544 TEST_F(ChooserContentViewTest, DiscoveringAndNoOptionAddedAndIdle) { 545 TEST_F(ChooserContentViewTest, DiscoveringAndNoOptionAddedAndIdle) {
545 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(2); 546 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(2);
546 547
547 mock_chooser_controller_->OptionAdded( 548 mock_chooser_controller_->OptionAdded(
548 base::ASCIIToUTF16("a"), 549 base::ASCIIToUTF16("a"),
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 EXPECT_TRUE(table_view_->enabled()); 635 EXPECT_TRUE(table_view_->enabled());
635 EXPECT_EQ(1, table_view_->SelectedRowCount()); 636 EXPECT_EQ(1, table_view_->SelectedRowCount());
636 EXPECT_EQ(0, table_view_->FirstSelectedRow()); 637 EXPECT_EQ(0, table_view_->FirstSelectedRow());
637 EXPECT_FALSE(throbber_->visible()); 638 EXPECT_FALSE(throbber_->visible());
638 // |discovery_state_| is enabled and shows a link. 639 // |discovery_state_| is enabled and shows a link.
639 EXPECT_TRUE(discovery_state_->enabled()); 640 EXPECT_TRUE(discovery_state_->enabled());
640 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN), 641 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN),
641 discovery_state_->text()); 642 discovery_state_->text());
642 } 643 }
643 644
645 TEST_F(ChooserContentViewTest, ClickAdapterOffHelpLink) {
646 EXPECT_CALL(*mock_chooser_controller_, OpenAdapterOffHelpUrl()).Times(1);
647 chooser_content_view_->LinkClicked(turn_adapter_off_help_, 0);
648 }
649
644 TEST_F(ChooserContentViewTest, ClickRescanLink) { 650 TEST_F(ChooserContentViewTest, ClickRescanLink) {
645 EXPECT_CALL(*mock_chooser_controller_, RefreshOptions()).Times(1); 651 EXPECT_CALL(*mock_chooser_controller_, RefreshOptions()).Times(1);
646 chooser_content_view_->LinkClicked(nullptr, 0); 652 chooser_content_view_->LinkClicked(discovery_state_.get(), 0);
647 } 653 }
648 654
649 TEST_F(ChooserContentViewTest, ClickStyledLabelLink) { 655 TEST_F(ChooserContentViewTest, ClickStyledLabelLink) {
650 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1); 656 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1);
651 styled_label_->LinkClicked(nullptr, 0); 657 styled_label_->LinkClicked(nullptr, 0);
652 } 658 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/chooser_content_view.cc ('k') | chrome/common/url_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698