// Copyright 2010 Google Inc. All Rights Reserved


#ifndef TALK_BASE_MACWINDOWPICKER_H_
#define TALK_BASE_MACWINDOWPICKER_H_

#include "talk/base/windowpicker.h"

namespace talk_base {

class MacWindowPicker : public WindowPicker {
 public:
  MacWindowPicker();
  ~MacWindowPicker();
  virtual bool Init();
  virtual bool IsVisible(WindowId id);
  virtual bool MoveToFront(WindowId id);
  virtual bool GetWindowList(WindowDescriptionList* descriptions);

 private:
  void* lib_handle_;
  void* get_window_list_;
  void* get_window_list_desc_;
};

}  // namespace talk_base

#endif  // TALK_BASE_MACWINDOWPICKER_H_
