OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "services/ui/launcher/launcher_view_tree.h" | 5 #include "services/ui/launcher/launcher_view_tree.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "mojo/public/cpp/application/connect.h" | 8 #include "mojo/public/cpp/application/connect.h" |
9 #include "mojo/services/gfx/composition/cpp/formatting.h" | 9 #include "mojo/services/gfx/composition/cpp/formatting.h" |
10 #include "mojo/services/ui/views/cpp/formatting.h" | 10 #include "mojo/services/ui/views/cpp/formatting.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 base::Bind(&LauncherViewTree::OnSceneRegistered, base::Unretained(this))); | 41 base::Bind(&LauncherViewTree::OnSceneRegistered, base::Unretained(this))); |
42 mojo::gfx::composition::SceneListenerPtr scene_listener; | 42 mojo::gfx::composition::SceneListenerPtr scene_listener; |
43 scene_listener_binding_.Bind(mojo::GetProxy(&scene_listener)); | 43 scene_listener_binding_.Bind(mojo::GetProxy(&scene_listener)); |
44 scene_->SetListener(scene_listener.Pass()); | 44 scene_->SetListener(scene_listener.Pass()); |
45 scene_.set_connection_error_handler(base::Bind( | 45 scene_.set_connection_error_handler(base::Bind( |
46 &LauncherViewTree::OnSceneConnectionError, base::Unretained(this))); | 46 &LauncherViewTree::OnSceneConnectionError, base::Unretained(this))); |
47 | 47 |
48 // Register the view tree. | 48 // Register the view tree. |
49 mojo::ui::ViewTreePtr view_tree; | 49 mojo::ui::ViewTreePtr view_tree; |
50 view_tree_binding_.Bind(mojo::GetProxy(&view_tree)); | 50 view_tree_binding_.Bind(mojo::GetProxy(&view_tree)); |
51 view_manager_->RegisterViewTree( | 51 view_manager_->RegisterViewTree(view_tree.Pass(), |
52 view_tree.Pass(), mojo::GetProxy(&view_tree_host_), "Launcher", | 52 mojo::GetProxy(&view_tree_host_), "Launcher"); |
53 base::Bind(&LauncherViewTree::OnViewTreeRegistered, | |
54 base::Unretained(this))); | |
55 view_tree_host_.set_connection_error_handler(base::Bind( | 53 view_tree_host_.set_connection_error_handler(base::Bind( |
56 &LauncherViewTree::OnViewTreeConnectionError, base::Unretained(this))); | 54 &LauncherViewTree::OnViewTreeConnectionError, base::Unretained(this))); |
57 | 55 |
58 // Get view tree services. | 56 // Get view tree services. |
59 mojo::ServiceProviderPtr view_tree_service_provider; | 57 mojo::ServiceProviderPtr view_tree_service_provider; |
60 view_tree_host_->GetServiceProvider( | 58 view_tree_host_->GetServiceProvider( |
61 mojo::GetProxy(&view_tree_service_provider)); | 59 mojo::GetProxy(&view_tree_service_provider)); |
62 mojo::ConnectToService<mojo::ui::InputDispatcher>( | 60 mojo::ConnectToService<mojo::ui::InputDispatcher>( |
63 view_tree_service_provider.get(), &input_dispatcher_); | 61 view_tree_service_provider.get(), &input_dispatcher_); |
64 input_dispatcher_.set_connection_error_handler( | 62 input_dispatcher_.set_connection_error_handler( |
65 base::Bind(&LauncherViewTree::OnInputDispatcherConnectionError, | 63 base::Bind(&LauncherViewTree::OnInputDispatcherConnectionError, |
66 base::Unretained(this))); | 64 base::Unretained(this))); |
67 } | 65 } |
68 | 66 |
69 LauncherViewTree::~LauncherViewTree() {} | 67 LauncherViewTree::~LauncherViewTree() {} |
70 | 68 |
71 void LauncherViewTree::SetRoot(mojo::ui::ViewTokenPtr token) { | 69 void LauncherViewTree::SetRoot(mojo::ui::ViewOwnerPtr owner) { |
72 root_ = token.Pass(); | 70 if (owner) { |
73 if (root_) | 71 view_tree_host_->SetRoot(++root_key_, owner.Pass()); |
74 view_tree_host_->SetRoot(++root_key_, root_.Clone()); | 72 root_was_set_ = true; |
75 else | 73 } else { |
76 view_tree_host_->ResetRoot(); | 74 view_tree_host_->ResetRoot(nullptr); |
| 75 root_was_set_ = false; |
| 76 } |
77 root_layout_info_.reset(); | 77 root_layout_info_.reset(); |
78 } | 78 } |
79 | 79 |
80 void LauncherViewTree::SetViewportMetrics( | 80 void LauncherViewTree::SetViewportMetrics( |
81 mojo::ViewportMetricsPtr viewport_metrics) { | 81 mojo::ViewportMetricsPtr viewport_metrics) { |
82 viewport_metrics_ = viewport_metrics.Pass(); | 82 viewport_metrics_ = viewport_metrics.Pass(); |
83 view_tree_host_->RequestLayout(); | 83 view_tree_host_->RequestLayout(); |
84 SetRootScene(); | 84 SetRootScene(); |
85 } | 85 } |
86 | 86 |
(...skipping 24 matching lines...) Expand all Loading... |
111 input_dispatcher_.reset(); | 111 input_dispatcher_.reset(); |
112 } | 112 } |
113 | 113 |
114 void LauncherViewTree::OnSceneRegistered( | 114 void LauncherViewTree::OnSceneRegistered( |
115 mojo::gfx::composition::SceneTokenPtr scene_token) { | 115 mojo::gfx::composition::SceneTokenPtr scene_token) { |
116 DVLOG(1) << "OnSceneRegistered: scene_token=" << scene_token; | 116 DVLOG(1) << "OnSceneRegistered: scene_token=" << scene_token; |
117 scene_token_ = scene_token.Pass(); | 117 scene_token_ = scene_token.Pass(); |
118 SetRootScene(); | 118 SetRootScene(); |
119 } | 119 } |
120 | 120 |
121 void LauncherViewTree::OnViewTreeRegistered( | |
122 mojo::ui::ViewTreeTokenPtr view_tree_token) { | |
123 DVLOG(1) << "OnViewTreeRegistered: view_tree_token=" << view_tree_token; | |
124 } | |
125 | |
126 void LauncherViewTree::OnResourceUnavailable( | 121 void LauncherViewTree::OnResourceUnavailable( |
127 uint32_t resource_id, | 122 uint32_t resource_id, |
128 const OnResourceUnavailableCallback& callback) { | 123 const OnResourceUnavailableCallback& callback) { |
129 LOG(ERROR) << "Resource lost: resource_id=" << resource_id; | 124 LOG(ERROR) << "Resource lost: resource_id=" << resource_id; |
130 } | 125 } |
131 | 126 |
132 void LauncherViewTree::OnLayout(const OnLayoutCallback& callback) { | 127 void LauncherViewTree::OnLayout(const OnLayoutCallback& callback) { |
133 LayoutRoot(); | 128 LayoutRoot(); |
134 callback.Run(); | 129 callback.Run(); |
135 } | 130 } |
136 | 131 |
137 void LauncherViewTree::OnRootUnavailable( | 132 void LauncherViewTree::OnRootUnavailable( |
138 uint32_t root_key, | 133 uint32_t root_key, |
139 const OnRootUnavailableCallback& callback) { | 134 const OnRootUnavailableCallback& callback) { |
140 if (root_key_ == root_key) { | 135 if (root_key_ == root_key) { |
141 LOG(ERROR) << "Root view terminated unexpectedly."; | 136 LOG(ERROR) << "Root view terminated unexpectedly."; |
142 Shutdown(); | 137 Shutdown(); |
143 } | 138 } |
144 callback.Run(); | 139 callback.Run(); |
145 } | 140 } |
146 | 141 |
147 void LauncherViewTree::LayoutRoot() { | 142 void LauncherViewTree::LayoutRoot() { |
148 if (!root_) | 143 if (!root_was_set_) |
149 return; | 144 return; |
150 | 145 |
151 auto params = mojo::ui::ViewLayoutParams::New(); | 146 auto params = mojo::ui::ViewLayoutParams::New(); |
152 params->constraints = mojo::ui::BoxConstraints::New(); | 147 params->constraints = mojo::ui::BoxConstraints::New(); |
153 params->constraints->min_width = viewport_metrics_->size->width; | 148 params->constraints->min_width = viewport_metrics_->size->width; |
154 params->constraints->max_width = viewport_metrics_->size->width; | 149 params->constraints->max_width = viewport_metrics_->size->width; |
155 params->constraints->min_height = viewport_metrics_->size->height; | 150 params->constraints->min_height = viewport_metrics_->size->height; |
156 params->constraints->max_height = viewport_metrics_->size->height; | 151 params->constraints->max_height = viewport_metrics_->size->height; |
157 params->device_pixel_ratio = viewport_metrics_->device_pixel_ratio; | 152 params->device_pixel_ratio = viewport_metrics_->device_pixel_ratio; |
158 view_tree_host_->LayoutRoot( | 153 view_tree_host_->LayoutRoot( |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 | 227 |
233 scene_->Update(update.Pass()); | 228 scene_->Update(update.Pass()); |
234 scene_->Publish(metadata.Pass()); | 229 scene_->Publish(metadata.Pass()); |
235 } | 230 } |
236 | 231 |
237 void LauncherViewTree::Shutdown() { | 232 void LauncherViewTree::Shutdown() { |
238 shutdown_callback_.Run(); | 233 shutdown_callback_.Run(); |
239 } | 234 } |
240 | 235 |
241 } // namespace launcher | 236 } // namespace launcher |
OLD | NEW |