1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ash/system/tray/media_security/multi_profile_media_tray_item.h"
6
7#include "ash/ash_view_ids.h"
8#include "ash/shell.h"
9#include "ash/system/status_area_widget.h"
10#include "ash/system/tray/system_tray.h"
11#include "ash/system/tray/system_tray_bubble.h"
12#include "ash/system/tray/tray_item_view.h"
13#include "ash/test/ash_test_base.h"
14#include "ash/test/test_session_state_delegate.h"
15#include "ash/test/test_shell_delegate.h"
16#include "ui/views/bubble/tray_bubble_view.h"
17
18namespace ash {
19
20typedef test::AshTestBase MultiProfileMediaTrayItemTest;
21
22TEST_F(MultiProfileMediaTrayItemTest, NotifyMediaCaptureChange) {
23  TrayItemView::DisableAnimationsForTest();
24  test::TestShellDelegate* shell_delegate =
25      static_cast<test::TestShellDelegate*>(Shell::GetInstance()->delegate());
26  test::TestSessionStateDelegate* session_state_delegate =
27      static_cast<test::TestSessionStateDelegate*>(
28          Shell::GetInstance()->session_state_delegate());
29  session_state_delegate->set_logged_in_users(2);
30
31  SystemTray* system_tray = Shell::GetInstance()->GetPrimarySystemTray();
32  system_tray->ShowDefaultView(BUBBLE_CREATE_NEW);
33  views::View* in_user_view =
34      system_tray->GetSystemBubble()->bubble_view()->GetViewByID(
35          VIEW_ID_USER_VIEW_MEDIA_INDICATOR);
36
37  StatusAreaWidget* widget = system_tray->status_area_widget();
38  EXPECT_TRUE(widget->GetRootView()->visible());
39  views::View* tray_view =
40      widget->GetRootView()->GetViewByID(VIEW_ID_MEDIA_TRAY_VIEW);
41
42  EXPECT_FALSE(tray_view->visible());
43  EXPECT_FALSE(in_user_view->visible());
44
45  shell_delegate->SetMediaCaptureState(MEDIA_CAPTURE_AUDIO);
46  EXPECT_TRUE(tray_view->visible());
47  EXPECT_TRUE(in_user_view->visible());
48
49  shell_delegate->SetMediaCaptureState(MEDIA_CAPTURE_AUDIO_VIDEO);
50  EXPECT_TRUE(tray_view->visible());
51  EXPECT_TRUE(in_user_view->visible());
52
53  shell_delegate->SetMediaCaptureState(MEDIA_CAPTURE_NONE);
54  EXPECT_FALSE(tray_view->visible());
55  EXPECT_FALSE(in_user_view->visible());
56}
57
58}  // namespace ash
59