124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Copyright (c) 2013 The Chromium Authors. All rights reserved.
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Use of this source code is governed by a BSD-style license that can be
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// found in the LICENSE file.
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef UI_VIEWS_WIDGET_WIDGET_DELETION_OBSERVER_H_
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define UI_VIEWS_WIDGET_WIDGET_DELETION_OBSERVER_H_
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "base/basictypes.h"
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "base/compiler_specific.h"
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "ui/views/views_export.h"
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "ui/views/widget/widget_observer.h"
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
135f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Maleanamespace views {
145f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Maleaclass Widget;
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// A simple WidgetObserver that can be probed for the life of a widget.
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass VIEWS_EXPORT WidgetDeletionObserver : public WidgetObserver {
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public:
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner  explicit WidgetDeletionObserver(Widget* widget);
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner  virtual ~WidgetDeletionObserver();
215f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner  // Returns true if the widget passed in the constructor is still alive.
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner  bool IsWidgetAlive() { return widget_ != NULL; }
24
25  // Overridden from WidgetObserver.
26  virtual void OnWidgetDestroying(Widget* widget) OVERRIDE;
27
28 private:
29  void CleanupWidget();
30
31  Widget* widget_;
32
33  DISALLOW_COPY_AND_ASSIGN(WidgetDeletionObserver);
34};
35
36}  // namespace views
37
38#endif  // UI_VIEWS_WIDGET_WIDGET_DELETION_OBSERVER_H_
39