Home | History | Annotate | Download | only in x
      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