Commit d56f9fb5 authored by Tommy Steimel's avatar Tommy Steimel Committed by Commit Bot

GMC: Clean up DialogContainsText logic in MediaDialogViewBrowserTest

This CL updates the DialogContainsText logic in
MediaDialogViewBrowserTest to more explicitly depend on the structure
of the MediaNotificationView.

Bug: 1008905
Change-Id: Ia6350710dbf70b07dcaa9a9473ece3969f8942eb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1854663
Commit-Queue: Tommy Steimel <steimel@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#705223}
parent eb944ce4
...@@ -131,6 +131,11 @@ void MediaDialogView::OnMediaSessionMetadataChanged() { ...@@ -131,6 +131,11 @@ void MediaDialogView::OnMediaSessionMetadataChanged() {
observer.OnMediaSessionMetadataUpdated(); observer.OnMediaSessionMetadataUpdated();
} }
const std::map<const std::string, MediaNotificationContainerImpl*>&
MediaDialogView::GetNotificationsForTesting() const {
return active_sessions_view_->notifications_for_testing();
}
MediaDialogView::MediaDialogView(views::View* anchor_view, MediaDialogView::MediaDialogView(views::View* anchor_view,
MediaToolbarButtonController* controller, MediaToolbarButtonController* controller,
service_manager::Connector* connector) service_manager::Connector* connector)
......
...@@ -15,6 +15,7 @@ class Connector; ...@@ -15,6 +15,7 @@ class Connector;
} // namespace service_manager } // namespace service_manager
class MediaDialogViewObserver; class MediaDialogViewObserver;
class MediaNotificationContainerImpl;
class MediaNotificationListView; class MediaNotificationListView;
class MediaToolbarButtonController; class MediaToolbarButtonController;
...@@ -49,6 +50,9 @@ class MediaDialogView : public views::BubbleDialogDelegateView, ...@@ -49,6 +50,9 @@ class MediaDialogView : public views::BubbleDialogDelegateView,
void OnMediaSessionMetadataChanged(); void OnMediaSessionMetadataChanged();
const std::map<const std::string, MediaNotificationContainerImpl*>&
GetNotificationsForTesting() const;
private: private:
explicit MediaDialogView(views::View* anchor_view, explicit MediaDialogView(views::View* anchor_view,
MediaToolbarButtonController* controller, MediaToolbarButtonController* controller,
......
...@@ -10,11 +10,13 @@ ...@@ -10,11 +10,13 @@
#include "chrome/browser/ui/global_media_controls/media_toolbar_button_observer.h" #include "chrome/browser/ui/global_media_controls/media_toolbar_button_observer.h"
#include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/global_media_controls/media_dialog_view_observer.h" #include "chrome/browser/ui/views/global_media_controls/media_dialog_view_observer.h"
#include "chrome/browser/ui/views/global_media_controls/media_notification_container_impl.h"
#include "chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h" #include "chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h" #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
#include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/interactive_test_utils.h" #include "chrome/test/base/interactive_test_utils.h"
#include "chrome/test/base/ui_test_utils.h" #include "chrome/test/base/ui_test_utils.h"
#include "components/media_message_center/media_notification_view.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/test/media_start_stop_observer.h" #include "content/public/test/media_start_stop_observer.h"
#include "media/base/media_switches.h" #include "media/base/media_switches.h"
...@@ -116,24 +118,21 @@ class MediaToolbarButtonWatcher : public MediaToolbarButtonObserver, ...@@ -116,24 +118,21 @@ class MediaToolbarButtonWatcher : public MediaToolbarButtonObserver,
run_loop_->Run(); run_loop_->Run();
} }
// Checks the title and artist of each notification in the dialog to see if
// |text| is contained anywhere in the dialog.
bool DialogContainsText(const base::string16& text) { bool DialogContainsText(const base::string16& text) {
return ViewContainsText(MediaDialogView::GetDialogViewForTesting(), text); for (const auto notification_pair :
} MediaDialogView::GetDialogViewForTesting()
->GetNotificationsForTesting()) {
// Recursively tries to find a views::Label containing |text| within |view| const media_message_center::MediaNotificationView* view =
// and its children. notification_pair.second->view_for_testing();
bool ViewContainsText(const views::View* view, const base::string16& text) { if (view->title_label_for_testing()->GetText().find(text) !=
if (view->GetClassName() == views::Label::kViewClassName) { std::string::npos ||
const views::Label* label = static_cast<const views::Label*>(view); view->artist_label_for_testing()->GetText().find(text) !=
if (label->GetText().find(text) != std::string::npos) std::string::npos) {
return true;
}
for (const views::View* child : view->children()) {
if (ViewContainsText(child, text))
return true; return true;
}
} }
return false; return false;
} }
......
...@@ -49,6 +49,10 @@ class MediaNotificationContainerImpl ...@@ -49,6 +49,10 @@ class MediaNotificationContainerImpl
// views::ButtonListener: // views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override; void ButtonPressed(views::Button* sender, const ui::Event& event) override;
media_message_center::MediaNotificationView* view_for_testing() {
return view_.get();
}
private: private:
class DismissButton; class DismissButton;
......
...@@ -25,6 +25,11 @@ class MediaNotificationListView : public views::ScrollView { ...@@ -25,6 +25,11 @@ class MediaNotificationListView : public views::ScrollView {
void HideNotification(const std::string& id); void HideNotification(const std::string& id);
bool empty() { return notifications_.empty(); } bool empty() { return notifications_.empty(); }
const std::map<const std::string, MediaNotificationContainerImpl*>&
notifications_for_testing() const {
return notifications_;
}
private: private:
std::map<const std::string, MediaNotificationContainerImpl*> notifications_; std::map<const std::string, MediaNotificationContainerImpl*> notifications_;
......
...@@ -90,6 +90,10 @@ class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaNotificationView ...@@ -90,6 +90,10 @@ class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaNotificationView
const std::set<media_session::mojom::MediaSessionAction>& actions); const std::set<media_session::mojom::MediaSessionAction>& actions);
void UpdateWithMediaArtwork(const gfx::ImageSkia& image); void UpdateWithMediaArtwork(const gfx::ImageSkia& image);
const views::Label* title_label_for_testing() const { return title_label_; }
const views::Label* artist_label_for_testing() const { return artist_label_; }
private: private:
friend class MediaNotificationViewTest; friend class MediaNotificationViewTest;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment