| 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..91085eb6fe92af43fd9a0ce5695ca7fb7ea74009 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,58 +133,123 @@ 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();
|
| STLDeleteValues(&webapp_extension_map_);
|
| STLDeleteValues(&webapp_mimetypes_map_);
|
| for (ScopedVector<InstalledApp>::const_iterator it =
|
| - metadata->installed_apps().begin();
|
| - it != metadata->installed_apps().end(); ++it) {
|
| - const InstalledApp* app = *it;
|
| - GURL product_url = app->GetProductUrl();
|
| + metadata.installed_apps().begin();
|
| + it != metadata.installed_apps().end(); ++it) {
|
| + const InstalledApp& app = **it;
|
| + GURL product_url = app.GetProductUrl();
|
| if (product_url.is_empty())
|
| continue;
|
|
|
| InstalledApp::IconList app_icons =
|
| - app->GetIconsForCategory(AppIcon::APPLICATION);
|
| + app.GetIconsForCategory(AppIcon::APPLICATION);
|
| InstalledApp::IconList document_icons =
|
| - app->GetIconsForCategory(AppIcon::DOCUMENT);
|
| + app.GetIconsForCategory(AppIcon::DOCUMENT);
|
|
|
| url_to_name_map_.insert(
|
| - std::make_pair(product_url, app->app_name()));
|
| + std::make_pair(product_url, app.app_name()));
|
| AddAppSelectorList(product_url,
|
| app_icons,
|
| document_icons,
|
| - app->object_type(),
|
| - app->app_id(),
|
| + app.object_type(),
|
| + app.app_id(),
|
| true, // primary
|
| - app->primary_mimetypes(),
|
| + app.primary_mimetypes(),
|
| &webapp_mimetypes_map_);
|
| AddAppSelectorList(product_url,
|
| app_icons,
|
| document_icons,
|
| - app->object_type(),
|
| - app->app_id(),
|
| + app.object_type(),
|
| + app.app_id(),
|
| false, // primary
|
| - app->secondary_mimetypes(),
|
| + app.secondary_mimetypes(),
|
| &webapp_mimetypes_map_);
|
| AddAppSelectorList(product_url,
|
| app_icons,
|
| document_icons,
|
| - app->object_type(),
|
| - app->app_id(),
|
| + app.object_type(),
|
| + app.app_id(),
|
| true, // primary
|
| - app->primary_extensions(),
|
| + app.primary_extensions(),
|
| &webapp_extension_map_);
|
| AddAppSelectorList(product_url,
|
| app_icons,
|
| document_icons,
|
| - app->object_type(),
|
| - app->app_id(),
|
| + app.object_type(),
|
| + app.app_id(),
|
| + false, // primary
|
| + app.secondary_extensions(),
|
| + &webapp_extension_map_);
|
| + }
|
| +}
|
| +
|
| +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 (size_t i = 0; i < applist.items().size(); ++i) {
|
| + const AppResource& app = *applist.items()[i];
|
| + if (app.product_url().is_empty())
|
| + continue;
|
| +
|
| + InstalledApp::IconList app_icons;
|
| + InstalledApp::IconList document_icons;
|
| + for (size_t j = 0; j < app.icons().size(); ++j) {
|
| + const DriveAppIcon& icon = *app.icons()[j];
|
| + 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_extensions(),
|
| + app.secondary_file_extensions(),
|
| &webapp_extension_map_);
|
| }
|
| }
|
|
|