| 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 |