Index: ash/shelf/shelf_window_watcher_unittest.cc |
diff --git a/ash/shelf/shelf_window_watcher_unittest.cc b/ash/shelf/shelf_window_watcher_unittest.cc |
index 836a06e730958c0bc8424572e1d297f62cb951df..ad97f4e0142a5c53b3e3b0178209d64d55c6f9b5 100644 |
--- a/ash/shelf/shelf_window_watcher_unittest.cc |
+++ b/ash/shelf/shelf_window_watcher_unittest.cc |
@@ -17,11 +17,25 @@ |
#include "ash/wm/window_resizer.h" |
#include "ash/wm/window_state.h" |
#include "base/strings/string_number_conversions.h" |
+#include "third_party/skia/include/core/SkBitmap.h" |
+#include "ui/aura/client/aura_constants.h" |
#include "ui/aura/window.h" |
#include "ui/base/hit_test.h" |
+#include "ui/base/resource/resource_bundle.h" |
+#include "ui/gfx/image/image_skia.h" |
+#include "ui/resources/grit/ui_resources.h" |
#include "ui/views/widget/widget.h" |
namespace ash { |
+namespace { |
+ |
+// Create a test 1x1 icon image with a given |color|. |
+gfx::ImageSkia CreateImageSkiaIcon(SkColor color) { |
+ SkBitmap bitmap; |
+ bitmap.allocN32Pixels(1, 1); |
+ bitmap.eraseColor(color); |
+ return gfx::ImageSkia::CreateFrom1xBitmap(bitmap); |
+} |
class ShelfWindowWatcherTest : public test::AshTestBase { |
public: |
@@ -301,6 +315,37 @@ TEST_F(ShelfWindowWatcherTest, PanelWindow) { |
EXPECT_EQ(1, model_->item_count()); |
} |
+// Ensure items use the app icon and window icon aura::Window properties. |
+TEST_F(ShelfWindowWatcherTest, ItemIcon) { |
+ // ShelfModel only has an APP_LIST item. |
+ EXPECT_EQ(1, model_->item_count()); |
+ |
+ // Create a ShelfItem for a window; it should have a default icon. |
+ std::unique_ptr<views::Widget> widget = |
+ CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect()); |
+ aura::Window* window = widget->GetNativeWindow(); |
+ ShelfID id = CreateShelfItem(window); |
+ EXPECT_EQ(2, model_->item_count()); |
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
+ gfx::Image default_image = rb.GetImageNamed(IDR_DEFAULT_FAVICON_32); |
+ EXPECT_TRUE(model_->items()[1].image.BackedBySameObjectAs( |
+ default_image.AsImageSkia())); |
+ |
+ // Setting a window icon should update the item icon. |
+ const gfx::ImageSkia red = CreateImageSkiaIcon(SK_ColorRED); |
+ window->SetProperty(aura::client::kWindowIconKey, new gfx::ImageSkia(red)); |
+ EXPECT_EQ(SK_ColorRED, model_->items()[1].image.bitmap()->getColor(0, 0)); |
+ |
+ // Setting an app icon should override the window icon. |
+ const gfx::ImageSkia blue = CreateImageSkiaIcon(SK_ColorBLUE); |
+ window->SetProperty(aura::client::kAppIconKey, new gfx::ImageSkia(blue)); |
+ EXPECT_EQ(SK_ColorBLUE, model_->items()[1].image.bitmap()->getColor(0, 0)); |
+ |
+ // Clearing the app icon should restore the window icon to the shelf item. |
+ window->ClearProperty(aura::client::kAppIconKey); |
+ EXPECT_EQ(SK_ColorRED, model_->items()[1].image.bitmap()->getColor(0, 0)); |
+} |
+ |
TEST_F(ShelfWindowWatcherTest, DontCreateShelfEntriesForChildWindows) { |
const int initial_item_count = model_->item_count(); |
@@ -350,4 +395,5 @@ TEST_F(ShelfWindowWatcherSessionStartTest, PreExistingWindow) { |
EXPECT_EQ(2, model->item_count()); |
} |
+} // namespace |
} // namespace ash |