Index: chrome/browser/themes/browser_theme_pack.cc |
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc |
index 2c9530241ab8eb61d9e4765249908444cb478df6..7787fc0d290a4dd38c82e40f8c2a615a70613dd2 100644 |
--- a/chrome/browser/themes/browser_theme_pack.cc |
+++ b/chrome/browser/themes/browser_theme_pack.cc |
@@ -43,7 +43,7 @@ namespace { |
// Version number of the current theme pack. We just throw out and rebuild |
// theme packs that aren't int-equal to this. Increment this number if you |
// change default theme assets. |
-const int kThemePackVersion = 34; |
+const int kThemePackVersion = 35; |
// IDs that are in the DataPack won't clash with the positive integer |
// uint16. kHeaderID should always have the maximum value because we want the |
@@ -238,6 +238,24 @@ int GetPersistentIDByIDR(int idr) { |
return (it == lookup_table->end()) ? -1 : it->second; |
} |
+// Returns the maximum persistent id. |
+int GetMaxPersistentId() { |
+ static int max_prs_id = -1; |
+ if (max_prs_id == -1) { |
+ for (size_t i = 0; i < kPersistingImagesLength; ++i) { |
+ if (kPersistingImages[i].persistent_id > max_prs_id) |
+ max_prs_id = kPersistingImages[i].persistent_id; |
+ } |
+#if defined(USE_ASH) && !defined(OS_CHROMEOS) |
+ for (size_t i = 0; i < kPersistingImagesDesktopAuraLength; ++i) { |
+ if (kPersistingImagesDesktopAura[i].persistent_id > max_prs_id) |
+ max_prs_id = kPersistingImagesDesktopAura[i].persistent_id; |
+ } |
+#endif |
+ } |
+ return max_prs_id; |
+} |
+ |
// Returns true if the scales in |input| match those in |expected|. |
// The order must match as the index is used in determining the raw id. |
bool InputScalesValid(const base::StringPiece& input, |
@@ -1526,7 +1544,7 @@ int BrowserThemePack::GetRawIDByPersistentID( |
for (size_t i = 0; i < scale_factors_.size(); ++i) { |
if (scale_factors_[i] == scale_factor) |
- return static_cast<int>(kPersistingImagesLength * i) + prs_id; |
+ return ((GetMaxPersistentId() + 1) * i) + prs_id; |
} |
return -1; |
} |