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

Side by Side Diff: chrome/browser/drive/drive_app_registry.cc

Issue 134213003: Revert of Implement DriveAppRegistry::UninstallApp() and GetAppList(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/drive/drive_app_registry.h" 5 #include "chrome/browser/drive/drive_app_registry.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 17 matching lines...) Expand all
28 // Append list of app ids in |map| looked up by |selector| to |matched_apps|. 28 // Append list of app ids in |map| looked up by |selector| to |matched_apps|.
29 void FindAppsForSelector(const std::string& selector, 29 void FindAppsForSelector(const std::string& selector,
30 const std::multimap<std::string, std::string>& map, 30 const std::multimap<std::string, std::string>& map,
31 std::vector<std::string>* matched_apps) { 31 std::vector<std::string>* matched_apps) {
32 typedef std::multimap<std::string, std::string>::const_iterator iterator; 32 typedef std::multimap<std::string, std::string>::const_iterator iterator;
33 std::pair<iterator, iterator> range = map.equal_range(selector); 33 std::pair<iterator, iterator> range = map.equal_range(selector);
34 for (iterator it = range.first; it != range.second; ++it) 34 for (iterator it = range.first; it != range.second; ++it)
35 matched_apps->push_back(it->second); 35 matched_apps->push_back(it->second);
36 } 36 }
37 37
38 void RemoveAppFromSelector(const std::string& app_id,
39 std::multimap<std::string, std::string>* map) {
40 typedef std::multimap<std::string, std::string>::iterator iterator;
41 for (iterator it = map->begin(); it != map->end(); ) {
42 iterator now = it++;
43 if (now->second == app_id)
44 map->erase(now);
45 }
46 }
47
48 } // namespace 38 } // namespace
49 39
50 namespace drive { 40 namespace drive {
51 41
52 DriveAppInfo::DriveAppInfo() { 42 DriveAppInfo::DriveAppInfo() {
53 } 43 }
54 44
55 DriveAppInfo::DriveAppInfo( 45 DriveAppInfo::DriveAppInfo(
56 const std::string& app_id, 46 const std::string& app_id,
57 const google_apis::InstalledApp::IconList& app_icons, 47 const google_apis::InstalledApp::IconList& app_icons,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 if (inserted_app_ids.count(matched_apps[i]) == 0) { 88 if (inserted_app_ids.count(matched_apps[i]) == 0) {
99 inserted_app_ids.insert(matched_apps[i]); 89 inserted_app_ids.insert(matched_apps[i]);
100 std::map<std::string, DriveAppInfo>::const_iterator it = 90 std::map<std::string, DriveAppInfo>::const_iterator it =
101 all_apps_.find(matched_apps[i]); 91 all_apps_.find(matched_apps[i]);
102 DCHECK(it != all_apps_.end()); 92 DCHECK(it != all_apps_.end());
103 apps->push_back(it->second); 93 apps->push_back(it->second);
104 } 94 }
105 } 95 }
106 } 96 }
107 97
108 void DriveAppRegistry::GetAppList(std::vector<DriveAppInfo>* apps) const {
109 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
110
111 apps->clear();
112 for (std::map<std::string, DriveAppInfo>::const_iterator
113 it = all_apps_.begin(); it != all_apps_.end(); ++it) {
114 apps->push_back(it->second);
115 }
116 }
117
118 void DriveAppRegistry::Update() { 98 void DriveAppRegistry::Update() {
119 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 99 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
120 100
121 if (is_updating_) // There is already an update in progress. 101 if (is_updating_) // There is already an update in progress.
122 return; 102 return;
123 is_updating_ = true; 103 is_updating_ = true;
124 104
125 drive_service_->GetAppList( 105 drive_service_->GetAppList(
126 base::Bind(&DriveAppRegistry::UpdateAfterGetAppList, 106 base::Bind(&DriveAppRegistry::UpdateAfterGetAppList,
127 weak_ptr_factory_.GetWeakPtr())); 107 weak_ptr_factory_.GetWeakPtr()));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 app.create_url()); 153 app.create_url());
174 154
175 // TODO(kinaba): consider taking primary/secondary distinction into account. 155 // TODO(kinaba): consider taking primary/secondary distinction into account.
176 AddAppSelectorList(app.primary_mimetypes(), id, &mimetype_map_); 156 AddAppSelectorList(app.primary_mimetypes(), id, &mimetype_map_);
177 AddAppSelectorList(app.secondary_mimetypes(), id, &mimetype_map_); 157 AddAppSelectorList(app.secondary_mimetypes(), id, &mimetype_map_);
178 AddAppSelectorList(app.primary_file_extensions(), id, &extension_map_); 158 AddAppSelectorList(app.primary_file_extensions(), id, &extension_map_);
179 AddAppSelectorList(app.secondary_file_extensions(), id, &extension_map_); 159 AddAppSelectorList(app.secondary_file_extensions(), id, &extension_map_);
180 } 160 }
181 } 161 }
182 162
183 void DriveAppRegistry::UninstallApp(const std::string& app_id,
184 const UninstallCallback& callback) {
185 DCHECK(!callback.is_null());
186
187 drive_service_->UninstallApp(app_id,
188 base::Bind(&DriveAppRegistry::OnAppUninstalled,
189 weak_ptr_factory_.GetWeakPtr(),
190 app_id,
191 callback));
192 }
193
194 void DriveAppRegistry::OnAppUninstalled(const std::string& app_id,
195 const UninstallCallback& callback,
196 google_apis::GDataErrorCode error) {
197 if (error == google_apis::HTTP_SUCCESS) {
198 all_apps_.erase(app_id);
199 RemoveAppFromSelector(app_id, &mimetype_map_);
200 RemoveAppFromSelector(app_id, &extension_map_);
201 }
202 callback.Run(error);
203 }
204
205 // static
206 bool DriveAppRegistry::IsAppUninstallSupported() {
207 #ifdef USE_OFFICIAL_GOOGLE_API_KEYS
208 return true;
209 #else
210 return false;
211 #endif
212 }
213
214 namespace util { 163 namespace util {
215 164
216 GURL FindPreferredIcon(const google_apis::InstalledApp::IconList& icons, 165 GURL FindPreferredIcon(const google_apis::InstalledApp::IconList& icons,
217 int preferred_size) { 166 int preferred_size) {
218 if (icons.empty()) 167 if (icons.empty())
219 return GURL(); 168 return GURL();
220 169
221 google_apis::InstalledApp::IconList sorted_icons = icons; 170 google_apis::InstalledApp::IconList sorted_icons = icons;
222 std::sort(sorted_icons.rbegin(), sorted_icons.rend()); 171 std::sort(sorted_icons.rbegin(), sorted_icons.rend());
223 172
224 // Go forward while the size is larger or equal to preferred_size. 173 // Go forward while the size is larger or equal to preferred_size.
225 size_t i = 1; 174 size_t i = 1;
226 while (i < sorted_icons.size() && sorted_icons[i].first >= preferred_size) 175 while (i < sorted_icons.size() && sorted_icons[i].first >= preferred_size)
227 ++i; 176 ++i;
228 return sorted_icons[i - 1].second; 177 return sorted_icons[i - 1].second;
229 } 178 }
230 179
231 } // namespace util 180 } // namespace util
232 } // namespace drive 181 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/drive/drive_app_registry.h ('k') | chrome/browser/drive/drive_app_registry_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698