Index: ui/aura/window_property.h |
diff --git a/ui/aura/window_property.h b/ui/aura/window_property.h |
index 23769d3aba63195a79008a90ceeef813bba5beb8..0b1574e4f368dcc753d773ba036fad886c87dcaa 100644 |
--- a/ui/aura/window_property.h |
+++ b/ui/aura/window_property.h |
@@ -9,7 +9,8 @@ |
#include "ui/aura/aura_export.h" |
#include "ui/aura/window.h" |
-// This header should be included by code that defines WindowProperties. |
+// This header should be included by code that defines WindowProperties. It |
+// should not be included by code that only gets and sets WindowProperties. |
// |
// To define a new WindowProperty: |
// |
@@ -77,69 +78,56 @@ |
Window::PropertyDeallocator deallocator; |
}; |
-namespace subtle { |
+template<typename T> |
+void Window::SetProperty(const WindowProperty<T>* property, T value) { |
+ int64 old = SetPropertyInternal( |
+ property, |
+ property->name, |
+ value == property->default_value ? NULL : property->deallocator, |
+ WindowPropertyCaster<T>::ToInt64(value), |
+ WindowPropertyCaster<T>::ToInt64(property->default_value)); |
+ if (property->deallocator && |
+ old != WindowPropertyCaster<T>::ToInt64(property->default_value)) { |
+ (*property->deallocator)(old); |
+ } |
+} |
-class AURA_EXPORT PropertyHelper { |
- public: |
- template<typename T> |
- static void Set(Window* window, const WindowProperty<T>* property, T value) { |
- int64 old = window->SetPropertyInternal( |
- property, |
- property->name, |
- value == property->default_value ? nullptr : property->deallocator, |
- WindowPropertyCaster<T>::ToInt64(value), |
- WindowPropertyCaster<T>::ToInt64(property->default_value)); |
- if (property->deallocator && |
- old != WindowPropertyCaster<T>::ToInt64(property->default_value)) { |
- (*property->deallocator)(old); |
- } |
- } |
- template<typename T> |
- static T Get(const Window* window, const WindowProperty<T>* property) { |
- return WindowPropertyCaster<T>::FromInt64(window->GetPropertyInternal( |
- property, WindowPropertyCaster<T>::ToInt64(property->default_value))); |
- } |
- template<typename T> |
- static void Clear(Window* window, const WindowProperty<T>* property) { |
- window->SetProperty(property, property->default_value); \ |
- } |
-}; |
+template<typename T> |
+T Window::GetProperty(const WindowProperty<T>* property) const { |
+ return WindowPropertyCaster<T>::FromInt64(GetPropertyInternal( |
+ property, WindowPropertyCaster<T>::ToInt64(property->default_value))); |
+} |
-} // namespace subtle |
+template<typename T> |
+void Window::ClearProperty(const WindowProperty<T>* property) { |
+ SetProperty(property, property->default_value); |
+} |
} // namespace aura |
// Macros to instantiate the property getter/setter template functions. |
#define DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(EXPORT, T) \ |
- template<> EXPORT void aura::Window::SetProperty( \ |
- const aura::WindowProperty<T >* property, T value) { \ |
- subtle::PropertyHelper::Set<T>(this, property, value); \ |
- } \ |
- template<> EXPORT T aura::Window::GetProperty( \ |
- const aura::WindowProperty<T >* property) const { \ |
- return subtle::PropertyHelper::Get<T>(this, property); \ |
- } \ |
- template<> EXPORT void aura::Window::ClearProperty( \ |
- const aura::WindowProperty<T >* property) { \ |
- subtle::PropertyHelper::Clear<T>(this, property); \ |
- } |
+ template EXPORT void aura::Window::SetProperty( \ |
+ const aura::WindowProperty<T >*, T); \ |
+ template EXPORT T aura::Window::GetProperty( \ |
+ const aura::WindowProperty<T >*) const; \ |
+ template EXPORT void aura::Window::ClearProperty( \ |
+ const aura::WindowProperty<T >*); |
#define DECLARE_WINDOW_PROPERTY_TYPE(T) \ |
DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(, T) |
#define DEFINE_WINDOW_PROPERTY_KEY(TYPE, NAME, DEFAULT) \ |
- COMPILE_ASSERT(sizeof(TYPE) <= sizeof(int64), property_type_too_large); \ |
- namespace { \ |
- const aura::WindowProperty<TYPE> NAME ## _Value = \ |
- {DEFAULT, #NAME, nullptr}; \ |
- } \ |
+ COMPILE_ASSERT(sizeof(TYPE) <= sizeof(int64), property_type_too_large); \ |
+ namespace { \ |
+ const aura::WindowProperty<TYPE> NAME ## _Value = {DEFAULT, #NAME, NULL}; \ |
+ } \ |
const aura::WindowProperty<TYPE>* const NAME = & NAME ## _Value; |
#define DEFINE_LOCAL_WINDOW_PROPERTY_KEY(TYPE, NAME, DEFAULT) \ |
- COMPILE_ASSERT(sizeof(TYPE) <= sizeof(int64), property_type_too_large); \ |
- namespace { \ |
- const aura::WindowProperty<TYPE> NAME ## _Value = \ |
- {DEFAULT, #NAME, nullptr}; \ |
- const aura::WindowProperty<TYPE>* const NAME = & NAME ## _Value; \ |
+ COMPILE_ASSERT(sizeof(TYPE) <= sizeof(int64), property_type_too_large); \ |
+ namespace { \ |
+ const aura::WindowProperty<TYPE> NAME ## _Value = {DEFAULT, #NAME, NULL}; \ |
+ const aura::WindowProperty<TYPE>* const NAME = & NAME ## _Value; \ |
} |
#define DEFINE_OWNED_WINDOW_PROPERTY_KEY(TYPE, NAME, DEFAULT) \ |