summaryrefslogtreecommitdiffstats
path: root/gfx/skia_util.cc
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-16 21:39:29 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-16 21:39:29 +0000
commit18539ee85b09a1398eb545a46f137bf336670202 (patch)
tree1f07ae1a40e8782b51b586d1f880fd154ad14df5 /gfx/skia_util.cc
parent90c62d6ab15826ff2177bae02dea70ba30125ad1 (diff)
downloadchromium_src-18539ee85b09a1398eb545a46f137bf336670202.zip
chromium_src-18539ee85b09a1398eb545a46f137bf336670202.tar.gz
chromium_src-18539ee85b09a1398eb545a46f137bf336670202.tar.bz2
Fix problem with extension context menu items losing top-level icon.
If an extension adds some context menu items, then removes them all, and adds some more, instead of their actual icon the new items will get the default extension icon in context menus. This is because we use the caching feature of ImageLoadingTracker and get an immediate callback from LoadImage before we've put the request in pending_icons_. BUG=53543 TEST=Steps are outlined in bug report. Review URL: http://codereview.chromium.org/3425007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59726 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gfx/skia_util.cc')
-rw-r--r--gfx/skia_util.cc21
1 files changed, 20 insertions, 1 deletions
diff --git a/gfx/skia_util.cc b/gfx/skia_util.cc
index 13ef4d9..865f8fda 100644
--- a/gfx/skia_util.cc
+++ b/gfx/skia_util.cc
@@ -5,6 +5,7 @@
#include "gfx/skia_util.h"
#include "gfx/rect.h"
+#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/skia/include/core/SkColorPriv.h"
#include "third_party/skia/include/core/SkShader.h"
#include "third_party/skia/include/effects/SkGradientShader.h"
@@ -38,5 +39,23 @@ SkShader* CreateGradientShader(int start_point,
grad_points, grad_colors, NULL, 2, SkShader::kRepeat_TileMode);
}
-} // namespace gfx
+bool BitmapsAreEqual(const SkBitmap& bitmap1, const SkBitmap& bitmap2) {
+ void* addr1 = NULL;
+ void* addr2 = NULL;
+ size_t size1 = 0;
+ size_t size2 = 0;
+
+ bitmap1.lockPixels();
+ addr1 = bitmap1.getAddr32(0, 0);
+ size1 = bitmap1.getSize();
+ bitmap1.unlockPixels();
+
+ bitmap2.lockPixels();
+ addr2 = bitmap2.getAddr32(0, 0);
+ size2 = bitmap2.getSize();
+ bitmap2.unlockPixels();
+ return (size1 == size2) && (0 == memcmp(addr1, addr2, bitmap1.getSize()));
+}
+
+} // namespace gfx