| 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 "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 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 int32_t behavior = mus::mojom::kResizeBehaviorNone; | 189 int32_t behavior = mus::mojom::kResizeBehaviorNone; |
| 190 if (delegate->CanResize()) | 190 if (delegate->CanResize()) |
| 191 behavior |= mus::mojom::kResizeBehaviorCanResize; | 191 behavior |= mus::mojom::kResizeBehaviorCanResize; |
| 192 if (delegate->CanMaximize()) | 192 if (delegate->CanMaximize()) |
| 193 behavior |= mus::mojom::kResizeBehaviorCanMaximize; | 193 behavior |= mus::mojom::kResizeBehaviorCanMaximize; |
| 194 if (delegate->CanMinimize()) | 194 if (delegate->CanMinimize()) |
| 195 behavior |= mus::mojom::kResizeBehaviorCanMinimize; | 195 behavior |= mus::mojom::kResizeBehaviorCanMinimize; |
| 196 return behavior; | 196 return behavior; |
| 197 } | 197 } |
| 198 | 198 |
| 199 // Returns the 1x window app icon or an empty SkBitmap if no icon is available. |
| 200 // TODO(jamescook): Support other scale factors. |
| 201 SkBitmap AppIconFromDelegate(WidgetDelegate* delegate) { |
| 202 if (!delegate) |
| 203 return SkBitmap(); |
| 204 gfx::ImageSkia app_icon = delegate->GetWindowAppIcon(); |
| 205 if (app_icon.isNull()) |
| 206 return SkBitmap(); |
| 207 return app_icon.GetRepresentation(1.f).sk_bitmap(); |
| 208 } |
| 209 |
| 199 } // namespace | 210 } // namespace |
| 200 | 211 |
| 201 class NativeWidgetMus::MusWindowObserver : public mus::WindowObserver { | 212 class NativeWidgetMus::MusWindowObserver : public mus::WindowObserver { |
| 202 public: | 213 public: |
| 203 explicit MusWindowObserver(NativeWidgetMus* native_widget_mus) | 214 explicit MusWindowObserver(NativeWidgetMus* native_widget_mus) |
| 204 : native_widget_mus_(native_widget_mus) { | 215 : native_widget_mus_(native_widget_mus) { |
| 205 native_widget_mus_->window_->AddObserver(this); | 216 native_widget_mus_->window_->AddObserver(this); |
| 206 } | 217 } |
| 207 | 218 |
| 208 ~MusWindowObserver() override { | 219 ~MusWindowObserver() override { |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 if (!Widget::RequiresNonClientView(init_params.type)) | 356 if (!Widget::RequiresNonClientView(init_params.type)) |
| 346 return; | 357 return; |
| 347 | 358 |
| 348 (*properties)[mus::mojom::WindowManager::kWindowType_Property] = | 359 (*properties)[mus::mojom::WindowManager::kWindowType_Property] = |
| 349 mojo::TypeConverter<const std::vector<uint8_t>, int32_t>::Convert( | 360 mojo::TypeConverter<const std::vector<uint8_t>, int32_t>::Convert( |
| 350 static_cast<int32_t>( | 361 static_cast<int32_t>( |
| 351 mojo::ConvertTo<mus::mojom::WindowType>(init_params.type))); | 362 mojo::ConvertTo<mus::mojom::WindowType>(init_params.type))); |
| 352 (*properties)[mus::mojom::WindowManager::kResizeBehavior_Property] = | 363 (*properties)[mus::mojom::WindowManager::kResizeBehavior_Property] = |
| 353 mojo::TypeConverter<const std::vector<uint8_t>, int32_t>::Convert( | 364 mojo::TypeConverter<const std::vector<uint8_t>, int32_t>::Convert( |
| 354 ResizeBehaviorFromDelegate(init_params.delegate)); | 365 ResizeBehaviorFromDelegate(init_params.delegate)); |
| 366 SkBitmap app_icon = AppIconFromDelegate(init_params.delegate); |
| 367 if (!app_icon.isNull()) { |
| 368 (*properties)[mus::mojom::WindowManager::kWindowAppIcon_Property] = |
| 369 mojo::TypeConverter<const std::vector<uint8_t>, SkBitmap>::Convert( |
| 370 app_icon); |
| 371 } |
| 355 } | 372 } |
| 356 | 373 |
| 357 //////////////////////////////////////////////////////////////////////////////// | 374 //////////////////////////////////////////////////////////////////////////////// |
| 358 // NativeWidgetMus, internal::NativeWidgetPrivate implementation: | 375 // NativeWidgetMus, internal::NativeWidgetPrivate implementation: |
| 359 | 376 |
| 360 NonClientFrameView* NativeWidgetMus::CreateNonClientFrameView() { | 377 NonClientFrameView* NativeWidgetMus::CreateNonClientFrameView() { |
| 361 return new ClientSideNonClientFrameView(GetWidget()); | 378 return new ClientSideNonClientFrameView(GetWidget()); |
| 362 } | 379 } |
| 363 | 380 |
| 364 void NativeWidgetMus::InitNativeWidget(const Widget::InitParams& params) { | 381 void NativeWidgetMus::InitNativeWidget(const Widget::InitParams& params) { |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 535 ? window_->GetSharedProperty<base::string16>(kWindowTitle_Property) | 552 ? window_->GetSharedProperty<base::string16>(kWindowTitle_Property) |
| 536 : base::string16(); | 553 : base::string16(); |
| 537 if (current_title == title) | 554 if (current_title == title) |
| 538 return false; | 555 return false; |
| 539 window_->SetSharedProperty<base::string16>(kWindowTitle_Property, title); | 556 window_->SetSharedProperty<base::string16>(kWindowTitle_Property, title); |
| 540 return true; | 557 return true; |
| 541 } | 558 } |
| 542 | 559 |
| 543 void NativeWidgetMus::SetWindowIcons(const gfx::ImageSkia& window_icon, | 560 void NativeWidgetMus::SetWindowIcons(const gfx::ImageSkia& window_icon, |
| 544 const gfx::ImageSkia& app_icon) { | 561 const gfx::ImageSkia& app_icon) { |
| 545 // NOTIMPLEMENTED(); | 562 const char* const kWindowAppIcon_Property = |
| 563 mus::mojom::WindowManager::kWindowAppIcon_Property; |
| 564 |
| 565 if (!app_icon.isNull()) { |
| 566 // Send the app icon 1x bitmap to the window manager. |
| 567 // TODO(jamescook): Support other scale factors. |
| 568 window_->SetSharedProperty<SkBitmap>( |
| 569 kWindowAppIcon_Property, app_icon.GetRepresentation(1.f).sk_bitmap()); |
| 570 } else if (window_->HasSharedProperty(kWindowAppIcon_Property)) { |
| 571 // Remove the existing icon. |
| 572 window_->ClearSharedProperty(kWindowAppIcon_Property); |
| 573 } |
| 546 } | 574 } |
| 547 | 575 |
| 548 void NativeWidgetMus::InitModalType(ui::ModalType modal_type) { | 576 void NativeWidgetMus::InitModalType(ui::ModalType modal_type) { |
| 549 if (modal_type != ui::MODAL_TYPE_NONE) | 577 if (modal_type != ui::MODAL_TYPE_NONE) |
| 550 window_->SetModal(); | 578 window_->SetModal(); |
| 551 } | 579 } |
| 552 | 580 |
| 553 gfx::Rect NativeWidgetMus::GetWindowBoundsInScreen() const { | 581 gfx::Rect NativeWidgetMus::GetWindowBoundsInScreen() const { |
| 554 return window_ ? window_->GetBoundsInRoot() : gfx::Rect(); | 582 return window_ ? window_->GetBoundsInRoot() : gfx::Rect(); |
| 555 } | 583 } |
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 977 window_tree_host_->Show(); | 1005 window_tree_host_->Show(); |
| 978 GetNativeWindow()->Show(); | 1006 GetNativeWindow()->Show(); |
| 979 } else { | 1007 } else { |
| 980 window_tree_host_->Hide(); | 1008 window_tree_host_->Hide(); |
| 981 GetNativeWindow()->Hide(); | 1009 GetNativeWindow()->Hide(); |
| 982 } | 1010 } |
| 983 native_widget_delegate_->OnNativeWidgetVisibilityChanged(window->visible()); | 1011 native_widget_delegate_->OnNativeWidgetVisibilityChanged(window->visible()); |
| 984 } | 1012 } |
| 985 | 1013 |
| 986 } // namespace views | 1014 } // namespace views |
| OLD | NEW |