Index: chrome/browser/extensions/extension_prefs.cc |
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc |
index 53bb982d1fe8d032ac5927aee306d379b69da930..9a9b55f7bcad01d7d133a2e468a6cb782a326adb 100644 |
--- a/chrome/browser/extensions/extension_prefs.cc |
+++ b/chrome/browser/extensions/extension_prefs.cc |
@@ -93,10 +93,12 @@ const char kWebStoreLogin[] = "extensions.webstore_login"; |
const char kPrefLaunchType[] = "launchType"; |
// A preference determining the order of which the apps appear on the NTP. |
-const char kPrefAppLaunchIndex[] = "app_launcher_index"; |
+const char kPrefAppLaunchIndexDepreciated[] = "app_launcher_index"; |
Mihai Parparita -not on Chrome
2011/10/07 23:15:12
Typo (use "Deprecated" instead of "Depreciated").
csharp
2011/11/11 18:13:32
Done.
|
+const char kPrefAppLaunchIndex[] = "app_launcher_index_str"; |
// A preference determining the page on which an app appears in the NTP. |
-const char kPrefPageIndex[] = "page_index"; |
+const char kPrefPageIndexDepreciated[] = "page_index"; |
+const char kPrefPageIndex[] = "page_index_str"; |
// A preference specifying if the user dragged the app on the NTP. |
const char kPrefUserDraggedApp[] = "user_dragged_app_ntp"; |
@@ -398,6 +400,16 @@ bool ExtensionPrefs::ReadExtensionPrefList( |
return true; |
} |
+bool ExtensionPrefs::ReadExtensionPrefString( |
+ const std::string& extension_id, const std::string& pref_key, |
+ std::string* out_value) { |
+ const DictionaryValue* ext = GetExtensionPref(extension_id); |
+ if (!ext || !ext->GetString(pref_key, out_value)) |
+ return false; |
+ |
+ return true; |
+} |
+ |
bool ExtensionPrefs::ReadExtensionPrefURLPatternSet( |
const std::string& extension_id, |
const std::string& pref_key, |
@@ -758,6 +770,30 @@ void ExtensionPrefs::MigratePermissions(const ExtensionIdSet& extension_ids) { |
} |
} |
+void ExtensionPrefs::MigrateAppIndex(const ExtensionIdSet& extension_ids) { |
+ for (ExtensionIdSet::const_iterator ext_id = extension_ids.begin(); |
+ ext_id != extension_ids.end(); ++ext_id) { |
+ std::string index; |
+ if (ReadExtensionPrefString(*ext_id, kPrefPageIndex, &index)) { |
Mihai Parparita -not on Chrome
2011/10/07 23:15:12
I'm confused about this migration code, since this
csharp
2011/11/11 18:13:32
Done.
|
+ int old_index; |
+ if (ReadExtensionPrefInteger(*ext_id, |
+ kPrefPageIndexDepreciated, |
+ &old_index)) { |
+ SetPageIndex(*ext_id, base::IntToString(old_index)); |
+ } |
+ } |
+ |
+ if (ReadExtensionPrefString(*ext_id, kPrefAppLaunchIndex, &index)) { |
+ int old_index; |
+ if (ReadExtensionPrefInteger(*ext_id, |
+ kPrefPageIndexDepreciated, |
+ &old_index)) { |
+ SetAppLaunchIndex(*ext_id, base::IntToString(old_index)); |
+ } |
+ } |
+ } |
+} |
+ |
ExtensionPermissionSet* ExtensionPrefs::GetGrantedPermissions( |
const std::string& extension_id) { |
CHECK(Extension::IdIsValid(extension_id)); |
@@ -957,7 +993,7 @@ void ExtensionPrefs::OnExtensionInstalled( |
const Extension* extension, |
Extension::State initial_state, |
bool from_webstore, |
- int page_index) { |
+ std::string page_index) { |
const std::string& id = extension->id(); |
CHECK(Extension::IdIsValid(id)); |
ScopedExtensionPrefUpdate update(prefs_, id); |
@@ -989,12 +1025,12 @@ void ExtensionPrefs::OnExtensionInstalled( |
} |
if (extension->is_app()) { |
- if (page_index == -1) |
+ if (page_index == extension_misc::kUnsetIndex) |
page_index = GetNaturalAppPageIndex(); |
extension_dict->Set(kPrefPageIndex, |
- Value::CreateIntegerValue(page_index)); |
+ Value::CreateStringValue(page_index)); |
extension_dict->Set(kPrefAppLaunchIndex, |
- Value::CreateIntegerValue(GetNextAppLaunchIndex(page_index))); |
+ Value::CreateStringValue(GetNextAppLaunchIndex(page_index))); |
} |
extension_pref_value_map_->RegisterExtension( |
id, install_time, initial_state == Extension::ENABLED); |
@@ -1327,59 +1363,73 @@ void ExtensionPrefs::SetWebStoreLogin(const std::string& login) { |
SavePrefs(); |
} |
-int ExtensionPrefs::GetAppLaunchIndex(const std::string& extension_id) { |
- int value; |
- if (ReadExtensionPrefInteger(extension_id, kPrefAppLaunchIndex, &value)) |
+std::string ExtensionPrefs::GetAppLaunchIndex(const std::string& extension_id) { |
+ std::string value; |
+ if (ReadExtensionPrefString(extension_id, kPrefAppLaunchIndex, &value)) |
return value; |
- return -1; |
+ return extension_misc::kUnsetIndex; |
} |
void ExtensionPrefs::SetAppLaunchIndex(const std::string& extension_id, |
- int index) { |
+ const std::string& index) { |
UpdateExtensionPref(extension_id, kPrefAppLaunchIndex, |
- Value::CreateIntegerValue(index)); |
+ Value::CreateStringValue(index)); |
} |
-int ExtensionPrefs::GetNextAppLaunchIndex(int on_page) { |
+std::string ExtensionPrefs::GetNextAppLaunchIndex(std::string on_page) { |
const DictionaryValue* extensions = prefs_->GetDictionary(kExtensionsPref); |
if (!extensions) |
- return 0; |
+ return "0"; |
- int max_value = -1; |
+ std::string max_value = extension_misc::kUnsetIndex; |
for (DictionaryValue::key_iterator extension_id = extensions->begin_keys(); |
extension_id != extensions->end_keys(); ++extension_id) { |
- int value = GetAppLaunchIndex(*extension_id); |
- int page = GetPageIndex(*extension_id); |
- if (page == on_page && value > max_value) |
+ std::string value = GetAppLaunchIndex(*extension_id); |
+ std::string page = GetPageIndex(*extension_id); |
+ |
+ int max_value_int, value_int; |
+ base::StringToInt(max_value, &max_value_int); |
+ base::StringToInt(value, &value_int); |
+ if (page == on_page && max_value_int < value_int) |
max_value = value; |
} |
- return max_value + 1; |
+ |
+ int new_value; |
+ base::StringToInt(max_value, &new_value); |
akalin
2011/10/07 17:31:16
So all I'm seeing are conversions from int->string
|
+ ++new_value; |
+ |
+ return base::IntToString(new_value); |
} |
-int ExtensionPrefs::GetNaturalAppPageIndex() { |
+std::string ExtensionPrefs::GetNaturalAppPageIndex() { |
const DictionaryValue* extensions = prefs_->GetDictionary(kExtensionsPref); |
if (!extensions) |
- return 0; |
+ return "0"; |
- std::map<int, int> page_counts; |
+ std::map<std::string, int> page_counts; |
for (DictionaryValue::key_iterator extension_id = extensions->begin_keys(); |
extension_id != extensions->end_keys(); ++extension_id) { |
- int page_index = GetPageIndex(*extension_id); |
- if (page_index >= 0) |
- page_counts[page_index] = page_counts[page_index] + 1; |
+ std::string page_index = GetPageIndex(*extension_id); |
+ page_counts[page_index] = page_counts[page_index] + 1; |
} |
- for (int i = 0; ; i++) { |
- std::map<int, int>::const_iterator it = page_counts.find(i); |
- if (it == page_counts.end() || it->second < kNaturalAppPageSize) |
- return i; |
+ |
+ std::map<std::string, int>::const_iterator it = page_counts.begin(); |
+ for (int i = 0; it != page_counts.end(); ++it, ++i) { |
+ if (it->second < kNaturalAppPageSize) { |
+ return base::IntToString(i); |
+ } |
} |
+ |
+ // Add a new page |
+ return base::IntToString(page_counts.size()); |
} |
void ExtensionPrefs::SetAppLauncherOrder( |
const std::vector<std::string>& extension_ids) { |
- for (size_t i = 0; i < extension_ids.size(); ++i) |
- SetAppLaunchIndex(extension_ids.at(i), i); |
+ for (size_t i = 0; i < extension_ids.size(); ++i) { |
+ SetAppLaunchIndex(extension_ids.at(i), base::IntToString(i)); |
+ } |
NotificationService::current()->Notify( |
chrome::NOTIFICATION_EXTENSION_LAUNCHER_REORDERED, |
@@ -1387,15 +1437,19 @@ void ExtensionPrefs::SetAppLauncherOrder( |
NotificationService::NoDetails()); |
} |
-int ExtensionPrefs::GetPageIndex(const std::string& extension_id) { |
- int value = -1; |
- ReadExtensionPrefInteger(extension_id, kPrefPageIndex, &value); |
- return value; |
+std::string ExtensionPrefs::GetPageIndex(const std::string& extension_id) { |
+ std::string value; |
+ if (ReadExtensionPrefString(extension_id, kPrefPageIndex, &value)) { |
+ return value; |
+ } |
+ |
+ return extension_misc::kUnsetIndex; |
} |
-void ExtensionPrefs::SetPageIndex(const std::string& extension_id, int index) { |
+void ExtensionPrefs::SetPageIndex(const std::string& extension_id, |
+ const std::string& page_index) { |
UpdateExtensionPref(extension_id, kPrefPageIndex, |
- Value::CreateIntegerValue(index)); |
+ Value::CreateStringValue(page_index)); |
} |
bool ExtensionPrefs::WasAppDraggedByUser(const std::string& extension_id) { |
@@ -1543,6 +1597,7 @@ void ExtensionPrefs::InitPrefStore(bool extensions_disabled) { |
FixMissingPrefs(extension_ids); |
MigratePermissions(extension_ids); |
+ MigrateAppIndex(extension_ids); |
// Store extension controlled preference values in the |
// |extension_pref_value_map_|, which then informs the subscribers |