Index: ui/display/desktop_observer.cc |
diff --git a/ui/display/desktop_observer.cc b/ui/display/desktop_observer.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dbbdd95741d2f4f8064c8bfb8580071a6b39179e |
--- /dev/null |
+++ b/ui/display/desktop_observer.cc |
@@ -0,0 +1,38 @@ |
+// Copyright 2016 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 "ui/display/desktop_observer.h" |
+ |
+#include "base/lazy_instance.h" |
+#include "base/observer_list.h" |
+ |
+namespace display { |
+ |
+namespace desktop { |
+ |
+namespace { |
+ |
+base::LazyInstance<base::ObserverList<DesktopObserver>>::Leaky |
+ g_desktop_observer_list; |
+ |
+} // anonymous namespace |
+ |
+DesktopObserver::~DesktopObserver() {} |
+ |
+void AddObserver(DesktopObserver* observer) { |
+ g_desktop_observer_list.Get().AddObserver(observer); |
+} |
+ |
+void RemoveObserver(DesktopObserver* observer) { |
+ g_desktop_observer_list.Get().RemoveObserver(observer); |
+} |
+ |
+void OnWorkspaceChanged(const std::string& new_workspace) { |
+ FOR_EACH_OBSERVER(DesktopObserver, g_desktop_observer_list.Get(), |
+ OnWorkspaceChanged(new_workspace)); |
+} |
+ |
+} // namespace desktop |
+ |
+} // namespace display |