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

Unified Diff: chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc

Issue 2332693003: Show media router toolbar icon ephemerally for active local routes and issues (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc
diff --git a/chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc b/chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc
index 2659688af8eac7a3cefe52afee8943656836e8b1..670b32ef7a1d27eaaafefec0260d0905810ffff2 100644
--- a/chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc
+++ b/chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc
@@ -5,10 +5,14 @@
#include "base/bind.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/extensions/browser_action_test_util.h"
+#include "chrome/browser/media/router/media_router.h"
+#include "chrome/browser/media/router/media_router_ui_service.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h"
#include "chrome/browser/ui/toolbar/media_router_action.h"
+#include "chrome/browser/ui/toolbar/media_router_action_controller.h"
#include "chrome/browser/ui/toolbar/toolbar_action_view_delegate.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/toolbar/app_menu_button.h"
@@ -54,6 +58,22 @@ class MediaRouterUIBrowserTest : public InProcessBrowserTest {
toolbar_action_view_ = new ToolbarActionView(media_router_action_.get(),
browser_actions_container);
toolbar_action_view_widget_->SetContentsView(toolbar_action_view_);
+
+ action_controller_ =
+ MediaRouterUIService::Get(browser()->profile())->GetActionController();
+
+ issue_.reset(new Issue(
+ "title notification",
+ "message notification",
+ media_router::IssueAction(media_router::IssueAction::TYPE_DISMISS),
+ std::vector<media_router::IssueAction>(),
+ "route_id",
+ media_router::Issue::NOTIFICATION,
+ false,
+ -1));
+
+ routes_ = {MediaRoute("routeId1", MediaSource("sourceId"), "sinkId1",
+ "description", true, std::string(), true)};
}
void TearDownOnMainThread() override {
@@ -92,6 +112,11 @@ class MediaRouterUIBrowserTest : public InProcessBrowserTest {
media_router_action_->ExecuteAction(true);
}
+ bool ActionExists() {
+ return ToolbarActionsModel::Get(browser()->profile())->HasComponentAction(
+ ComponentToolbarActionsFactory::kMediaRouterActionId);
+ }
+
protected:
// Must be initialized after |InProcessBrowserTest::SetUpOnMainThread|.
std::unique_ptr<BrowserActionTestUtil> browser_action_test_util_;
@@ -103,6 +128,13 @@ class MediaRouterUIBrowserTest : public InProcessBrowserTest {
// Hosts the |toolbar_action_view_|.
views::Widget* toolbar_action_view_widget_;
+
+ std::unique_ptr<Issue> issue_;
+
+ // A vector of MediaRoutes that includes a local route.
+ std::vector<MediaRoute> routes_;
+
+ MediaRouterActionController* action_controller_;
};
IN_PROC_BROWSER_TEST_F(MediaRouterUIBrowserTest,
@@ -131,4 +163,42 @@ IN_PROC_BROWSER_TEST_F(MediaRouterUIBrowserTest,
OpenMediaRouterDialogAndWaitForNewWebContents();
}
+IN_PROC_BROWSER_TEST_F(MediaRouterUIBrowserTest,
+ EphemeralToolbarIcon) {
+ action_controller_->OnIssueUpdated(issue_.get());
+ EXPECT_TRUE(ActionExists());
+ action_controller_->OnIssueUpdated(nullptr);
+ EXPECT_FALSE(ActionExists());
+
+ action_controller_->OnRoutesUpdated(routes_, std::vector<MediaRoute::Id>());
+ EXPECT_TRUE(ActionExists());
+ action_controller_->OnRoutesUpdated(
+ std::vector<MediaRoute>(), std::vector<MediaRoute::Id>());
+ EXPECT_FALSE(ActionExists());
+
+ media_router_action_->SetAlwaysShowActionPref(true);
+ EXPECT_TRUE(ActionExists());
+ media_router_action_->SetAlwaysShowActionPref(false);
+ EXPECT_FALSE(ActionExists());
+}
+
+IN_PROC_BROWSER_TEST_F(MediaRouterUIBrowserTest,
+ EphemeralToolbarIconWithMultipleWindows) {
+ action_controller_->OnRoutesUpdated(routes_, std::vector<MediaRoute::Id>());
+ EXPECT_TRUE(ActionExists());
+
+ // Opening and closing a window shouldn't affect the state of the ephemeral
+ // icon. Creating and removing the icon with multiple windows open should also
+ // work.
+ Browser* browser2 = CreateBrowser(browser()->profile());
+ EXPECT_TRUE(ActionExists());
+ action_controller_->OnRoutesUpdated(
+ std::vector<MediaRoute>(), std::vector<MediaRoute::Id>());
+ EXPECT_FALSE(ActionExists());
+ action_controller_->OnRoutesUpdated(routes_, std::vector<MediaRoute::Id>());
+ EXPECT_TRUE(ActionExists());
+ browser2->window()->Close();
+ EXPECT_TRUE(ActionExists());
+}
+
} // namespace media_router

Powered by Google App Engine
This is Rietveld 408576698