1 // Copyright (c) 2012 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.
5 #include "ui/base/x/work_area_watcher_x.h"
7 #include "base/memory/singleton.h"
8 #include "ui/base/work_area_watcher_observer.h"
9 #include "ui/base/x/root_window_property_watcher_x.h"
10 #include "ui/base/x/x11_util.h"
14 static const char* const kNetWorkArea = "_NET_WORKAREA";
17 WorkAreaWatcherX* WorkAreaWatcherX::GetInstance() {
18 return Singleton<WorkAreaWatcherX>::get();
22 void WorkAreaWatcherX::AddObserver(WorkAreaWatcherObserver* observer) {
23 // Ensure that RootWindowPropertyWatcherX exists.
24 internal::RootWindowPropertyWatcherX::GetInstance();
25 GetInstance()->observers_.AddObserver(observer);
29 void WorkAreaWatcherX::RemoveObserver(WorkAreaWatcherObserver* observer) {
30 GetInstance()->observers_.RemoveObserver(observer);
34 void WorkAreaWatcherX::Notify() {
35 GetInstance()->NotifyWorkAreaChanged();
39 Atom WorkAreaWatcherX::GetPropertyAtom() {
40 return GetAtom(kNetWorkArea);
43 WorkAreaWatcherX::WorkAreaWatcherX() {
46 WorkAreaWatcherX::~WorkAreaWatcherX() {
49 void WorkAreaWatcherX::NotifyWorkAreaChanged() {
50 FOR_EACH_OBSERVER(WorkAreaWatcherObserver, observers_, WorkAreaChanged());