Chromium Code Reviews| Index: mojo/services/public/cpp/view_manager/view.h |
| diff --git a/mojo/services/public/cpp/view_manager/view.h b/mojo/services/public/cpp/view_manager/view.h |
| index 72f044ce0b1d6e12e266c9e986e57ef0fc6c1a75..53100dbe8c2703edb4b83f592894d173fac47d7a 100644 |
| --- a/mojo/services/public/cpp/view_manager/view.h |
| +++ b/mojo/services/public/cpp/view_manager/view.h |
| @@ -23,6 +23,10 @@ class View; |
| class ViewManager; |
| class ViewObserver; |
| +// Defined in view_property.h (which we do not include) |
| +template<typename T> |
| +struct ViewProperty; |
| + |
| // Views are owned by the ViewManager. |
| // TODO(beng): Right now, you'll have to implement a ViewObserver to track |
| // destruction and NULL any pointers you have. |
| @@ -49,12 +53,42 @@ class View { |
| bool visible() const { return visible_; } |
| void SetVisible(bool value); |
| + // Returns the set of string to bag of byte properties. These properties are |
| + // shared with all other clients of the view manager. |
|
sky
2014/11/14 23:11:27
Actually, it's only the window manager that can se
|
| const std::map<std::string, std::vector<uint8_t>>& properties() const { |
| return properties_; |
| } |
| // Sets a property. If |data| is null, this property is deleted. |
| void SetProperty(const std::string& name, const std::vector<uint8_t>* data); |
| + // Sets the |value| of the given window |property|. Setting to the default |
| + // value (e.g., NULL) removes the property. The caller is responsible for the |
| + // lifetime of any object set as a property on the View. |
| + // |
| + // These properties are only visible in the current process and are not |
|
sky
2014/11/14 23:11:27
nit: 'current process' is kind of misleading here.
|
| + // shared with other mojo services. |
| + template<typename T> |
| + void SetLocalProperty(const ViewProperty<T>* property, T value); |
| + |
| + // Returns the value of the given window |property|. Returns the |
| + // property-specific default value if the property was not previously set. |
| + // |
| + // These properties are only visible in the current process and are not |
| + // shared with other mojo services. |
| + template<typename T> |
| + T GetLocalProperty(const ViewProperty<T>* property) const; |
| + |
| + // Sets the |property| to its default value. Useful for avoiding a cast when |
| + // setting to NULL. |
| + // |
| + // These properties are only visible in the current process and are not |
| + // shared with other mojo services. |
| + template<typename T> |
| + void ClearLocalProperty(const ViewProperty<T>* property); |
| + |
| + // Type of a function to delete a property that this view owns. |
| + typedef void (*PropertyDeallocator)(int64 value); |
| + |
| // A View is drawn if the View and all its ancestors are visible and the |
| // View is attached to the root. |
| bool IsDrawn() const; |
| @@ -101,6 +135,14 @@ class View { |
| explicit View(ViewManager* manager); |
| + // Called by the public {Set,Get,Clear}Property functions. |
| + int64 SetLocalPropertyInternal(const void* key, |
| + const char* name, |
| + PropertyDeallocator deallocator, |
| + int64 value, |
| + int64 default_value); |
| + int64 GetLocalPropertyInternal(const void* key, int64 default_value) const; |
| + |
| void LocalDestroy(); |
| void LocalAddChild(View* child); |
| void LocalRemoveChild(View* child); |
| @@ -126,6 +168,17 @@ class View { |
| // state. This field is only used if the view has no parent (eg it's a root). |
| bool drawn_; |
| + // Value struct to keep the name and deallocator for this property. |
| + // Key cannot be used for this purpose because it can be char* or |
| + // WindowProperty<>. |
| + struct Value { |
| + const char* name; |
| + int64 value; |
| + PropertyDeallocator deallocator; |
| + }; |
| + |
| + std::map<const void*, Value> prop_map_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(View); |
| }; |