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

Side by Side Diff: ui/views/mus/native_widget_mus.cc

Issue 1683853003: Revert of ash/mash: Add a mus-client that sets up ash to provide the system ui for mash. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.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 | « ui/views/mus/native_widget_mus.h ('k') | ui/views/mus/window_manager_connection.h » ('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 "ui/views/mus/native_widget_mus.h" 5 #include "ui/views/mus/native_widget_mus.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/thread_task_runner_handle.h" 8 #include "base/thread_task_runner_handle.h"
9 #include "components/mus/public/cpp/property_type_converters.h" 9 #include "components/mus/public/cpp/property_type_converters.h"
10 #include "components/mus/public/cpp/window.h" 10 #include "components/mus/public/cpp/window.h"
(...skipping 12 matching lines...) Expand all
23 #include "ui/native_theme/native_theme_aura.h" 23 #include "ui/native_theme/native_theme_aura.h"
24 #include "ui/views/mus/platform_window_mus.h" 24 #include "ui/views/mus/platform_window_mus.h"
25 #include "ui/views/mus/surface_context_factory.h" 25 #include "ui/views/mus/surface_context_factory.h"
26 #include "ui/views/mus/window_manager_constants_converters.h" 26 #include "ui/views/mus/window_manager_constants_converters.h"
27 #include "ui/views/mus/window_manager_frame_values.h" 27 #include "ui/views/mus/window_manager_frame_values.h"
28 #include "ui/views/mus/window_tree_host_mus.h" 28 #include "ui/views/mus/window_tree_host_mus.h"
29 #include "ui/views/widget/widget_delegate.h" 29 #include "ui/views/widget/widget_delegate.h"
30 #include "ui/views/window/custom_frame_view.h" 30 #include "ui/views/window/custom_frame_view.h"
31 #include "ui/wm/core/base_focus_rules.h" 31 #include "ui/wm/core/base_focus_rules.h"
32 #include "ui/wm/core/capture_controller.h" 32 #include "ui/wm/core/capture_controller.h"
33 #include "ui/wm/core/default_screen_position_client.h"
34 #include "ui/wm/core/focus_controller.h" 33 #include "ui/wm/core/focus_controller.h"
35 34
36 DECLARE_WINDOW_PROPERTY_TYPE(mus::Window*); 35 DECLARE_WINDOW_PROPERTY_TYPE(mus::Window*);
37 36
38 namespace views { 37 namespace views {
39 namespace { 38 namespace {
40 39
41 DEFINE_WINDOW_PROPERTY_KEY(mus::Window*, kMusWindow, nullptr); 40 DEFINE_WINDOW_PROPERTY_KEY(mus::Window*, kMusWindow, nullptr);
42 41
43 MUS_DEFINE_WINDOW_PROPERTY_KEY(NativeWidgetMus*, kNativeWidgetMusKey, nullptr); 42 MUS_DEFINE_WINDOW_PROPERTY_KEY(NativeWidgetMus*, kNativeWidgetMusKey, nullptr);
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 } // namespace 172 } // namespace
174 173
175 //////////////////////////////////////////////////////////////////////////////// 174 ////////////////////////////////////////////////////////////////////////////////
176 // NativeWidgetMus, public: 175 // NativeWidgetMus, public:
177 176
178 NativeWidgetMus::NativeWidgetMus(internal::NativeWidgetDelegate* delegate, 177 NativeWidgetMus::NativeWidgetMus(internal::NativeWidgetDelegate* delegate,
179 mojo::Shell* shell, 178 mojo::Shell* shell,
180 mus::Window* window, 179 mus::Window* window,
181 mus::mojom::SurfaceType surface_type) 180 mus::mojom::SurfaceType surface_type)
182 : window_(window), 181 : window_(window),
182 shell_(shell),
183 native_widget_delegate_(delegate), 183 native_widget_delegate_(delegate),
184 surface_type_(surface_type), 184 surface_type_(surface_type),
185 show_state_before_fullscreen_(ui::PLATFORM_WINDOW_STATE_UNKNOWN), 185 show_state_before_fullscreen_(ui::PLATFORM_WINDOW_STATE_UNKNOWN),
186 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), 186 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET),
187 content_(new aura::Window(this)), 187 content_(new aura::Window(this)),
188 close_widget_factory_(this) { 188 close_widget_factory_(this) {
189 // TODO(fsamuel): Figure out lifetime of |window_|. 189 // TODO(fsamuel): Figure out lifetime of |window_|.
190 aura::SetMusWindow(content_, window_); 190 aura::SetMusWindow(content_, window_);
191 191
192 window->SetLocalProperty(kNativeWidgetMusKey, this); 192 window->SetLocalProperty(kNativeWidgetMusKey, this);
193 // WindowTreeHost creates the compositor using the ContextFactory from
194 // aura::Env. Install |context_factory_| there so that |context_factory_| is
195 // picked up.
196 ui::ContextFactory* default_context_factory =
197 aura::Env::GetInstance()->context_factory();
198 // For Chrome, we need the GpuProcessTransportFactory so that renderer and
199 // browser pixels are composited into a single backing
200 // SoftwareOutputDeviceMus.
201 if (!default_context_factory) {
202 context_factory_.reset(
203 new SurfaceContextFactory(shell, window_, surface_type_));
204 aura::Env::GetInstance()->set_context_factory(context_factory_.get());
205 }
206 window_tree_host_.reset(new WindowTreeHostMus(shell, this, window_));
207 aura::Env::GetInstance()->set_context_factory(default_context_factory);
208 } 193 }
209 194
210 NativeWidgetMus::~NativeWidgetMus() { 195 NativeWidgetMus::~NativeWidgetMus() {
211 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) 196 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET)
212 delete native_widget_delegate_; 197 delete native_widget_delegate_;
213 else 198 else
214 CloseNow(); 199 CloseNow();
215 } 200 }
216 201
217 // static 202 // static
218 void NativeWidgetMus::NotifyFrameChanged( 203 void NativeWidgetMus::NotifyFrameChanged(
219 mus::WindowTreeConnection* connection) { 204 mus::WindowTreeConnection* connection) {
220 for (mus::Window* window : connection->GetRoots()) { 205 for (mus::Window* window : connection->GetRoots()) {
221 NativeWidgetMus* native_widget = 206 NativeWidgetMus* native_widget =
222 window->GetLocalProperty(kNativeWidgetMusKey); 207 window->GetLocalProperty(kNativeWidgetMusKey);
223 if (native_widget && native_widget->GetWidget()->non_client_view()) { 208 if (native_widget && native_widget->GetWidget()->non_client_view()) {
224 native_widget->GetWidget()->non_client_view()->Layout(); 209 native_widget->GetWidget()->non_client_view()->Layout();
225 native_widget->GetWidget()->non_client_view()->SchedulePaint(); 210 native_widget->GetWidget()->non_client_view()->SchedulePaint();
226 native_widget->UpdateClientArea(); 211 native_widget->UpdateClientArea();
227 } 212 }
228 } 213 }
229 } 214 }
230 215
231 aura::Window* NativeWidgetMus::GetRootWindow() {
232 return window_tree_host_->window();
233 }
234
235 void NativeWidgetMus::OnPlatformWindowClosed() { 216 void NativeWidgetMus::OnPlatformWindowClosed() {
236 native_widget_delegate_->OnNativeWidgetDestroying(); 217 native_widget_delegate_->OnNativeWidgetDestroying();
237 218
238 window_tree_client_.reset(); // Uses |content_|. 219 window_tree_client_.reset(); // Uses |content_|.
239 capture_client_.reset(); // Uses |content_|. 220 capture_client_.reset(); // Uses |content_|.
240 221
241 window_tree_host_->RemoveObserver(this); 222 window_tree_host_->RemoveObserver(this);
242 window_tree_host_.reset(); 223 window_tree_host_.reset();
243 224
244 window_ = nullptr; 225 window_ = nullptr;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 285
305 NonClientFrameView* NativeWidgetMus::CreateNonClientFrameView() { 286 NonClientFrameView* NativeWidgetMus::CreateNonClientFrameView() {
306 return new ClientSideNonClientFrameView(GetWidget()); 287 return new ClientSideNonClientFrameView(GetWidget());
307 } 288 }
308 289
309 void NativeWidgetMus::InitNativeWidget(const Widget::InitParams& params) { 290 void NativeWidgetMus::InitNativeWidget(const Widget::InitParams& params) {
310 ownership_ = params.ownership; 291 ownership_ = params.ownership;
311 window_->SetCanFocus(params.activatable == 292 window_->SetCanFocus(params.activatable ==
312 Widget::InitParams::ACTIVATABLE_YES); 293 Widget::InitParams::ACTIVATABLE_YES);
313 294
295 // WindowTreeHost creates the compositor using the ContextFactory from
296 // aura::Env. Install |context_factory_| there so that |context_factory_| is
297 // picked up.
298 ui::ContextFactory* default_context_factory =
299 aura::Env::GetInstance()->context_factory();
300 // For Chrome, we need the GpuProcessTransportFactory so that renderer and
301 // browser pixels are composited into a single backing
302 // SoftwareOutputDeviceMus.
303 if (!default_context_factory) {
304 if (!context_factory_) {
305 context_factory_.reset(new SurfaceContextFactory(shell_, window_,
306 surface_type_));
307 }
308 aura::Env::GetInstance()->set_context_factory(context_factory_.get());
309 }
310 window_tree_host_.reset(new WindowTreeHostMus(shell_, this, window_));
314 window_tree_host_->AddObserver(this); 311 window_tree_host_->AddObserver(this);
315 window_tree_host_->InitHost(); 312 window_tree_host_->InitHost();
313 aura::Env::GetInstance()->set_context_factory(default_context_factory);
316 window_tree_host_->window()->SetProperty(kMusWindow, window_); 314 window_tree_host_->window()->SetProperty(kMusWindow, window_);
317 315
318 focus_client_.reset(new wm::FocusController(new FocusRulesImpl)); 316 focus_client_.reset(new wm::FocusController(new FocusRulesImpl));
319 317
320 aura::client::SetFocusClient(window_tree_host_->window(), 318 aura::client::SetFocusClient(window_tree_host_->window(),
321 focus_client_.get()); 319 focus_client_.get());
322 aura::client::SetActivationClient(window_tree_host_->window(), 320 aura::client::SetActivationClient(window_tree_host_->window(),
323 focus_client_.get()); 321 focus_client_.get());
324 screen_position_client_.reset(new wm::DefaultScreenPositionClient());
325 aura::client::SetScreenPositionClient(window_tree_host_->window(),
326 screen_position_client_.get());
327
328 window_tree_client_.reset( 322 window_tree_client_.reset(
329 new NativeWidgetMusWindowTreeClient(window_tree_host_->window())); 323 new NativeWidgetMusWindowTreeClient(window_tree_host_->window()));
330 window_tree_host_->window()->AddPreTargetHandler(focus_client_.get()); 324 window_tree_host_->window()->AddPreTargetHandler(focus_client_.get());
331 window_tree_host_->window()->SetLayoutManager( 325 window_tree_host_->window()->SetLayoutManager(
332 new ContentWindowLayoutManager(window_tree_host_->window(), content_)); 326 new ContentWindowLayoutManager(window_tree_host_->window(), content_));
333 capture_client_.reset( 327 capture_client_.reset(
334 new aura::client::DefaultCaptureClient(window_tree_host_->window())); 328 new aura::client::DefaultCaptureClient(window_tree_host_->window()));
335 329
336 content_->SetType(ui::wm::WINDOW_TYPE_NORMAL); 330 content_->SetType(ui::wm::WINDOW_TYPE_NORMAL);
337 content_->Init(ui::LAYER_TEXTURED); 331 content_->Init(ui::LAYER_TEXTURED);
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 848
855 void NativeWidgetMus::OnGestureEvent(ui::GestureEvent* event) { 849 void NativeWidgetMus::OnGestureEvent(ui::GestureEvent* event) {
856 native_widget_delegate_->OnGestureEvent(event); 850 native_widget_delegate_->OnGestureEvent(event);
857 } 851 }
858 852
859 void NativeWidgetMus::OnHostCloseRequested(const aura::WindowTreeHost* host) { 853 void NativeWidgetMus::OnHostCloseRequested(const aura::WindowTreeHost* host) {
860 GetWidget()->Close(); 854 GetWidget()->Close();
861 } 855 }
862 856
863 } // namespace views 857 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/mus/native_widget_mus.h ('k') | ui/views/mus/window_manager_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698