OLD | NEW |
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/apps/drive/drive_app_provider.h" | 5 #include "chrome/browser/apps/drive/drive_app_provider.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 | 35 |
36 } // namespace | 36 } // namespace |
37 | 37 |
38 DriveAppProvider::DriveAppProvider( | 38 DriveAppProvider::DriveAppProvider( |
39 Profile* profile, | 39 Profile* profile, |
40 DriveAppUninstallSyncService* uninstall_sync_service) | 40 DriveAppUninstallSyncService* uninstall_sync_service) |
41 : profile_(profile), | 41 : profile_(profile), |
42 uninstall_sync_service_(uninstall_sync_service), | 42 uninstall_sync_service_(uninstall_sync_service), |
43 service_bridge_(DriveServiceBridge::Create(profile).Pass()), | 43 service_bridge_(DriveServiceBridge::Create(profile).Pass()), |
44 mapping_(new DriveAppMapping(profile->GetPrefs())), | 44 mapping_(new DriveAppMapping(profile->GetPrefs())), |
| 45 drive_app_registry_updated_(false), |
45 weak_ptr_factory_(this) { | 46 weak_ptr_factory_(this) { |
46 service_bridge_->GetAppRegistry()->AddObserver(this); | 47 service_bridge_->GetAppRegistry()->AddObserver(this); |
47 ExtensionRegistry::Get(profile_)->AddObserver(this); | 48 ExtensionRegistry::Get(profile_)->AddObserver(this); |
48 } | 49 } |
49 | 50 |
50 DriveAppProvider::~DriveAppProvider() { | 51 DriveAppProvider::~DriveAppProvider() { |
51 ExtensionRegistry::Get(profile_)->RemoveObserver(this); | 52 ExtensionRegistry::Get(profile_)->RemoveObserver(this); |
52 service_bridge_->GetAppRegistry()->RemoveObserver(this); | 53 service_bridge_->GetAppRegistry()->RemoveObserver(this); |
53 } | 54 } |
54 | 55 |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 | 230 |
230 extensions::ExtensionSystem::Get(profile_) | 231 extensions::ExtensionSystem::Get(profile_) |
231 ->extension_service() | 232 ->extension_service() |
232 ->UninstallExtension(chrome_app_id, | 233 ->UninstallExtension(chrome_app_id, |
233 extensions::UNINSTALL_REASON_SYNC, | 234 extensions::UNINSTALL_REASON_SYNC, |
234 base::Bind(&base::DoNothing), | 235 base::Bind(&base::DoNothing), |
235 NULL); | 236 NULL); |
236 } | 237 } |
237 | 238 |
238 void DriveAppProvider::UpdateDriveApps() { | 239 void DriveAppProvider::UpdateDriveApps() { |
| 240 if (!drive_app_registry_updated_) |
| 241 return; |
| 242 |
239 service_bridge_->GetAppRegistry()->GetAppList(&drive_apps_); | 243 service_bridge_->GetAppRegistry()->GetAppList(&drive_apps_); |
240 | 244 |
241 IdSet current_ids; | 245 IdSet current_ids; |
242 for (size_t i = 0; i < drive_apps_.size(); ++i) { | 246 for (size_t i = 0; i < drive_apps_.size(); ++i) { |
243 const std::string& drive_app_id = drive_apps_[i].app_id; | 247 const std::string& drive_app_id = drive_apps_[i].app_id; |
244 if (!mapping_->IsUninstalledDriveApp(drive_app_id) && | 248 if (!mapping_->IsUninstalledDriveApp(drive_app_id) && |
245 drive_apps_[i].create_url.is_valid()) { | 249 drive_apps_[i].create_url.is_valid()) { |
246 current_ids.insert(drive_app_id); | 250 current_ids.insert(drive_app_id); |
247 } | 251 } |
248 } | 252 } |
(...skipping 10 matching lines...) Expand all Loading... |
259 for (size_t i = 0; i < drive_apps_.size(); ++i) { | 263 for (size_t i = 0; i < drive_apps_.size(); ++i) { |
260 if (!mapping_->IsUninstalledDriveApp(drive_apps_[i].app_id) && | 264 if (!mapping_->IsUninstalledDriveApp(drive_apps_[i].app_id) && |
261 drive_apps_[i].create_url.is_valid()) { | 265 drive_apps_[i].create_url.is_valid()) { |
262 AddOrUpdateDriveApp(drive_apps_[i]); | 266 AddOrUpdateDriveApp(drive_apps_[i]); |
263 } | 267 } |
264 } | 268 } |
265 SchedulePendingConverters(); | 269 SchedulePendingConverters(); |
266 } | 270 } |
267 | 271 |
268 void DriveAppProvider::OnDriveAppRegistryUpdated() { | 272 void DriveAppProvider::OnDriveAppRegistryUpdated() { |
| 273 drive_app_registry_updated_ = true; |
269 UpdateDriveApps(); | 274 UpdateDriveApps(); |
270 } | 275 } |
271 | 276 |
272 void DriveAppProvider::OnExtensionInstalled( | 277 void DriveAppProvider::OnExtensionInstalled( |
273 content::BrowserContext* browser_context, | 278 content::BrowserContext* browser_context, |
274 const Extension* extension, | 279 const Extension* extension, |
275 bool is_update) { | 280 bool is_update) { |
276 // Bail if the |extension| is installed from a converter. The post install | 281 // Bail if the |extension| is installed from a converter. The post install |
277 // processing will be handled in OnLocalAppConverted. | 282 // processing will be handled in OnLocalAppConverted. |
278 if (!pending_converters_.empty() && | 283 if (!pending_converters_.empty() && |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 service_bridge_->GetAppRegistry()->UninstallApp( | 326 service_bridge_->GetAppRegistry()->UninstallApp( |
322 drive_app_id, base::Bind(&IgnoreUninstallResult)); | 327 drive_app_id, base::Bind(&IgnoreUninstallResult)); |
323 } else { | 328 } else { |
324 mapping_->AddUninstalledDriveApp(drive_app_id); | 329 mapping_->AddUninstalledDriveApp(drive_app_id); |
325 uninstall_sync_service_->TrackUninstalledDriveApp(drive_app_id); | 330 uninstall_sync_service_->TrackUninstalledDriveApp(drive_app_id); |
326 } | 331 } |
327 | 332 |
328 return; | 333 return; |
329 } | 334 } |
330 } | 335 } |
OLD | NEW |