| Index: ui/platform_window/x11/x11_window.h
 | 
| diff --git a/ui/platform_window/x11/x11_window.h b/ui/platform_window/x11/x11_window.h
 | 
| index eb759121260de89ee648883985f66232558e9c17..de14f96e8eb1026c467c30d95a5e47dea3222c90 100644
 | 
| --- a/ui/platform_window/x11/x11_window.h
 | 
| +++ b/ui/platform_window/x11/x11_window.h
 | 
| @@ -5,6 +5,10 @@
 | 
|  #ifndef UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_
 | 
|  #define UI_PLATFORM_WINDOW_X11_X11_WINDOW_H_
 | 
|  
 | 
| +#include <map>
 | 
| +
 | 
| +#include "base/callback.h"
 | 
| +#include "base/memory/ref_counted.h"
 | 
|  #include "ui/events/platform/platform_event_dispatcher.h"
 | 
|  #include "ui/gfx/geometry/rect.h"
 | 
|  #include "ui/gfx/x/x11_atom_cache.h"
 | 
| @@ -13,20 +17,45 @@
 | 
|  #include "ui/platform_window/x11/x11_window_export.h"
 | 
|  
 | 
|  typedef struct _XDisplay XDisplay;
 | 
| +typedef union _XEvent XEvent;
 | 
|  typedef unsigned long XID;
 | 
|  
 | 
|  namespace ui {
 | 
| +class X11Window;
 | 
| +typedef base::Callback<void(XID, X11Window*)> WindowStatusCallback;
 | 
| +
 | 
| +class X11_WINDOW_EXPORT X11WindowManager
 | 
| +    : public base::RefCounted<X11WindowManager> {
 | 
| + public:
 | 
| +  X11WindowManager();
 | 
| +
 | 
| +  scoped_ptr<X11Window> CreatePlatformWindow(PlatformWindowDelegate* delegate);
 | 
| +  X11Window* FindWindow(XID id);
 | 
| +
 | 
| + private:
 | 
| +  friend class base::RefCounted<X11WindowManager>;
 | 
| +
 | 
| +  virtual ~X11WindowManager();
 | 
| +
 | 
| +  void OnWindowCreate(XID id, X11Window* window);
 | 
| +  void OnWindowDestroy(XID id, X11Window* window);
 | 
| +
 | 
| +  std::map<XID, X11Window*> window_map_;
 | 
| +
 | 
| +  DISALLOW_COPY_AND_ASSIGN(X11WindowManager);
 | 
| +};
 | 
|  
 | 
|  class X11_WINDOW_EXPORT X11Window : public PlatformWindow,
 | 
|                                      public PlatformEventDispatcher {
 | 
|   public:
 | 
| -  explicit X11Window(PlatformWindowDelegate* delegate);
 | 
| +  explicit X11Window(PlatformWindowDelegate* delegate,
 | 
| +                     WindowStatusCallback on_create_callback,
 | 
| +                     WindowStatusCallback on_destroy_callback);
 | 
|    ~X11Window() override;
 | 
|  
 | 
| - private:
 | 
| -  void Destroy();
 | 
| +  void Create();
 | 
|  
 | 
| -  void ProcessXInput2Event(XEvent* xevent);
 | 
| +  void ProcessWindowEvent(XEvent* xev);
 | 
|  
 | 
|    // PlatformWindow:
 | 
|    void Show() override;
 | 
| @@ -43,12 +72,18 @@ class X11_WINDOW_EXPORT X11Window : public PlatformWindow,
 | 
|    void SetCursor(PlatformCursor cursor) override;
 | 
|    void MoveCursorTo(const gfx::Point& location) override;
 | 
|  
 | 
| + private:
 | 
| +  void Destroy();
 | 
| +
 | 
|    // PlatformEventDispatcher:
 | 
|    bool CanDispatchEvent(const PlatformEvent& event) override;
 | 
|    uint32_t DispatchEvent(const PlatformEvent& event) override;
 | 
|  
 | 
|    PlatformWindowDelegate* delegate_;
 | 
|  
 | 
| +  WindowStatusCallback on_create_callback_;
 | 
| +  WindowStatusCallback on_destroy_callback_;
 | 
| +
 | 
|    XDisplay* xdisplay_;
 | 
|    XID xwindow_;
 | 
|    XID xroot_window_;
 | 
| 
 |