Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / ui / base / x / work_area_watcher_x.cc
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.
4
5 #include "ui/base/x/work_area_watcher_x.h"
6
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"
11
12 namespace ui {
13
14 static const char* const kNetWorkArea = "_NET_WORKAREA";
15
16 // static
17 WorkAreaWatcherX* WorkAreaWatcherX::GetInstance() {
18   return Singleton<WorkAreaWatcherX>::get();
19 }
20
21 // static
22 void WorkAreaWatcherX::AddObserver(WorkAreaWatcherObserver* observer) {
23   // Ensure that RootWindowPropertyWatcherX exists.
24   internal::RootWindowPropertyWatcherX::GetInstance();
25   GetInstance()->observers_.AddObserver(observer);
26 }
27
28 // static
29 void WorkAreaWatcherX::RemoveObserver(WorkAreaWatcherObserver* observer) {
30   GetInstance()->observers_.RemoveObserver(observer);
31 }
32
33 // static
34 void WorkAreaWatcherX::Notify() {
35   GetInstance()->NotifyWorkAreaChanged();
36 }
37
38 // static
39 Atom WorkAreaWatcherX::GetPropertyAtom() {
40   return GetAtom(kNetWorkArea);
41 }
42
43 WorkAreaWatcherX::WorkAreaWatcherX() {
44 }
45
46 WorkAreaWatcherX::~WorkAreaWatcherX() {
47 }
48
49 void WorkAreaWatcherX::NotifyWorkAreaChanged() {
50   FOR_EACH_OBSERVER(WorkAreaWatcherObserver, observers_, WorkAreaChanged());
51 }
52
53 }  // namespace ui