Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Unified Diff: ui/aura/window.cc

Issue 2632543003: Refactor and push window properties up to class properties. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/aura/window.cc
diff --git a/ui/aura/window.cc b/ui/aura/window.cc
index db48036f84dc875517ff0b947db2daa4eb65fb7f..dc384b7b9fbbedafb86e2fd654d092afa063e9e3 100644
--- a/ui/aura/window.cc
+++ b/ui/aura/window.cc
@@ -124,13 +124,7 @@ Window::~Window() {
layout_manager_.reset();
// Clear properties.
- for (std::map<const void*, Value>::const_iterator iter = prop_map_.begin();
- iter != prop_map_.end();
- ++iter) {
- if (iter->second.deallocator)
- (*iter->second.deallocator)(iter->second.value);
- }
- prop_map_.clear();
+ ClearProperties();
// The layer will either be destroyed by |layer_owner_|'s dtor, or by whoever
// acquired it.
@@ -599,12 +593,13 @@ void Window::SuppressPaint() {
layer()->SuppressPaint();
}
+/*
std::set<const void*> Window::GetAllPropertKeys() const {
std::set<const void*> keys;
for (auto& pair : prop_map_)
keys.insert(pair.first);
return keys;
-}
+}*/
// {Set,Get,Clear}Property are implemented in window_property.h.
@@ -661,40 +656,35 @@ void Window::RemoveOrDestroyChildren() {
}
}
+std::unique_ptr<ui::PropertyData> Window::BeforePropertyChange(
+ const void* key) {
+ return port_ ? port_->OnWillChangeProperty(key) : nullptr;
+}
+
+void Window::AfterPropertyChange(const void* key,
+ int64_t old_value,
+ std::unique_ptr<ui::PropertyData> data) {
+ if (port_)
+ port_->OnPropertyChanged(key, std::move(data));
+ for (WindowObserver& observer : observers_)
+ observer.OnWindowPropertyChanged(this, key, old_value);
+}
+
///////////////////////////////////////////////////////////////////////////////
// Window, private:
int64_t Window::SetPropertyInternal(const void* key,
const char* name,
- PropertyDeallocator deallocator,
+ ui::PropertyDeallocator deallocator,
int64_t value,
int64_t default_value) {
- // This code may be called before |port_| has been created.
- std::unique_ptr<WindowPortPropertyData> data =
- port_ ? port_->OnWillChangeProperty(key) : nullptr;
- int64_t old = GetPropertyInternal(key, default_value);
- if (value == default_value) {
- prop_map_.erase(key);
- } else {
- Value prop_value;
- prop_value.name = name;
- prop_value.value = value;
- prop_value.deallocator = deallocator;
- prop_map_[key] = prop_value;
- }
- if (port_)
- port_->OnPropertyChanged(key, std::move(data));
- for (WindowObserver& observer : observers_)
- observer.OnWindowPropertyChanged(this, key, old);
- return old;
+ return PropertyHandler::SetPropertyInternal(key, name, deallocator, value,
+ default_value);
}
int64_t Window::GetPropertyInternal(const void* key,
int64_t default_value) const {
- std::map<const void*, Value>::const_iterator iter = prop_map_.find(key);
- if (iter == prop_map_.end())
- return default_value;
- return iter->second.value;
+ return PropertyHandler::GetPropertyInternal(key, default_value);
}
bool Window::HitTest(const gfx::Point& local_point) {

Powered by Google App Engine
This is Rietveld 408576698