Index: mojo/services/view_manager/public/cpp/lib/view.cc |
diff --git a/mojo/services/view_manager/public/cpp/lib/view.cc b/mojo/services/view_manager/public/cpp/lib/view.cc |
index c07edebd2f9e05a8ba746d76124043126b2995de..f7e77844ce9cfbd191051b8594da239aa3b71cce 100644 |
--- a/mojo/services/view_manager/public/cpp/lib/view.cc |
+++ b/mojo/services/view_manager/public/cpp/lib/view.cc |
@@ -382,10 +382,20 @@ void View::Embed(const String& url, |
//////////////////////////////////////////////////////////////////////////////// |
// View, protected: |
+namespace { |
+ |
+ViewportMetricsPtr CreateEmptyViewportMetrics() { |
+ ViewportMetricsPtr metrics = ViewportMetrics::New(); |
+ metrics->size = Size::New(); |
+ return metrics; |
+} |
+} |
+ |
View::View() |
: manager_(NULL), |
id_(static_cast<Id>(-1)), |
parent_(NULL), |
+ viewport_metrics_(CreateEmptyViewportMetrics()), |
visible_(true), |
drawn_(false) { |
} |
@@ -425,6 +435,7 @@ View::View(ViewManager* manager, Id id) |
: manager_(manager), |
id_(id), |
parent_(nullptr), |
+ viewport_metrics_(CreateEmptyViewportMetrics()), |
visible_(false), |
drawn_(false) { |
} |
@@ -489,6 +500,15 @@ void View::LocalSetBounds(const Rect& old_bounds, |
bounds_ = new_bounds; |
} |
+void View::LocalSetViewportMetrics(const ViewportMetrics& old_metrics, |
+ const ViewportMetrics& new_metrics) { |
+ // TODO(eseidel): We could check old_metrics against viewport_metrics_. |
+ viewport_metrics_ = new_metrics.Clone(); |
+ FOR_EACH_OBSERVER( |
+ ViewObserver, observers_, |
+ OnViewViewportMetricsChanged(this, old_metrics, new_metrics)); |
+} |
+ |
void View::LocalSetDrawn(bool value) { |
if (drawn_ == value) |
return; |