Index: chrome/browser/extensions/extension_sorting.cc |
diff --git a/chrome/browser/extensions/extension_sorting.cc b/chrome/browser/extensions/extension_sorting.cc |
index d5e07db3edc707a900db49221a703db21eb53629..0264de6f8eeebf1281c73cbc1300916412fcf072 100644 |
--- a/chrome/browser/extensions/extension_sorting.cc |
+++ b/chrome/browser/extensions/extension_sorting.cc |
@@ -364,7 +364,7 @@ syncer::StringOrdinal ExtensionSorting::GetNaturalAppPageOrdinal() const { |
for (PageOrdinalMap::const_iterator it = ntp_ordinal_map_.begin(); |
it != ntp_ordinal_map_.end(); ++it) { |
- if (it->second.size() < kNaturalAppPageSize) |
+ if (CountItemsVisibleOnNtp(it->second) < kNaturalAppPageSize) |
return it->first; |
} |
@@ -445,6 +445,10 @@ syncer::StringOrdinal ExtensionSorting::PageIntegerAsStringOrdinal( |
return ntp_ordinal_map_.rbegin()->first; |
} |
+void ExtensionSorting::MarkExtensionAsHidden(const std::string& extension_id) { |
+ ntp_hidden_extensions_.insert(extension_id); |
+} |
+ |
syncer::StringOrdinal ExtensionSorting::GetMinOrMaxAppLaunchOrdinalsOnPage( |
const syncer::StringOrdinal& target_page_ordinal, |
AppLaunchOrdinalReturn return_type) const { |
@@ -610,3 +614,14 @@ syncer::StringOrdinal ExtensionSorting::ResolveCollision( |
return app_launch_ordinal.CreateBetween(app_it->first); |
} |
+size_t ExtensionSorting::CountItemsVisibleOnNtp( |
+ const AppLaunchOrdinalMap& m) const { |
+ size_t result = 0; |
+ for (AppLaunchOrdinalMap::const_iterator it = m.begin(); it != m.end(); |
+ ++it) { |
+ const std::string& id = it->second; |
+ if (ntp_hidden_extensions_.count(id) == 0) |
+ result++; |
+ } |
+ return result; |
+} |