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 54