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

Side by Side Diff: services/ui/launcher/launcher_view_tree.cc

Issue 1679023006: Reify view ownership as a message pipe. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 10 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 unified diff | Download patch
« no previous file with comments | « services/ui/launcher/launcher_view_tree.h ('k') | services/ui/view_manager/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « services/ui/launcher/launcher_view_tree.h ('k') | services/ui/view_manager/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698