Index: ui/views/mus/native_widget_mus.cc |
diff --git a/ui/views/mus/native_widget_mus.cc b/ui/views/mus/native_widget_mus.cc |
index 10fa38555069458e4104fa3c7b0dbe7ee4c6ea8e..9b99d6bd4aeda9e11a24d3a5d9dbad17da8be47c 100644 |
--- a/ui/views/mus/native_widget_mus.cc |
+++ b/ui/views/mus/native_widget_mus.cc |
@@ -196,6 +196,17 @@ int ResizeBehaviorFromDelegate(WidgetDelegate* delegate) { |
return behavior; |
} |
+// Returns the 1x window app icon or an empty SkBitmap if no icon is available. |
+// TODO(jamescook): Support other scale factors. |
+SkBitmap AppIconFromDelegate(WidgetDelegate* delegate) { |
+ if (!delegate) |
+ return SkBitmap(); |
+ gfx::ImageSkia app_icon = delegate->GetWindowAppIcon(); |
+ if (app_icon.isNull()) |
+ return SkBitmap(); |
+ return app_icon.GetRepresentation(1.f).sk_bitmap(); |
+} |
+ |
} // namespace |
class NativeWidgetMus::MusWindowObserver : public mus::WindowObserver { |
@@ -352,6 +363,12 @@ void NativeWidgetMus::ConfigurePropertiesForNewWindow( |
(*properties)[mus::mojom::WindowManager::kResizeBehavior_Property] = |
mojo::TypeConverter<const std::vector<uint8_t>, int32_t>::Convert( |
ResizeBehaviorFromDelegate(init_params.delegate)); |
+ SkBitmap app_icon = AppIconFromDelegate(init_params.delegate); |
+ if (!app_icon.isNull()) { |
+ (*properties)[mus::mojom::WindowManager::kWindowAppIcon_Property] = |
+ mojo::TypeConverter<const std::vector<uint8_t>, SkBitmap>::Convert( |
+ app_icon); |
+ } |
} |
//////////////////////////////////////////////////////////////////////////////// |
@@ -542,7 +559,18 @@ bool NativeWidgetMus::SetWindowTitle(const base::string16& title) { |
void NativeWidgetMus::SetWindowIcons(const gfx::ImageSkia& window_icon, |
const gfx::ImageSkia& app_icon) { |
- // NOTIMPLEMENTED(); |
+ const char* const kWindowAppIcon_Property = |
+ mus::mojom::WindowManager::kWindowAppIcon_Property; |
+ |
+ if (!app_icon.isNull()) { |
+ // Send the app icon 1x bitmap to the window manager. |
+ // TODO(jamescook): Support other scale factors. |
+ window_->SetSharedProperty<SkBitmap>( |
+ kWindowAppIcon_Property, app_icon.GetRepresentation(1.f).sk_bitmap()); |
+ } else if (window_->HasSharedProperty(kWindowAppIcon_Property)) { |
+ // Remove the existing icon. |
+ window_->ClearSharedProperty(kWindowAppIcon_Property); |
+ } |
} |
void NativeWidgetMus::InitModalType(ui::ModalType modal_type) { |