OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/extensions/extension_sync_data.h" | 5 #include "chrome/browser/extensions/extension_sync_data.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "chrome/browser/extensions/extension_service.h" | 8 #include "chrome/browser/extensions/extension_service.h" |
9 #include "chrome/browser/sync/protocol/app_specifics.pb.h" | 9 #include "chrome/browser/sync/protocol/app_specifics.pb.h" |
10 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" | 10 #include "chrome/browser/sync/protocol/extension_specifics.pb.h" |
11 | 11 |
12 ExtensionSyncData::ExtensionSyncData() | 12 ExtensionSyncData::ExtensionSyncData() |
13 : uninstalled_(false), | 13 : uninstalled_(false), |
14 enabled_(false), | 14 enabled_(false), |
15 incognito_enabled_(false), | 15 incognito_enabled_(false), |
16 type_(Extension::SYNC_TYPE_NONE), | 16 type_(Extension::SYNC_TYPE_NONE), |
17 notifications_initial_setup_done_(false), | |
18 notifications_disabled_(false) { | 17 notifications_disabled_(false) { |
19 } | 18 } |
20 | 19 |
21 ExtensionSyncData::ExtensionSyncData(const SyncData& sync_data) | 20 ExtensionSyncData::ExtensionSyncData(const SyncData& sync_data) |
22 : uninstalled_(false), | 21 : uninstalled_(false), |
23 enabled_(false), | 22 enabled_(false), |
24 incognito_enabled_(false), | 23 incognito_enabled_(false), |
25 type_(Extension::SYNC_TYPE_NONE), | 24 type_(Extension::SYNC_TYPE_NONE), |
26 notifications_initial_setup_done_(false), | |
27 notifications_disabled_(false) { | 25 notifications_disabled_(false) { |
28 PopulateFromSyncData(sync_data); | 26 PopulateFromSyncData(sync_data); |
29 } | 27 } |
30 | 28 |
31 ExtensionSyncData::ExtensionSyncData(const SyncChange& sync_change) | 29 ExtensionSyncData::ExtensionSyncData(const SyncChange& sync_change) |
32 : uninstalled_(sync_change.change_type() == SyncChange::ACTION_DELETE) { | 30 : uninstalled_(sync_change.change_type() == SyncChange::ACTION_DELETE) { |
33 PopulateFromSyncData(sync_change.sync_data()); | 31 PopulateFromSyncData(sync_change.sync_data()); |
34 } | 32 } |
35 | 33 |
36 ExtensionSyncData::ExtensionSyncData(const Extension& extension, | 34 ExtensionSyncData::ExtensionSyncData(const Extension& extension, |
37 bool enabled, | 35 bool enabled, |
38 bool incognito_enabled, | 36 bool incognito_enabled, |
39 bool notifications_initial_setup_done, | 37 const std::string& notifications_client_id, |
40 bool notifications_disabled) | 38 bool notifications_disabled) |
41 : id_(extension.id()), | 39 : id_(extension.id()), |
42 uninstalled_(false), | 40 uninstalled_(false), |
43 enabled_(enabled), | 41 enabled_(enabled), |
44 incognito_enabled_(incognito_enabled), | 42 incognito_enabled_(incognito_enabled), |
45 type_(extension.GetSyncType()), | 43 type_(extension.GetSyncType()), |
46 version_(*extension.version()), | 44 version_(*extension.version()), |
47 update_url_(extension.update_url()), | 45 update_url_(extension.update_url()), |
48 name_(extension.name()), | 46 name_(extension.name()), |
49 notifications_initial_setup_done_(notifications_initial_setup_done), | 47 notifications_client_id_(notifications_client_id), |
50 notifications_disabled_(notifications_disabled) { | 48 notifications_disabled_(notifications_disabled) { |
51 } | 49 } |
52 | 50 |
53 ExtensionSyncData::~ExtensionSyncData() {} | 51 ExtensionSyncData::~ExtensionSyncData() {} |
54 | 52 |
55 void ExtensionSyncData::PopulateAppSpecifics( | 53 void ExtensionSyncData::PopulateAppSpecifics( |
56 sync_pb::AppSpecifics* specifics) const { | 54 sync_pb::AppSpecifics* specifics) const { |
57 DCHECK(specifics); | 55 DCHECK(specifics); |
58 sync_pb::AppNotificationSettings* notif_settings = | 56 sync_pb::AppNotificationSettings* notif_settings = |
59 specifics->mutable_notification_settings(); | 57 specifics->mutable_notification_settings(); |
60 notif_settings->set_initial_setup_done(notifications_initial_setup_done_); | 58 if (!notifications_client_id_.empty()) |
| 59 notif_settings->set_oauth_client_id(notifications_client_id_); |
61 notif_settings->set_disabled(notifications_disabled_); | 60 notif_settings->set_disabled(notifications_disabled_); |
62 PopulateSyncSpecifics(specifics->mutable_extension()); | 61 PopulateSyncSpecifics(specifics->mutable_extension()); |
63 } | 62 } |
64 | 63 |
65 void ExtensionSyncData::PopulateSyncSpecifics( | 64 void ExtensionSyncData::PopulateSyncSpecifics( |
66 sync_pb::ExtensionSpecifics* specifics) const { | 65 sync_pb::ExtensionSpecifics* specifics) const { |
67 DCHECK(Extension::IdIsValid(id_)); | 66 DCHECK(Extension::IdIsValid(id_)); |
68 specifics->set_id(id_); | 67 specifics->set_id(id_); |
69 specifics->set_update_url(update_url_.spec()); | 68 specifics->set_update_url(update_url_.spec()); |
70 specifics->set_version(version_.GetString()); | 69 specifics->set_version(version_.GetString()); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 const sync_pb::EntitySpecifics& entity_specifics = sync_data.GetSpecifics(); | 122 const sync_pb::EntitySpecifics& entity_specifics = sync_data.GetSpecifics(); |
124 sync_pb::ExtensionSpecifics extension_expecifics; | 123 sync_pb::ExtensionSpecifics extension_expecifics; |
125 if (entity_specifics.HasExtension(sync_pb::extension)) { | 124 if (entity_specifics.HasExtension(sync_pb::extension)) { |
126 extension_expecifics = entity_specifics.GetExtension(sync_pb::extension); | 125 extension_expecifics = entity_specifics.GetExtension(sync_pb::extension); |
127 type_ = Extension::SYNC_TYPE_EXTENSION; | 126 type_ = Extension::SYNC_TYPE_EXTENSION; |
128 } else if (entity_specifics.HasExtension(sync_pb::app)) { | 127 } else if (entity_specifics.HasExtension(sync_pb::app)) { |
129 sync_pb::AppSpecifics app_specifics = entity_specifics.GetExtension( | 128 sync_pb::AppSpecifics app_specifics = entity_specifics.GetExtension( |
130 sync_pb::app); | 129 sync_pb::app); |
131 extension_expecifics = app_specifics.extension(); | 130 extension_expecifics = app_specifics.extension(); |
132 type_ = Extension::SYNC_TYPE_APP; | 131 type_ = Extension::SYNC_TYPE_APP; |
133 notifications_initial_setup_done_ = | 132 if (app_specifics.has_notification_settings() && |
134 app_specifics.has_notification_settings() && | 133 app_specifics.notification_settings().has_oauth_client_id()) { |
135 app_specifics.notification_settings().has_initial_setup_done() && | 134 notifications_client_id_ = |
136 app_specifics.notification_settings().initial_setup_done(); | 135 app_specifics.notification_settings().oauth_client_id(); |
| 136 } |
| 137 |
137 notifications_disabled_ = | 138 notifications_disabled_ = |
138 app_specifics.has_notification_settings() && | 139 app_specifics.has_notification_settings() && |
139 app_specifics.notification_settings().has_disabled() && | 140 app_specifics.notification_settings().has_disabled() && |
140 app_specifics.notification_settings().disabled(); | 141 app_specifics.notification_settings().disabled(); |
141 } else { | 142 } else { |
142 LOG(FATAL) << "Attempt to sync bad EntitySpecifics."; | 143 LOG(FATAL) << "Attempt to sync bad EntitySpecifics."; |
143 } | 144 } |
144 PopulateFromExtensionSpecifics(extension_expecifics); | 145 PopulateFromExtensionSpecifics(extension_expecifics); |
145 } | 146 } |
146 | |
OLD | NEW |