| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/glue/extension_change_processor.h" | 5 #include "chrome/browser/sync/glue/extension_change_processor.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 void ExtensionChangeProcessor::Observe(NotificationType type, | 42 void ExtensionChangeProcessor::Observe(NotificationType type, |
| 43 const NotificationSource& source, | 43 const NotificationSource& source, |
| 44 const NotificationDetails& details) { | 44 const NotificationDetails& details) { |
| 45 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 45 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 46 DCHECK(running()); | 46 DCHECK(running()); |
| 47 DCHECK(profile_); | 47 DCHECK(profile_); |
| 48 if ((type != NotificationType::EXTENSION_INSTALLED) && | 48 if ((type != NotificationType::EXTENSION_INSTALLED) && |
| 49 (type != NotificationType::EXTENSION_UNINSTALLED) && | 49 (type != NotificationType::EXTENSION_UNINSTALLED) && |
| 50 (type != NotificationType::EXTENSION_LOADED) && | 50 (type != NotificationType::EXTENSION_LOADED) && |
| 51 (type != NotificationType::EXTENSION_UPDATE_DISABLED) && | 51 (type != NotificationType::EXTENSION_UPDATE_DISABLED) && |
| 52 (type != NotificationType::EXTENSION_UNLOADED) && | 52 (type != NotificationType::EXTENSION_UNLOADED)) { |
| 53 (type != NotificationType::EXTENSION_UNLOADED_DISABLED)) { | |
| 54 LOG(DFATAL) << "Received unexpected notification of type " | 53 LOG(DFATAL) << "Received unexpected notification of type " |
| 55 << type.value; | 54 << type.value; |
| 56 return; | 55 return; |
| 57 } | 56 } |
| 58 | 57 |
| 59 DCHECK_EQ(Source<Profile>(source).ptr(), profile_); | 58 DCHECK_EQ(Source<Profile>(source).ptr(), profile_); |
| 60 if (type == NotificationType::EXTENSION_UNINSTALLED) { | 59 if (type == NotificationType::EXTENSION_UNINSTALLED) { |
| 61 const UninstalledExtensionInfo* uninstalled_extension_info = | 60 const UninstalledExtensionInfo* uninstalled_extension_info = |
| 62 Details<UninstalledExtensionInfo>(details).ptr(); | 61 Details<UninstalledExtensionInfo>(details).ptr(); |
| 63 CHECK(uninstalled_extension_info); | 62 CHECK(uninstalled_extension_info); |
| 64 if (traits_.should_handle_extension_uninstall( | 63 if (traits_.should_handle_extension_uninstall( |
| 65 *uninstalled_extension_info)) { | 64 *uninstalled_extension_info)) { |
| 66 const std::string& id = uninstalled_extension_info->extension_id; | 65 const std::string& id = uninstalled_extension_info->extension_id; |
| 67 VLOG(1) << "Removing server data for uninstalled extension " << id | 66 VLOG(1) << "Removing server data for uninstalled extension " << id |
| 68 << " of type " << uninstalled_extension_info->extension_type; | 67 << " of type " << uninstalled_extension_info->extension_type; |
| 69 RemoveServerData(traits_, id, profile_->GetProfileSyncService()); | 68 RemoveServerData(traits_, id, profile_->GetProfileSyncService()); |
| 70 } | 69 } |
| 71 } else { | 70 } else { |
| 72 const Extension* extension = Details<const Extension>(details).ptr(); | 71 const Extension* extension = NULL; |
| 72 if (type == NotificationType::EXTENSION_UNLOADED) { |
| 73 extension = Details<UnloadedExtensionInfo>(details)->extension; |
| 74 } else { |
| 75 extension = Details<const Extension>(details).ptr(); |
| 76 } |
| 73 CHECK(extension); | 77 CHECK(extension); |
| 74 VLOG(1) << "Updating server data for extension " << extension->id() | 78 VLOG(1) << "Updating server data for extension " << extension->id() |
| 75 << " (notification type = " << type.value << ")"; | 79 << " (notification type = " << type.value << ")"; |
| 76 if (!traits_.is_valid_and_syncable(*extension)) { | 80 if (!traits_.is_valid_and_syncable(*extension)) { |
| 77 return; | 81 return; |
| 78 } | 82 } |
| 79 std::string error; | 83 std::string error; |
| 80 if (!UpdateServerData(traits_, *extension, | 84 if (!UpdateServerData(traits_, *extension, |
| 81 profile_->GetProfileSyncService(), &error)) { | 85 profile_->GetProfileSyncService(), &error)) { |
| 82 error_handler()->OnUnrecoverableError(FROM_HERE, error); | 86 error_handler()->OnUnrecoverableError(FROM_HERE, error); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 Source<Profile>(profile_)); | 174 Source<Profile>(profile_)); |
| 171 // Despite the name, this notification is exactly like | 175 // Despite the name, this notification is exactly like |
| 172 // EXTENSION_LOADED but with an initial state of DISABLED. | 176 // EXTENSION_LOADED but with an initial state of DISABLED. |
| 173 notification_registrar_.Add( | 177 notification_registrar_.Add( |
| 174 this, NotificationType::EXTENSION_UPDATE_DISABLED, | 178 this, NotificationType::EXTENSION_UPDATE_DISABLED, |
| 175 Source<Profile>(profile_)); | 179 Source<Profile>(profile_)); |
| 176 | 180 |
| 177 notification_registrar_.Add( | 181 notification_registrar_.Add( |
| 178 this, NotificationType::EXTENSION_UNLOADED, | 182 this, NotificationType::EXTENSION_UNLOADED, |
| 179 Source<Profile>(profile_)); | 183 Source<Profile>(profile_)); |
| 180 notification_registrar_.Add( | |
| 181 this, NotificationType::EXTENSION_UNLOADED_DISABLED, | |
| 182 Source<Profile>(profile_)); | |
| 183 } | 184 } |
| 184 | 185 |
| 185 void ExtensionChangeProcessor::StopObserving() { | 186 void ExtensionChangeProcessor::StopObserving() { |
| 186 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 187 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 187 DCHECK(profile_); | 188 DCHECK(profile_); |
| 188 VLOG(1) << "Unobserving all notifications"; | 189 VLOG(1) << "Unobserving all notifications"; |
| 189 notification_registrar_.RemoveAll(); | 190 notification_registrar_.RemoveAll(); |
| 190 } | 191 } |
| 191 | 192 |
| 192 } // namespace browser_sync | 193 } // namespace browser_sync |
| OLD | NEW |