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() {
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,
MediaToolbarButtonController* controller,
service_manager::Connector* connector)
......
......@@ -15,6 +15,7 @@ class Connector;
} // namespace service_manager
class MediaDialogViewObserver;
class MediaNotificationContainerImpl;
class MediaNotificationListView;
class MediaToolbarButtonController;
......@@ -49,6 +50,9 @@ class MediaDialogView : public views::BubbleDialogDelegateView,
void OnMediaSessionMetadataChanged();
const std::map<const std::string, MediaNotificationContainerImpl*>&
GetNotificationsForTesting() const;
private:
explicit MediaDialogView(views::View* anchor_view,
MediaToolbarButtonController* controller,
......
......@@ -10,11 +10,13 @@
#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/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/toolbar/toolbar_view.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/interactive_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/test/media_start_stop_observer.h"
#include "media/base/media_switches.h"
......@@ -116,24 +118,21 @@ class MediaToolbarButtonWatcher : public MediaToolbarButtonObserver,
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) {
return ViewContainsText(MediaDialogView::GetDialogViewForTesting(), text);
}
// Recursively tries to find a views::Label containing |text| within |view|
// and its children.
bool ViewContainsText(const views::View* view, const base::string16& text) {
if (view->GetClassName() == views::Label::kViewClassName) {
const views::Label* label = static_cast<const views::Label*>(view);
if (label->GetText().find(text) != std::string::npos)
return true;
}
for (const views::View* child : view->children()) {
if (ViewContainsText(child, text))
for (const auto notification_pair :
MediaDialogView::GetDialogViewForTesting()
->GetNotificationsForTesting()) {
const media_message_center::MediaNotificationView* view =
notification_pair.second->view_for_testing();
if (view->title_label_for_testing()->GetText().find(text) !=
std::string::npos ||
view->artist_label_for_testing()->GetText().find(text) !=
std::string::npos) {
return true;
}
}
return false;
}
......
......@@ -49,6 +49,10 @@ class MediaNotificationContainerImpl
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
media_message_center::MediaNotificationView* view_for_testing() {
return view_.get();
}
private:
class DismissButton;
......
......@@ -25,6 +25,11 @@ class MediaNotificationListView : public views::ScrollView {
void HideNotification(const std::string& id);
bool empty() { return notifications_.empty(); }
const std::map<const std::string, MediaNotificationContainerImpl*>&
notifications_for_testing() const {
return notifications_;
}
private:
std::map<const std::string, MediaNotificationContainerImpl*> notifications_;
......
......@@ -90,6 +90,10 @@ class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaNotificationView
const std::set<media_session::mojom::MediaSessionAction>& actions);
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:
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