Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Side by Side Diff: chrome/browser/chromeos/drive/drive_webapps_registry.cc

Issue 11106007: drive: Rename 'gdata' namespace to 'drive' in chrome/browser/chromeos/drive (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/drive/drive_webapps_registry.h" 5 #include "chrome/browser/chromeos/drive/drive_webapps_registry.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/file_path.h" 11 #include "base/file_path.h"
12 #include "base/string_util.h" 12 #include "base/string_util.h"
13 #include "base/utf_string_conversions.h" 13 #include "base/utf_string_conversions.h"
14 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
15 #include "chrome/browser/google_apis/drive_api_parser.h" 15 #include "chrome/browser/google_apis/drive_api_parser.h"
16 16
17 using content::BrowserThread; 17 using content::BrowserThread;
18 18
19 namespace gdata { 19 namespace drive {
20 20
21 namespace { 21 namespace {
22 22
23 // WebApp store URL prefix. 23 // WebApp store URL prefix.
24 const char kStoreProductUrl[] = "https://chrome.google.com/webstore/"; 24 const char kStoreProductUrl[] = "https://chrome.google.com/webstore/";
25 25
26 // Extracts Web store id from its web store URL. 26 // Extracts Web store id from its web store URL.
27 std::string GetWebStoreIdFromUrl(const GURL& url) { 27 std::string GetWebStoreIdFromUrl(const GURL& url) {
28 if (!StartsWithASCII(url.spec(), kStoreProductUrl, false)) { 28 if (!StartsWithASCII(url.spec(), kStoreProductUrl, false)) {
29 LOG(WARNING) << "Unrecognized product URL " << url.spec(); 29 LOG(WARNING) << "Unrecognized product URL " << url.spec();
30 return std::string(); 30 return std::string();
31 } 31 }
32 32
33 FilePath path(url.path()); 33 FilePath path(url.path());
34 std::vector<FilePath::StringType> components; 34 std::vector<FilePath::StringType> components;
35 path.GetComponents(&components); 35 path.GetComponents(&components);
36 DCHECK_LE(2U, components.size()); // Coming from kStoreProductUrl 36 DCHECK_LE(2U, components.size()); // Coming from kStoreProductUrl
37 37
38 // Return the last part of the path 38 // Return the last part of the path
39 return components[components.size() - 1]; 39 return components[components.size() - 1];
40 } 40 }
41 41
42 // TODO(kochi): This is duplicate from gdata_wapi_parser.cc. 42 // TODO(kochi): This is duplicate from gdata_wapi_parser.cc.
43 bool SortBySize(const InstalledApp::IconList::value_type& a, 43 bool SortBySize(const gdata::InstalledApp::IconList::value_type& a,
44 const InstalledApp::IconList::value_type& b) { 44 const gdata::InstalledApp::IconList::value_type& b) {
45 return a.first < b.first; 45 return a.first < b.first;
46 } 46 }
47 47
48 } // namespace 48 } // namespace
49 49
50 // DriveWebAppInfo struct implementation. 50 // DriveWebAppInfo struct implementation.
51 51
52 DriveWebAppInfo::DriveWebAppInfo(const std::string& app_id, 52 DriveWebAppInfo::DriveWebAppInfo(
53 const InstalledApp::IconList& app_icons, 53 const std::string& app_id,
54 const InstalledApp::IconList& document_icons, 54 const gdata::InstalledApp::IconList& app_icons,
55 const std::string& web_store_id, 55 const gdata::InstalledApp::IconList& document_icons,
56 const string16& app_name, 56 const std::string& web_store_id,
57 const string16& object_type, 57 const string16& app_name,
58 bool is_primary_selector) 58 const string16& object_type,
59 bool is_primary_selector)
59 : app_id(app_id), 60 : app_id(app_id),
60 app_icons(app_icons), 61 app_icons(app_icons),
61 document_icons(document_icons), 62 document_icons(document_icons),
62 web_store_id(web_store_id), 63 web_store_id(web_store_id),
63 app_name(app_name), 64 app_name(app_name),
64 object_type(object_type), 65 object_type(object_type),
65 is_primary_selector(is_primary_selector) { 66 is_primary_selector(is_primary_selector) {
66 } 67 }
67 68
68 DriveWebAppInfo::~DriveWebAppInfo() { 69 DriveWebAppInfo::~DriveWebAppInfo() {
69 } 70 }
70 71
71 // DriveFileSystem::WebAppFileSelector struct implementation. 72 // DriveFileSystem::WebAppFileSelector struct implementation.
72 73
73 DriveWebAppsRegistry::WebAppFileSelector::WebAppFileSelector( 74 DriveWebAppsRegistry::WebAppFileSelector::WebAppFileSelector(
74 const GURL& product_link, 75 const GURL& product_link,
75 const InstalledApp::IconList& app_icons, 76 const gdata::InstalledApp::IconList& app_icons,
76 const InstalledApp::IconList& document_icons, 77 const gdata::InstalledApp::IconList& document_icons,
77 const string16& object_type, 78 const string16& object_type,
78 const std::string& app_id, 79 const std::string& app_id,
79 bool is_primary_selector) 80 bool is_primary_selector)
80 : product_link(product_link), 81 : product_link(product_link),
81 app_icons(app_icons), 82 app_icons(app_icons),
82 document_icons(document_icons), 83 document_icons(document_icons),
83 object_type(object_type), 84 object_type(object_type),
84 app_id(app_id), 85 app_id(app_id),
85 is_primary_selector(is_primary_selector) { 86 is_primary_selector(is_primary_selector) {
86 } 87 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 for (WebAppFileSelectorMap::iterator iter = webapp_extension_map_.begin(); 138 for (WebAppFileSelectorMap::iterator iter = webapp_extension_map_.begin();
138 iter != webapp_extension_map_.end(); ++iter) { 139 iter != webapp_extension_map_.end(); ++iter) {
139 std::string id = GetWebStoreIdFromUrl(iter->second->product_link); 140 std::string id = GetWebStoreIdFromUrl(iter->second->product_link);
140 if (id == web_store_id) 141 if (id == web_store_id)
141 extensions.insert(iter->first); 142 extensions.insert(iter->first);
142 } 143 }
143 return extensions; 144 return extensions;
144 } 145 }
145 146
146 void DriveWebAppsRegistry::UpdateFromFeed( 147 void DriveWebAppsRegistry::UpdateFromFeed(
147 const AccountMetadataFeed& metadata) { 148 const gdata::AccountMetadataFeed& metadata) {
148 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 149 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
149 150
150 url_to_name_map_.clear(); 151 url_to_name_map_.clear();
151 STLDeleteValues(&webapp_extension_map_); 152 STLDeleteValues(&webapp_extension_map_);
152 STLDeleteValues(&webapp_mimetypes_map_); 153 STLDeleteValues(&webapp_mimetypes_map_);
153 for (ScopedVector<InstalledApp>::const_iterator it = 154 for (ScopedVector<gdata::InstalledApp>::const_iterator it =
154 metadata.installed_apps().begin(); 155 metadata.installed_apps().begin();
155 it != metadata.installed_apps().end(); ++it) { 156 it != metadata.installed_apps().end(); ++it) {
156 const InstalledApp& app = **it; 157 const gdata::InstalledApp& app = **it;
157 GURL product_url = app.GetProductUrl(); 158 GURL product_url = app.GetProductUrl();
158 if (product_url.is_empty()) 159 if (product_url.is_empty())
159 continue; 160 continue;
160 161
161 InstalledApp::IconList app_icons = 162 gdata::InstalledApp::IconList app_icons =
162 app.GetIconsForCategory(AppIcon::ICON_APPLICATION); 163 app.GetIconsForCategory(gdata::AppIcon::ICON_APPLICATION);
163 InstalledApp::IconList document_icons = 164 gdata::InstalledApp::IconList document_icons =
164 app.GetIconsForCategory(AppIcon::ICON_DOCUMENT); 165 app.GetIconsForCategory(gdata::AppIcon::ICON_DOCUMENT);
165 166
166 if (VLOG_IS_ON(1)) { 167 if (VLOG_IS_ON(1)) {
167 std::vector<std::string> mime_types; 168 std::vector<std::string> mime_types;
168 for (size_t i = 0; app.primary_mimetypes().size(); ++i) 169 for (size_t i = 0; app.primary_mimetypes().size(); ++i)
169 mime_types.push_back(*app.primary_mimetypes()[i]); 170 mime_types.push_back(*app.primary_mimetypes()[i]);
170 for (size_t i = 0; app.secondary_mimetypes().size(); ++i) 171 for (size_t i = 0; app.secondary_mimetypes().size(); ++i)
171 mime_types.push_back(*app.secondary_mimetypes()[i]); 172 mime_types.push_back(*app.secondary_mimetypes()[i]);
172 173
173 std::vector<std::string> extensions; 174 std::vector<std::string> extensions;
174 for (size_t i = 0; app.primary_extensions().size(); ++i) 175 for (size_t i = 0; app.primary_extensions().size(); ++i)
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 app_icons, 213 app_icons,
213 document_icons, 214 document_icons,
214 app.object_type(), 215 app.object_type(),
215 app.app_id(), 216 app.app_id(),
216 false, // primary 217 false, // primary
217 app.secondary_extensions(), 218 app.secondary_extensions(),
218 &webapp_extension_map_); 219 &webapp_extension_map_);
219 } 220 }
220 } 221 }
221 222
222 void DriveWebAppsRegistry::UpdateFromApplicationList(const AppList& applist) { 223 void DriveWebAppsRegistry::UpdateFromApplicationList(
224 const gdata::AppList& applist) {
223 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 225 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
224 226
225 url_to_name_map_.clear(); 227 url_to_name_map_.clear();
226 STLDeleteValues(&webapp_extension_map_); 228 STLDeleteValues(&webapp_extension_map_);
227 STLDeleteValues(&webapp_mimetypes_map_); 229 STLDeleteValues(&webapp_mimetypes_map_);
228 for (size_t i = 0; i < applist.items().size(); ++i) { 230 for (size_t i = 0; i < applist.items().size(); ++i) {
229 const AppResource& app = *applist.items()[i]; 231 const gdata::AppResource& app = *applist.items()[i];
230 if (app.product_url().is_empty()) 232 if (app.product_url().is_empty())
231 continue; 233 continue;
232 234
233 InstalledApp::IconList app_icons; 235 gdata::InstalledApp::IconList app_icons;
234 InstalledApp::IconList document_icons; 236 gdata::InstalledApp::IconList document_icons;
235 for (size_t j = 0; j < app.icons().size(); ++j) { 237 for (size_t j = 0; j < app.icons().size(); ++j) {
236 const DriveAppIcon& icon = *app.icons()[j]; 238 const gdata::DriveAppIcon& icon = *app.icons()[j];
237 if (icon.icon_url().is_empty()) 239 if (icon.icon_url().is_empty())
238 continue; 240 continue;
239 if (icon.category() == DriveAppIcon::APPLICATION) 241 if (icon.category() == gdata::DriveAppIcon::APPLICATION)
240 app_icons.push_back(std::make_pair(icon.icon_side_length(), 242 app_icons.push_back(std::make_pair(icon.icon_side_length(),
241 icon.icon_url())); 243 icon.icon_url()));
242 if (icon.category() == DriveAppIcon::DOCUMENT) 244 if (icon.category() == gdata::DriveAppIcon::DOCUMENT)
243 document_icons.push_back(std::make_pair(icon.icon_side_length(), 245 document_icons.push_back(std::make_pair(icon.icon_side_length(),
244 icon.icon_url())); 246 icon.icon_url()));
245 } 247 }
246 std::sort(app_icons.begin(), app_icons.end(), SortBySize); 248 std::sort(app_icons.begin(), app_icons.end(), SortBySize);
247 std::sort(document_icons.begin(), document_icons.end(), SortBySize); 249 std::sort(document_icons.begin(), document_icons.end(), SortBySize);
248 250
249 url_to_name_map_.insert( 251 url_to_name_map_.insert(
250 std::make_pair(app.product_url(), UTF8ToUTF16(app.name()))); 252 std::make_pair(app.product_url(), UTF8ToUTF16(app.name())));
251 AddAppSelectorList(app.product_url(), 253 AddAppSelectorList(app.product_url(),
252 app_icons, 254 app_icons,
(...skipping 26 matching lines...) Expand all
279 app.application_id(), 281 app.application_id(),
280 false, // primary 282 false, // primary
281 app.secondary_file_extensions(), 283 app.secondary_file_extensions(),
282 &webapp_extension_map_); 284 &webapp_extension_map_);
283 } 285 }
284 } 286 }
285 287
286 // static. 288 // static.
287 void DriveWebAppsRegistry::AddAppSelectorList( 289 void DriveWebAppsRegistry::AddAppSelectorList(
288 const GURL& product_link, 290 const GURL& product_link,
289 const InstalledApp::IconList& app_icons, 291 const gdata::InstalledApp::IconList& app_icons,
290 const InstalledApp::IconList& document_icons, 292 const gdata::InstalledApp::IconList& document_icons,
291 const string16& object_type, 293 const string16& object_type,
292 const std::string& app_id, 294 const std::string& app_id,
293 bool is_primary_selector, 295 bool is_primary_selector,
294 const ScopedVector<std::string>& selectors, 296 const ScopedVector<std::string>& selectors,
295 WebAppFileSelectorMap* map) { 297 WebAppFileSelectorMap* map) {
296 for (ScopedVector<std::string>::const_iterator it = selectors.begin(); 298 for (ScopedVector<std::string>::const_iterator it = selectors.begin();
297 it != selectors.end(); ++it) { 299 it != selectors.end(); ++it) {
298 std::string* value = *it; 300 std::string* value = *it;
299 map->insert(std::make_pair( 301 map->insert(std::make_pair(
300 *value, new WebAppFileSelector(product_link, 302 *value, new WebAppFileSelector(product_link,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 new DriveWebAppInfo(web_app->app_id, 334 new DriveWebAppInfo(web_app->app_id,
333 web_app->app_icons, 335 web_app->app_icons,
334 web_app->document_icons, 336 web_app->document_icons,
335 web_store_id, 337 web_store_id,
336 product_iter->second, // app name. 338 product_iter->second, // app name.
337 web_app->object_type, 339 web_app->object_type,
338 web_app->is_primary_selector))); 340 web_app->is_primary_selector)));
339 } 341 }
340 } 342 }
341 343
342 } // namespace gdata 344 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698