Index: chrome/browser/chromeos/gdata/drive_webapps_registry.cc |
diff --git a/chrome/browser/chromeos/gdata/drive_webapps_registry.cc b/chrome/browser/chromeos/gdata/drive_webapps_registry.cc |
index 1b0e051bbdb7e05c9a2cd77975031828e2c02af3..f201e00719135f8e6b8539673cf115d9d420d536 100644 |
--- a/chrome/browser/chromeos/gdata/drive_webapps_registry.cc |
+++ b/chrome/browser/chromeos/gdata/drive_webapps_registry.cc |
@@ -6,6 +6,7 @@ |
#include "base/string_util.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/chromeos/gdata/drive_api_parser.h" |
#include "content/public/browser/browser_thread.h" |
using content::BrowserThread; |
@@ -33,6 +34,12 @@ std::string GetWebStoreIdFromUrl(const GURL& url) { |
return components[components.size() - 1]; |
} |
+// TODO(kochi): This is duplicate from gdata_wapi_parser.cc. |
+bool SortBySize(const InstalledApp::IconList::value_type& a, |
+ const InstalledApp::IconList::value_type& b) { |
+ return a.first < b.first; |
+} |
+ |
} // namespace |
// DriveWebAppInfo struct implementation. |
@@ -126,7 +133,8 @@ std::set<std::string> DriveWebAppsRegistry::GetExtensionsForWebStoreApp( |
return extensions; |
} |
-void DriveWebAppsRegistry::UpdateFromFeed(AccountMetadataFeed* metadata) { |
+void DriveWebAppsRegistry::UpdateFromFeed( |
+ const AccountMetadataFeed* metadata) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
url_to_name_map_.clear(); |
@@ -182,6 +190,72 @@ void DriveWebAppsRegistry::UpdateFromFeed(AccountMetadataFeed* metadata) { |
} |
} |
+void DriveWebAppsRegistry::UpdateFromApplicationList(const AppList* applist) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ url_to_name_map_.clear(); |
+ STLDeleteValues(&webapp_extension_map_); |
+ STLDeleteValues(&webapp_mimetypes_map_); |
+ for (ScopedVector<AppResource>::const_iterator it = applist->items().begin(); |
+ it != applist->items().end(); ++it) { |
satorux1
2012/08/10 17:26:02
matter of taste, but the following is more concise
kochi
2012/08/13 09:12:24
Done.
The same is done for UpdateFeed().
|
+ const AppResource* app = *it; |
satorux1
2012/08/10 17:26:02
maybe const AppResource& app = *applist->items()[
kochi
2012/08/13 09:12:24
Done.
The same is done for UpdateFeed().
|
+ if (app->product_url().is_empty()) |
+ continue; |
+ |
+ InstalledApp::IconList app_icons; |
+ InstalledApp::IconList document_icons; |
+ for (ScopedVector<DriveAppIcon>::const_iterator it = app->icons().begin(); |
satorux1
2012/08/10 17:26:02
|it| is already used in the outer loop. please use
kochi
2012/08/13 09:12:24
This |it| removed in favor of size_t loop.
|
+ it != app->icons().end(); ++it) { |
+ DriveAppIcon* icon = *it; |
satorux1
2012/08/10 17:26:02
const reference?
kochi
2012/08/13 09:12:24
Done.
|
+ if (icon->icon_url().is_empty()) |
+ continue; |
+ if (icon->category() == DriveAppIcon::APPLICATION) |
+ app_icons.push_back(std::make_pair(icon->icon_side_length(), |
+ icon->icon_url())); |
+ if (icon->category() == DriveAppIcon::DOCUMENT) |
+ document_icons.push_back(std::make_pair(icon->icon_side_length(), |
+ icon->icon_url())); |
+ } |
+ std::sort(app_icons.begin(), app_icons.end(), SortBySize); |
+ std::sort(document_icons.begin(), document_icons.end(), SortBySize); |
+ |
+ url_to_name_map_.insert( |
+ std::make_pair(app->product_url(), UTF8ToUTF16(app->name()))); |
+ AddAppSelectorList(app->product_url(), |
+ app_icons, |
+ document_icons, |
+ UTF8ToUTF16(app->object_type()), |
+ app->application_id(), |
+ true, // primary |
+ app->primary_mimetypes(), |
+ &webapp_mimetypes_map_); |
+ AddAppSelectorList(app->product_url(), |
+ app_icons, |
+ document_icons, |
+ UTF8ToUTF16(app->object_type()), |
+ app->application_id(), |
+ false, // primary |
+ app->secondary_mimetypes(), |
+ &webapp_mimetypes_map_); |
+ AddAppSelectorList(app->product_url(), |
+ app_icons, |
+ document_icons, |
+ UTF8ToUTF16(app->object_type()), |
+ app->application_id(), |
+ true, // primary |
+ app->primary_file_extensions(), |
+ &webapp_extension_map_); |
+ AddAppSelectorList(app->product_url(), |
+ app_icons, |
+ document_icons, |
+ UTF8ToUTF16(app->object_type()), |
+ app->application_id(), |
+ false, // primary |
+ app->secondary_file_extensions(), |
+ &webapp_extension_map_); |
+ } |
+} |
+ |
// static. |
void DriveWebAppsRegistry::AddAppSelectorList( |
const GURL& product_link, |