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