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

Unified Diff: ash/system/tray/media_security/multi_profile_media_tray_item.cc

Issue 253183003: Media indicator for background recording task (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix win build Created 6 years, 8 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: ash/system/tray/media_security/multi_profile_media_tray_item.cc
diff --git a/ash/system/tray/media_security/multi_profile_media_tray_item.cc b/ash/system/tray/media_security/multi_profile_media_tray_item.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7826fb7ec78506d586a5c50b994b84ef353b4fa0
--- /dev/null
+++ b/ash/system/tray/media_security/multi_profile_media_tray_item.cc
@@ -0,0 +1,85 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/system/tray/media_security/multi_profile_media_tray_item.h"
+
+#include "ash/ash_view_ids.h"
+#include "ash/media_delegate.h"
+#include "ash/session/session_state_delegate.h"
+#include "ash/shell.h"
+#include "ash/system/tray/media_security/media_capture_observer.h"
+#include "ash/system/tray/system_tray_notifier.h"
+#include "ash/system/tray/tray_item_view.h"
+#include "grit/ash_resources.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/views/controls/image_view.h"
+#include "ui/views/layout/fill_layout.h"
+
+namespace ash {
+namespace tray {
+
+class MultiProfileMediaTrayView : public TrayItemView,
+ public MediaCaptureObserver {
+ public:
+ explicit MultiProfileMediaTrayView(SystemTrayItem* system_tray_item)
+ : TrayItemView(system_tray_item) {
+ SetLayoutManager(new views::FillLayout);
+ views::ImageView* icon = new views::ImageView;
+ ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
+ icon->SetImage(
+ bundle.GetImageNamed(IDR_AURA_UBER_TRAY_RECORDING).ToImageSkia());
+ AddChildView(icon);
+ OnMediaCaptureChanged();
+ Shell::GetInstance()->system_tray_notifier()->AddMediaCaptureObserver(this);
+ set_id(VIEW_ID_MEDIA_TRAY_VIEW);
+ }
+
+ virtual ~MultiProfileMediaTrayView() {
+ Shell::GetInstance()->system_tray_notifier()->RemoveMediaCaptureObserver(
+ this);
+ }
+
+ // MediaCaptureObserver:
+ virtual void OnMediaCaptureChanged() OVERRIDE {
+ MediaDelegate* media_delegate = Shell::GetInstance()->media_delegate();
+ SessionStateDelegate* session_state_delegate =
+ Shell::GetInstance()->session_state_delegate();
+ // The user at 0 is the current desktop user.
+ for (MultiProfileIndex index = 1;
+ index < session_state_delegate->NumberOfLoggedInUsers();
+ ++index) {
+ content::BrowserContext* context =
+ session_state_delegate->GetBrowserContextByIndex(index);
+ if (media_delegate->GetMediaCaptureState(context) != MEDIA_CAPTURE_NONE) {
+ SetVisible(true);
+ return;
+ }
+ }
+ SetVisible(false);
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MultiProfileMediaTrayView);
+};
+
+} // namespace tray
+
+MultiProfileMediaTrayItem::MultiProfileMediaTrayItem(SystemTray* system_tray)
+ : SystemTrayItem(system_tray), tray_view_(NULL) {
+}
+
+MultiProfileMediaTrayItem::~MultiProfileMediaTrayItem() {
+}
+
+views::View* MultiProfileMediaTrayItem::CreateTrayView(
+ user::LoginStatus status) {
+ tray_view_ = new tray::MultiProfileMediaTrayView(this);
+ return tray_view_;
+}
+
+void MultiProfileMediaTrayItem::DestroyTrayView() {
+ tray_view_ = NULL;
+}
+
+} // namespace ash

Powered by Google App Engine
This is Rietveld 408576698