1// Copyright (c) 2011 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#ifndef UI_VIEWS_WIDGET_NATIVE_WIDGET_H_
6#define UI_VIEWS_WIDGET_NATIVE_WIDGET_H_
7
8#include "ui/views/widget/widget.h"
9
10namespace views {
11namespace internal {
12class NativeWidgetPrivate;
13}
14
15////////////////////////////////////////////////////////////////////////////////
16// NativeWidget interface
17//
18//  An interface that serves as the public API base for the
19//  internal::NativeWidget interface that Widget uses to communicate with a
20//  backend-specific native widget implementation. This is the only component of
21//  this interface that is publicly visible, and exists solely for exposure via
22//  Widget's native_widget() accessor, which code occasionally static_casts to
23//  a known implementation in platform-specific code.
24//
25class VIEWS_EXPORT NativeWidget {
26 public:
27  virtual ~NativeWidget() {}
28
29 private:
30  friend class Widget;
31
32  virtual internal::NativeWidgetPrivate* AsNativeWidgetPrivate() = 0;
33};
34
35}  // namespace views
36
37#endif  // UI_VIEWS_WIDGET_NATIVE_WIDGET_H_
38