| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "build/build_config.h" | 5 #include "build/build_config.h" |
| 6 | 6 |
| 7 #if defined(TOOLKIT_GTK) | 7 #if defined(TOOLKIT_GTK) |
| 8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
| 9 #endif | 9 #endif |
| 10 | 10 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "chrome/common/chrome_notification_types.h" | 23 #include "chrome/common/chrome_notification_types.h" |
| 24 #include "chrome/common/url_constants.h" | 24 #include "chrome/common/url_constants.h" |
| 25 #include "chrome/test/base/ui_test_utils.h" | 25 #include "chrome/test/base/ui_test_utils.h" |
| 26 #include "content/public/browser/notification_service.h" | 26 #include "content/public/browser/notification_service.h" |
| 27 #include "content/public/browser/web_contents.h" | 27 #include "content/public/browser/web_contents.h" |
| 28 #include "content/public/test/browser_test_utils.h" | 28 #include "content/public/test/browser_test_utils.h" |
| 29 #include "grit/theme_resources.h" | 29 #include "grit/theme_resources.h" |
| 30 #include "ui/base/resource/resource_bundle.h" | 30 #include "ui/base/resource/resource_bundle.h" |
| 31 #include "ui/gfx/rect.h" | 31 #include "ui/gfx/rect.h" |
| 32 #include "ui/gfx/size.h" | 32 #include "ui/gfx/size.h" |
| 33 #include "ui/gfx/size_conversions.h" |
| 33 #include "ui/gfx/image/image_skia.h" | 34 #include "ui/gfx/image/image_skia.h" |
| 34 #include "ui/gfx/image/image_skia_operations.h" | 35 #include "ui/gfx/image/image_skia_operations.h" |
| 35 #include "ui/gfx/skia_util.h" | 36 #include "ui/gfx/skia_util.h" |
| 36 | 37 |
| 37 #if defined (OS_MACOSX) | 38 #if defined (OS_MACOSX) |
| 38 #include "ui/gfx/image/image_unittest_util.h" | 39 #include "ui/gfx/image/image_unittest_util.h" |
| 39 #endif | 40 #endif |
| 40 | 41 |
| 41 using content::WebContents; | 42 using content::WebContents; |
| 42 | 43 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 // Tell the extension to update the icon using ImageData object. | 163 // Tell the extension to update the icon using ImageData object. |
| 163 GetBrowserActionsBar().Press(0); | 164 GetBrowserActionsBar().Press(0); |
| 164 ASSERT_TRUE(catcher.GetNextResult()); | 165 ASSERT_TRUE(catcher.GetNextResult()); |
| 165 | 166 |
| 166 action_icon = icon_factory.GetIcon(0); | 167 action_icon = icon_factory.GetIcon(0); |
| 167 | 168 |
| 168 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); | 169 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); |
| 169 EXPECT_GT(action_icon_current_id, action_icon_last_id); | 170 EXPECT_GT(action_icon_current_id, action_icon_last_id); |
| 170 action_icon_last_id = action_icon_current_id; | 171 action_icon_last_id = action_icon_current_id; |
| 171 | 172 |
| 172 EXPECT_FALSE( | |
| 173 action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P)); | |
| 174 | |
| 175 EXPECT_TRUE(ImagesAreEqualAtScale( | 173 EXPECT_TRUE(ImagesAreEqualAtScale( |
| 176 AddBackgroundForViews(*action_icon.ToImageSkia()), | 174 AddBackgroundForViews(*action_icon.ToImageSkia()), |
| 177 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), | 175 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), |
| 178 ui::SCALE_FACTOR_100P)); | 176 ui::SCALE_FACTOR_100P)); |
| 179 | 177 |
| 180 // Tell the extension to update the icon using path. | 178 // Tell the extension to update the icon using path. |
| 181 GetBrowserActionsBar().Press(0); | 179 GetBrowserActionsBar().Press(0); |
| 182 ASSERT_TRUE(catcher.GetNextResult()); | 180 ASSERT_TRUE(catcher.GetNextResult()); |
| 183 | 181 |
| 184 action_icon = icon_factory.GetIcon(0); | 182 action_icon = icon_factory.GetIcon(0); |
| 185 | 183 |
| 186 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); | 184 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); |
| 187 EXPECT_GT(action_icon_current_id, action_icon_last_id); | 185 EXPECT_GT(action_icon_current_id, action_icon_last_id); |
| 188 action_icon_last_id = action_icon_current_id; | 186 action_icon_last_id = action_icon_current_id; |
| 189 | 187 |
| 190 EXPECT_FALSE( | |
| 191 action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P)); | |
| 192 | |
| 193 EXPECT_TRUE(ImagesAreEqualAtScale( | 188 EXPECT_TRUE(ImagesAreEqualAtScale( |
| 194 AddBackgroundForViews(*action_icon.ToImageSkia()), | 189 AddBackgroundForViews(*action_icon.ToImageSkia()), |
| 195 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), | 190 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), |
| 196 ui::SCALE_FACTOR_100P)); | 191 ui::SCALE_FACTOR_100P)); |
| 197 | 192 |
| 198 // Tell the extension to update the icon using dictionary of ImageData | 193 // Tell the extension to update the icon using dictionary of ImageData |
| 199 // objects. | 194 // objects. |
| 200 GetBrowserActionsBar().Press(0); | 195 GetBrowserActionsBar().Press(0); |
| 201 ASSERT_TRUE(catcher.GetNextResult()); | 196 ASSERT_TRUE(catcher.GetNextResult()); |
| 202 | 197 |
| 203 action_icon = icon_factory.GetIcon(0); | 198 action_icon = icon_factory.GetIcon(0); |
| 204 | 199 |
| 205 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); | 200 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); |
| 206 EXPECT_GT(action_icon_current_id, action_icon_last_id); | 201 EXPECT_GT(action_icon_current_id, action_icon_last_id); |
| 207 action_icon_last_id = action_icon_current_id; | 202 action_icon_last_id = action_icon_current_id; |
| 208 | 203 |
| 209 EXPECT_TRUE( | |
| 210 action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P)); | |
| 211 | |
| 212 EXPECT_TRUE(ImagesAreEqualAtScale( | 204 EXPECT_TRUE(ImagesAreEqualAtScale( |
| 213 AddBackgroundForViews(*action_icon.ToImageSkia()), | 205 AddBackgroundForViews(*action_icon.ToImageSkia()), |
| 214 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), | 206 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), |
| 215 ui::SCALE_FACTOR_100P)); | 207 ui::SCALE_FACTOR_100P)); |
| 216 | 208 |
| 217 // Tell the extension to update the icon using dictionary of paths. | 209 // Tell the extension to update the icon using dictionary of paths. |
| 218 GetBrowserActionsBar().Press(0); | 210 GetBrowserActionsBar().Press(0); |
| 219 ASSERT_TRUE(catcher.GetNextResult()); | 211 ASSERT_TRUE(catcher.GetNextResult()); |
| 220 | 212 |
| 221 action_icon = icon_factory.GetIcon(0); | 213 action_icon = icon_factory.GetIcon(0); |
| 222 | 214 |
| 223 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); | 215 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); |
| 224 EXPECT_GT(action_icon_current_id, action_icon_last_id); | 216 EXPECT_GT(action_icon_current_id, action_icon_last_id); |
| 225 action_icon_last_id = action_icon_current_id; | 217 action_icon_last_id = action_icon_current_id; |
| 226 | 218 |
| 227 EXPECT_TRUE( | |
| 228 action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P)); | |
| 229 | |
| 230 EXPECT_TRUE(ImagesAreEqualAtScale( | 219 EXPECT_TRUE(ImagesAreEqualAtScale( |
| 231 AddBackgroundForViews(*action_icon.ToImageSkia()), | 220 AddBackgroundForViews(*action_icon.ToImageSkia()), |
| 232 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), | 221 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), |
| 233 ui::SCALE_FACTOR_100P)); | 222 ui::SCALE_FACTOR_100P)); |
| 234 | 223 |
| 235 // Tell the extension to update the icon using dictionary of ImageData | 224 // Tell the extension to update the icon using dictionary of ImageData |
| 236 // objects, but setting only size 19. | 225 // objects, but setting only size 19. |
| 237 GetBrowserActionsBar().Press(0); | 226 GetBrowserActionsBar().Press(0); |
| 238 ASSERT_TRUE(catcher.GetNextResult()); | 227 ASSERT_TRUE(catcher.GetNextResult()); |
| 239 | 228 |
| 240 action_icon = icon_factory.GetIcon(0); | 229 action_icon = icon_factory.GetIcon(0); |
| 241 | 230 |
| 242 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); | 231 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); |
| 243 EXPECT_GT(action_icon_current_id, action_icon_last_id); | 232 EXPECT_GT(action_icon_current_id, action_icon_last_id); |
| 244 action_icon_last_id = action_icon_current_id; | 233 action_icon_last_id = action_icon_current_id; |
| 245 | 234 |
| 246 EXPECT_FALSE( | |
| 247 action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P)); | |
| 248 | |
| 249 EXPECT_TRUE(ImagesAreEqualAtScale( | 235 EXPECT_TRUE(ImagesAreEqualAtScale( |
| 250 AddBackgroundForViews(*action_icon.ToImageSkia()), | 236 AddBackgroundForViews(*action_icon.ToImageSkia()), |
| 251 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), | 237 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), |
| 252 ui::SCALE_FACTOR_100P)); | 238 ui::SCALE_FACTOR_100P)); |
| 253 | 239 |
| 240 const float scale = ui::GetScaleFactorScale(ui::SCALE_FACTOR_200P); |
| 241 const gfx::Size scaled_up_pixel_size = gfx::ToFlooredSize( |
| 242 action_icon.ToImageSkia()->size().Scale(scale)); |
| 243 |
| 244 SkBitmap action_icon_scaled_up = skia::ImageOperations::Resize( |
| 245 *action_icon.ToSkBitmap(), skia::ImageOperations::RESIZE_LANCZOS3, |
| 246 scaled_up_pixel_size.width(), scaled_up_pixel_size.height()); |
| 247 |
| 248 const gfx::ImageSkia* action_icon_skia = action_icon.ToImageSkia(); |
| 249 EXPECT_TRUE(gfx::BitmapsAreEqual( |
| 250 action_icon_scaled_up, |
| 251 action_icon_skia->GetRepresentation(ui::SCALE_FACTOR_200P).sk_bitmap())); |
| 252 |
| 254 // Tell the extension to update the icon using dictionary of paths, but | 253 // Tell the extension to update the icon using dictionary of paths, but |
| 255 // setting only size 19. | 254 // setting only size 19. |
| 256 GetBrowserActionsBar().Press(0); | 255 GetBrowserActionsBar().Press(0); |
| 257 ASSERT_TRUE(catcher.GetNextResult()); | 256 ASSERT_TRUE(catcher.GetNextResult()); |
| 258 | 257 |
| 259 action_icon = icon_factory.GetIcon(0); | 258 action_icon = icon_factory.GetIcon(0); |
| 260 | 259 |
| 261 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); | 260 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); |
| 262 EXPECT_GT(action_icon_current_id, action_icon_last_id); | 261 EXPECT_GT(action_icon_current_id, action_icon_last_id); |
| 263 action_icon_last_id = action_icon_current_id; | 262 action_icon_last_id = action_icon_current_id; |
| 264 | 263 |
| 265 EXPECT_FALSE( | |
| 266 action_icon.ToImageSkia()->HasRepresentation(ui::SCALE_FACTOR_200P)); | |
| 267 | |
| 268 EXPECT_TRUE(ImagesAreEqualAtScale( | 264 EXPECT_TRUE(ImagesAreEqualAtScale( |
| 269 AddBackgroundForViews(*action_icon.ToImageSkia()), | 265 AddBackgroundForViews(*action_icon.ToImageSkia()), |
| 270 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), | 266 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), |
| 271 ui::SCALE_FACTOR_100P)); | 267 ui::SCALE_FACTOR_100P)); |
| 272 | 268 |
| 273 // Tell the extension to update the icon using dictionary of ImageData | 269 // Tell the extension to update the icon using dictionary of ImageData |
| 274 // objects, but setting only size 38. | 270 // objects, but setting only size 38. |
| 275 GetBrowserActionsBar().Press(0); | 271 GetBrowserActionsBar().Press(0); |
| 276 ASSERT_TRUE(catcher.GetNextResult()); | 272 ASSERT_TRUE(catcher.GetNextResult()); |
| 277 | 273 |
| 278 action_icon = icon_factory.GetIcon(0); | 274 action_icon = icon_factory.GetIcon(0); |
| 279 | 275 |
| 280 const gfx::ImageSkia* action_icon_skia = action_icon.ToImageSkia(); | |
| 281 | |
| 282 EXPECT_FALSE(action_icon_skia->HasRepresentation(ui::SCALE_FACTOR_100P)); | |
| 283 EXPECT_TRUE(action_icon_skia->HasRepresentation(ui::SCALE_FACTOR_200P)); | |
| 284 | |
| 285 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); | 276 action_icon_current_id = action_icon.ToSkBitmap()->getGenerationID(); |
| 286 EXPECT_GT(action_icon_current_id, action_icon_last_id); | 277 EXPECT_GT(action_icon_current_id, action_icon_last_id); |
| 287 action_icon_last_id = action_icon_current_id; | 278 action_icon_last_id = action_icon_current_id; |
| 288 | 279 |
| 289 EXPECT_TRUE(gfx::BitmapsAreEqual( | 280 EXPECT_TRUE(ImagesAreEqualAtScale( |
| 290 *action_icon.ToSkBitmap(), | 281 AddBackgroundForViews(*action_icon.ToImageSkia()), |
| 291 action_icon_skia->GetRepresentation(ui::SCALE_FACTOR_200P).sk_bitmap())); | 282 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), |
| 283 ui::SCALE_FACTOR_100P)); |
| 292 | 284 |
| 285 #if !defined(TOOLKIT_GTK) |
| 293 EXPECT_TRUE(ImagesAreEqualAtScale( | 286 EXPECT_TRUE(ImagesAreEqualAtScale( |
| 294 AddBackgroundForViews(*action_icon_skia), | 287 AddBackgroundForViews(*action_icon.ToImageSkia()), |
| 295 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), | 288 *GetBrowserActionsBar().GetIcon(0).ToImageSkia(), |
| 296 ui::SCALE_FACTOR_200P)); | 289 ui::SCALE_FACTOR_200P)); |
| 290 #endif |
| 297 | 291 |
| 298 // Try setting icon with empty dictionary of ImageData objects. | 292 // Try setting icon with empty dictionary of ImageData objects. |
| 299 GetBrowserActionsBar().Press(0); | 293 GetBrowserActionsBar().Press(0); |
| 300 ASSERT_FALSE(catcher.GetNextResult()); | 294 ASSERT_FALSE(catcher.GetNextResult()); |
| 301 EXPECT_EQ(kEmptyImageDataError, catcher.message()); | 295 EXPECT_EQ(kEmptyImageDataError, catcher.message()); |
| 302 | 296 |
| 303 // Try setting icon with empty dictionary of path objects. | 297 // Try setting icon with empty dictionary of path objects. |
| 304 GetBrowserActionsBar().Press(0); | 298 GetBrowserActionsBar().Press(0); |
| 305 ASSERT_FALSE(catcher.GetNextResult()); | 299 ASSERT_FALSE(catcher.GetNextResult()); |
| 306 EXPECT_EQ(kEmptyPathError, catcher.message()); | 300 EXPECT_EQ(kEmptyPathError, catcher.message()); |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 646 ASSERT_TRUE(catcher.GetNextResult()); | 640 ASSERT_TRUE(catcher.GetNextResult()); |
| 647 | 641 |
| 648 // Test the getters for a specific tab. | 642 // Test the getters for a specific tab. |
| 649 ui_test_utils::NavigateToURL(browser(), | 643 ui_test_utils::NavigateToURL(browser(), |
| 650 GURL(extension->GetResourceURL("update2.html"))); | 644 GURL(extension->GetResourceURL("update2.html"))); |
| 651 ASSERT_TRUE(catcher.GetNextResult()); | 645 ASSERT_TRUE(catcher.GetNextResult()); |
| 652 } | 646 } |
| 653 | 647 |
| 654 } // namespace | 648 } // namespace |
| 655 } // namespace extensions | 649 } // namespace extensions |
| OLD | NEW |