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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_engine.cc

Issue 62883005: Implement SyncEngine::UpdateRegisteredApps() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/sync_file_system/drive_backend/sync_engine.h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "chrome/browser/drive/drive_api_service.h" 9 #include "chrome/browser/drive/drive_api_service.h"
10 #include "chrome/browser/drive/drive_notification_manager.h" 10 #include "chrome/browser/drive/drive_notification_manager.h"
11 #include "chrome/browser/extensions/extension_service.h"
11 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h" 12 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h"
12 #include "chrome/browser/sync_file_system/drive_backend/list_changes_task.h" 13 #include "chrome/browser/sync_file_system/drive_backend/list_changes_task.h"
13 #include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h " 14 #include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h "
14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 15 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
15 #include "chrome/browser/sync_file_system/drive_backend/register_app_task.h" 16 #include "chrome/browser/sync_file_system/drive_backend/register_app_task.h"
16 #include "chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h " 17 #include "chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h "
17 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer. h" 18 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer. h"
18 #include "chrome/browser/sync_file_system/drive_backend/uninstall_app_task.h" 19 #include "chrome/browser/sync_file_system/drive_backend/uninstall_app_task.h"
19 #include "chrome/browser/sync_file_system/logger.h" 20 #include "chrome/browser/sync_file_system/logger.h"
20 #include "chrome/browser/sync_file_system/sync_task.h" 21 #include "chrome/browser/sync_file_system/sync_task.h"
22 #include "extensions/common/extension.h"
21 23
22 namespace sync_file_system { 24 namespace sync_file_system {
23 namespace drive_backend { 25 namespace drive_backend {
24 26
27 namespace {
28
29 void EmptyStatusCallback(SyncStatusCode status) {}
30
31 } // namespace
32
25 SyncEngine::SyncEngine( 33 SyncEngine::SyncEngine(
26 const base::FilePath& base_dir, 34 const base::FilePath& base_dir,
27 base::SequencedTaskRunner* task_runner, 35 base::SequencedTaskRunner* task_runner,
28 scoped_ptr<drive::DriveServiceInterface> drive_service, 36 scoped_ptr<drive::DriveServiceInterface> drive_service,
29 drive::DriveNotificationManager* notification_manager, 37 drive::DriveNotificationManager* notification_manager,
30 ExtensionService* extension_service) 38 ExtensionServiceInterface* extension_service)
31 : base_dir_(base_dir), 39 : base_dir_(base_dir),
32 task_runner_(task_runner), 40 task_runner_(task_runner),
33 drive_service_(drive_service.Pass()), 41 drive_service_(drive_service.Pass()),
34 notification_manager_(notification_manager), 42 notification_manager_(notification_manager),
35 extension_service_(extension_service), 43 extension_service_(extension_service),
36 remote_change_processor_(NULL), 44 remote_change_processor_(NULL),
37 service_state_(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE), 45 service_state_(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE),
38 should_check_remote_change_(true), 46 should_check_remote_change_(true),
39 sync_enabled_(false), 47 sync_enabled_(false),
40 conflict_resolution_policy_(CONFLICT_RESOLUTION_POLICY_LAST_WRITE_WIN), 48 conflict_resolution_policy_(CONFLICT_RESOLUTION_POLICY_LAST_WRITE_WIN),
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 } 289 }
282 290
283 void SyncEngine::DoEnableApp(const std::string& app_id, 291 void SyncEngine::DoEnableApp(const std::string& app_id,
284 const SyncStatusCallback& callback) { 292 const SyncStatusCallback& callback) {
285 metadata_database_->EnableApp(app_id, callback); 293 metadata_database_->EnableApp(app_id, callback);
286 } 294 }
287 295
288 void SyncEngine::DidInitialize(SyncEngineInitializer* initializer, 296 void SyncEngine::DidInitialize(SyncEngineInitializer* initializer,
289 SyncStatusCode status) { 297 SyncStatusCode status) {
290 metadata_database_ = initializer->PassMetadataDatabase(); 298 metadata_database_ = initializer->PassMetadataDatabase();
299 UpdateRegisteredApps();
291 } 300 }
292 301
293 void SyncEngine::DidProcessRemoteChange(RemoteToLocalSyncer* syncer, 302 void SyncEngine::DidProcessRemoteChange(RemoteToLocalSyncer* syncer,
294 const SyncFileCallback& callback, 303 const SyncFileCallback& callback,
295 SyncStatusCode status) { 304 SyncStatusCode status) {
296 NOTIMPLEMENTED(); 305 NOTIMPLEMENTED();
297 } 306 }
298 307
299 void SyncEngine::DidApplyLocalChange(LocalToRemoteSyncer* syncer, 308 void SyncEngine::DidApplyLocalChange(LocalToRemoteSyncer* syncer,
300 const SyncStatusCallback& callback, 309 const SyncStatusCallback& callback,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 return; 343 return;
335 344
336 util::Log(logging::LOG_INFO, FROM_HERE, 345 util::Log(logging::LOG_INFO, FROM_HERE,
337 "Service state changed: %d->%d: %s", 346 "Service state changed: %d->%d: %s",
338 old_state, GetCurrentState(), description.c_str()); 347 old_state, GetCurrentState(), description.c_str());
339 FOR_EACH_OBSERVER( 348 FOR_EACH_OBSERVER(
340 Observer, service_observers_, 349 Observer, service_observers_,
341 OnRemoteServiceStateUpdated(GetCurrentState(), description)); 350 OnRemoteServiceStateUpdated(GetCurrentState(), description));
342 } 351 }
343 352
353 void SyncEngine::UpdateRegisteredApps() {
354 if (!extension_service_)
355 return;
356
357 std::vector<std::string> app_ids;
358 metadata_database_->GetRegisteredAppIDs(&app_ids);
359
360 // Update the status of every origin using status from ExtensionService.
361 for (std::vector<std::string>::const_iterator itr = app_ids.begin();
362 itr != app_ids.end(); ++itr) {
363 const std::string& app_id = *itr;
364 GURL origin =
365 extensions::Extension::GetBaseURLFromExtensionId(app_id);
366 if (!extension_service_->GetInstalledExtension(app_id)) {
367 // Extension has been uninstalled.
368 // (At this stage we can't know if it was unpacked extension or not,
369 // so just purge the remote folder.)
370 UninstallOrigin(origin,
371 RemoteFileSyncService::UNINSTALL_AND_PURGE_REMOTE,
372 base::Bind(&EmptyStatusCallback));
373 continue;
374 }
375 FileTracker tracker;
376 if (!metadata_database_->FindAppRootTracker(app_id, &tracker)) {
377 // App will register itself on first run.
378 return;
nhiroki 2013/11/18 09:09:52 Probably we need to do "continue" here.
keishi 2013/11/18 09:15:32 Done.
379 }
380 bool is_app_enabled = extension_service_->IsExtensionEnabled(app_id);
381 bool is_app_root_tracker_enabled =
382 tracker.tracker_kind() == TRACKER_KIND_APP_ROOT;
383 if (is_app_enabled && !is_app_root_tracker_enabled)
384 EnableOrigin(origin, base::Bind(&EmptyStatusCallback));
385 else if (!is_app_enabled && is_app_root_tracker_enabled)
386 DisableOrigin(origin, base::Bind(&EmptyStatusCallback));
387 }
388 }
389
344 } // namespace drive_backend 390 } // namespace drive_backend
345 } // namespace sync_file_system 391 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698