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

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: rebase 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 unified diff | Download patch
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 adapter_off_help_ = chooser_content_view_->adapter_off_help_for_test();
59 ASSERT_TRUE(adapter_off_help_);
58 discovery_state_.reset(chooser_content_view_->CreateExtraView()); 60 discovery_state_.reset(chooser_content_view_->CreateExtraView());
59 ASSERT_TRUE(discovery_state_); 61 ASSERT_TRUE(discovery_state_);
60 styled_label_.reset(chooser_content_view_->CreateFootnoteView()); 62 styled_label_.reset(chooser_content_view_->CreateFootnoteView());
61 ASSERT_TRUE(styled_label_); 63 ASSERT_TRUE(styled_label_);
62 } 64 }
63 65
64 protected: 66 protected:
65 // |discovery_state_| needs to be valid when |chooser_content_view_| is 67 // |discovery_state_| needs to be valid when |chooser_content_view_| is
66 // released, since ChooserContentView's destructor needs to access it. 68 // released, since ChooserContentView's destructor needs to access it.
67 // So it is declared before |chooser_content_view_|. 69 // So it is declared before |chooser_content_view_|.
68 std::unique_ptr<views::Link> discovery_state_; 70 std::unique_ptr<views::Link> discovery_state_;
69 std::unique_ptr<MockTableViewObserver> mock_table_view_observer_; 71 std::unique_ptr<MockTableViewObserver> mock_table_view_observer_;
70 std::unique_ptr<ChooserContentView> chooser_content_view_; 72 std::unique_ptr<ChooserContentView> chooser_content_view_;
71 MockChooserController* mock_chooser_controller_; 73 MockChooserController* mock_chooser_controller_;
72 views::TableView* table_view_; 74 views::TableView* table_view_;
73 ui::TableModel* table_model_; 75 ui::TableModel* table_model_;
74 views::Throbber* throbber_; 76 views::Throbber* throbber_;
77 views::Link* adapter_off_help_;
75 std::unique_ptr<views::StyledLabel> styled_label_; 78 std::unique_ptr<views::StyledLabel> styled_label_;
76 79
77 private: 80 private:
78 DISALLOW_COPY_AND_ASSIGN(ChooserContentViewTest); 81 DISALLOW_COPY_AND_ASSIGN(ChooserContentViewTest);
79 }; 82 };
80 83
81 TEST_F(ChooserContentViewTest, InitialState) { 84 TEST_F(ChooserContentViewTest, InitialState) {
82 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0); 85 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0);
83 86
84 EXPECT_TRUE(table_view_->visible()); 87 EXPECT_TRUE(table_view_->visible());
85 // Since "No devices found." needs to be displayed on the |table_view_|, 88 // Since "No devices found." needs to be displayed on the |table_view_|,
86 // the number of rows is 1. 89 // the number of rows is 1.
87 EXPECT_EQ(1, table_view_->RowCount()); 90 EXPECT_EQ(1, table_view_->RowCount());
88 EXPECT_EQ( 91 EXPECT_EQ(
89 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 92 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
90 table_model_->GetText(0, 0)); 93 table_model_->GetText(0, 0));
91 // |table_view_| should be disabled since there is no option shown. 94 // |table_view_| should be disabled since there is no option shown.
92 EXPECT_FALSE(table_view_->enabled()); 95 EXPECT_FALSE(table_view_->enabled());
93 // No option selected. 96 // No option selected.
94 EXPECT_EQ(0, table_view_->SelectedRowCount()); 97 EXPECT_EQ(0, table_view_->SelectedRowCount());
95 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 98 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
96 EXPECT_FALSE(throbber_->visible()); 99 EXPECT_FALSE(throbber_->visible());
100 EXPECT_FALSE(adapter_off_help_->visible());
97 EXPECT_TRUE(discovery_state_->text().empty()); 101 EXPECT_TRUE(discovery_state_->text().empty());
98 } 102 }
99 103
100 TEST_F(ChooserContentViewTest, AddOption) { 104 TEST_F(ChooserContentViewTest, AddOption) {
101 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0); 105 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0);
102 106
103 mock_chooser_controller_->OptionAdded( 107 mock_chooser_controller_->OptionAdded(
104 base::ASCIIToUTF16("a"), 108 base::ASCIIToUTF16("a"),
105 MockChooserController::kNoSignalStrengthLevelImage, 109 MockChooserController::kNoSignalStrengthLevelImage,
106 MockChooserController::ConnectedPairedStatus::CONNECTED | 110 MockChooserController::ConnectedPairedStatus::CONNECTED |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 EXPECT_EQ(1, table_view_->RowCount()); 485 EXPECT_EQ(1, table_view_->RowCount());
482 EXPECT_EQ( 486 EXPECT_EQ(
483 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 487 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
484 table_model_->GetText(0, 0)); 488 table_model_->GetText(0, 0));
485 // |table_view_| should be disabled since there is no option shown. 489 // |table_view_| should be disabled since there is no option shown.
486 EXPECT_FALSE(table_view_->enabled()); 490 EXPECT_FALSE(table_view_->enabled());
487 // No option selected. 491 // No option selected.
488 EXPECT_EQ(0, table_view_->SelectedRowCount()); 492 EXPECT_EQ(0, table_view_->SelectedRowCount());
489 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 493 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
490 EXPECT_FALSE(throbber_->visible()); 494 EXPECT_FALSE(throbber_->visible());
495 EXPECT_FALSE(adapter_off_help_->visible());
491 EXPECT_TRUE(discovery_state_->enabled()); 496 EXPECT_TRUE(discovery_state_->enabled());
492 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN), 497 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN),
493 discovery_state_->text()); 498 discovery_state_->text());
494 499
495 mock_chooser_controller_->OptionAdded( 500 mock_chooser_controller_->OptionAdded(
496 base::ASCIIToUTF16("a"), 501 base::ASCIIToUTF16("a"),
497 MockChooserController::kNoSignalStrengthLevelImage, 502 MockChooserController::kNoSignalStrengthLevelImage,
498 MockChooserController::ConnectedPairedStatus::CONNECTED | 503 MockChooserController::ConnectedPairedStatus::CONNECTED |
499 MockChooserController::ConnectedPairedStatus::PAIRED); 504 MockChooserController::ConnectedPairedStatus::PAIRED);
500 mock_chooser_controller_->OptionAdded( 505 mock_chooser_controller_->OptionAdded(
501 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, 506 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
502 MockChooserController::ConnectedPairedStatus::NONE); 507 MockChooserController::ConnectedPairedStatus::NONE);
503 mock_chooser_controller_->OptionAdded( 508 mock_chooser_controller_->OptionAdded(
504 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, 509 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
505 MockChooserController::ConnectedPairedStatus::NONE); 510 MockChooserController::ConnectedPairedStatus::NONE);
506 511
507 table_view_->Select(1); 512 table_view_->Select(1);
508 513
509 mock_chooser_controller_->OnAdapterPresenceChanged( 514 mock_chooser_controller_->OnAdapterPresenceChanged(
510 content::BluetoothChooser::AdapterPresence::POWERED_OFF); 515 content::BluetoothChooser::AdapterPresence::POWERED_OFF);
511 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); 516 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions());
512 EXPECT_TRUE(table_view_->visible()); 517 EXPECT_FALSE(table_view_->visible());
513 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|, 518 EXPECT_FALSE(throbber_->visible());
514 // the number of rows is 1. 519 EXPECT_TRUE(adapter_off_help_->visible());
515 EXPECT_EQ(1, table_view_->RowCount());
516 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF), 520 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF),
517 table_model_->GetText(0, 0)); 521 adapter_off_help_->text());
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());
524 EXPECT_FALSE(discovery_state_->enabled()); 522 EXPECT_FALSE(discovery_state_->enabled());
525 EXPECT_TRUE(discovery_state_->text().empty()); 523 EXPECT_TRUE(discovery_state_->text().empty());
526 524
527 mock_chooser_controller_->OnAdapterPresenceChanged( 525 mock_chooser_controller_->OnAdapterPresenceChanged(
528 content::BluetoothChooser::AdapterPresence::POWERED_ON); 526 content::BluetoothChooser::AdapterPresence::POWERED_ON);
529 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); 527 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions());
530 EXPECT_TRUE(table_view_->visible()); 528 EXPECT_TRUE(table_view_->visible());
531 EXPECT_EQ(1, table_view_->RowCount()); 529 EXPECT_EQ(1, table_view_->RowCount());
532 EXPECT_EQ( 530 EXPECT_EQ(
533 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 531 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
534 table_model_->GetText(0, 0)); 532 table_model_->GetText(0, 0));
535 EXPECT_FALSE(table_view_->enabled()); 533 EXPECT_FALSE(table_view_->enabled());
536 EXPECT_EQ(0, table_view_->SelectedRowCount()); 534 EXPECT_EQ(0, table_view_->SelectedRowCount());
537 EXPECT_EQ(-1, table_view_->FirstSelectedRow()); 535 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
538 EXPECT_FALSE(throbber_->visible()); 536 EXPECT_FALSE(throbber_->visible());
537 EXPECT_FALSE(adapter_off_help_->visible());
539 EXPECT_TRUE(discovery_state_->enabled()); 538 EXPECT_TRUE(discovery_state_->enabled());
540 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN), 539 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN),
541 discovery_state_->text()); 540 discovery_state_->text());
542 } 541 }
543 542
544 TEST_F(ChooserContentViewTest, DiscoveringAndNoOptionAddedAndIdle) { 543 TEST_F(ChooserContentViewTest, DiscoveringAndNoOptionAddedAndIdle) {
545 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(2); 544 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(2);
546 545
547 mock_chooser_controller_->OptionAdded( 546 mock_chooser_controller_->OptionAdded(
548 base::ASCIIToUTF16("a"), 547 base::ASCIIToUTF16("a"),
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 EXPECT_TRUE(table_view_->enabled()); 633 EXPECT_TRUE(table_view_->enabled());
635 EXPECT_EQ(1, table_view_->SelectedRowCount()); 634 EXPECT_EQ(1, table_view_->SelectedRowCount());
636 EXPECT_EQ(0, table_view_->FirstSelectedRow()); 635 EXPECT_EQ(0, table_view_->FirstSelectedRow());
637 EXPECT_FALSE(throbber_->visible()); 636 EXPECT_FALSE(throbber_->visible());
638 // |discovery_state_| is enabled and shows a link. 637 // |discovery_state_| is enabled and shows a link.
639 EXPECT_TRUE(discovery_state_->enabled()); 638 EXPECT_TRUE(discovery_state_->enabled());
640 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN), 639 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN),
641 discovery_state_->text()); 640 discovery_state_->text());
642 } 641 }
643 642
643 TEST_F(ChooserContentViewTest, ClickAdapterOffHelpLink) {
644 EXPECT_CALL(*mock_chooser_controller_, OpenAdapterOffHelpUrl()).Times(1);
645 chooser_content_view_->LinkClicked(adapter_off_help_, 0);
646 }
647
644 TEST_F(ChooserContentViewTest, ClickRescanLink) { 648 TEST_F(ChooserContentViewTest, ClickRescanLink) {
645 EXPECT_CALL(*mock_chooser_controller_, RefreshOptions()).Times(1); 649 EXPECT_CALL(*mock_chooser_controller_, RefreshOptions()).Times(1);
646 chooser_content_view_->LinkClicked(nullptr, 0); 650 chooser_content_view_->LinkClicked(discovery_state_.get(), 0);
647 } 651 }
648 652
649 TEST_F(ChooserContentViewTest, ClickStyledLabelLink) { 653 TEST_F(ChooserContentViewTest, ClickStyledLabelLink) {
650 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1); 654 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1);
651 styled_label_->LinkClicked(nullptr, 0); 655 styled_label_->LinkClicked(nullptr, 0);
652 } 656 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698