OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/app_sync_data.h" | 5 #include "chrome/browser/extensions/app_sync_data.h" |
6 | 6 |
7 #include "chrome/common/extensions/manifest_handlers/app_icon_color_info.h" | 7 #include "chrome/common/extensions/manifest_handlers/app_icon_color_info.h" |
8 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 8 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
9 #include "extensions/common/extension.h" | 9 #include "extensions/common/extension.h" |
10 #include "sync/api/sync_data.h" | 10 #include "sync/api/sync_data.h" |
11 #include "sync/protocol/app_specifics.pb.h" | 11 #include "sync/protocol/app_specifics.pb.h" |
12 #include "sync/protocol/sync.pb.h" | 12 #include "sync/protocol/sync.pb.h" |
13 | 13 |
14 namespace extensions { | 14 namespace extensions { |
15 | 15 |
16 AppSyncData::AppSyncData() {} | 16 AppSyncData::AppSyncData() {} |
17 | 17 |
18 AppSyncData::AppSyncData(const syncer::SyncData& sync_data) { | |
19 PopulateFromSyncData(sync_data); | |
20 } | |
21 | |
22 AppSyncData::AppSyncData(const syncer::SyncChange& sync_change) { | |
23 PopulateFromSyncData(sync_change.sync_data()); | |
24 extension_sync_data_.set_uninstalled( | |
25 sync_change.change_type() == syncer::SyncChange::ACTION_DELETE); | |
26 } | |
27 | |
28 AppSyncData::AppSyncData(const Extension& extension, | 18 AppSyncData::AppSyncData(const Extension& extension, |
29 bool enabled, | 19 bool enabled, |
30 bool incognito_enabled, | 20 bool incognito_enabled, |
31 bool remote_install, | 21 bool remote_install, |
32 ExtensionSyncData::OptionalBoolean all_urls_enabled, | 22 ExtensionSyncData::OptionalBoolean all_urls_enabled, |
33 const syncer::StringOrdinal& app_launch_ordinal, | 23 const syncer::StringOrdinal& app_launch_ordinal, |
34 const syncer::StringOrdinal& page_ordinal, | 24 const syncer::StringOrdinal& page_ordinal, |
35 extensions::LaunchType launch_type) | 25 extensions::LaunchType launch_type) |
36 : extension_sync_data_(extension, | 26 : extension_sync_data_(extension, |
37 enabled, | 27 enabled, |
38 incognito_enabled, | 28 incognito_enabled, |
39 remote_install, | 29 remote_install, |
40 all_urls_enabled), | 30 all_urls_enabled), |
41 app_launch_ordinal_(app_launch_ordinal), | 31 app_launch_ordinal_(app_launch_ordinal), |
42 page_ordinal_(page_ordinal), | 32 page_ordinal_(page_ordinal), |
43 launch_type_(launch_type) { | 33 launch_type_(launch_type) { |
44 if (extension.from_bookmark()) { | 34 if (extension.from_bookmark()) { |
45 bookmark_app_description_ = extension.description(); | 35 bookmark_app_description_ = extension.description(); |
46 bookmark_app_url_ = AppLaunchInfo::GetLaunchWebURL(&extension).spec(); | 36 bookmark_app_url_ = AppLaunchInfo::GetLaunchWebURL(&extension).spec(); |
47 bookmark_app_icon_color_ = AppIconColorInfo::GetIconColorString(&extension); | 37 bookmark_app_icon_color_ = AppIconColorInfo::GetIconColorString(&extension); |
48 } | 38 } |
49 } | 39 } |
50 | 40 |
51 AppSyncData::~AppSyncData() {} | 41 AppSyncData::~AppSyncData() {} |
52 | 42 |
| 43 // static |
| 44 scoped_ptr<AppSyncData> AppSyncData::CreateFromSyncData( |
| 45 const syncer::SyncData& sync_data) { |
| 46 scoped_ptr<AppSyncData> data(new AppSyncData); |
| 47 if (data->PopulateFromSyncData(sync_data)) |
| 48 return data.Pass(); |
| 49 return NULL; |
| 50 } |
| 51 |
| 52 // static |
| 53 scoped_ptr<AppSyncData> AppSyncData::CreateFromSyncChange( |
| 54 const syncer::SyncChange& sync_change) { |
| 55 scoped_ptr<AppSyncData> data(CreateFromSyncData(sync_change.sync_data())); |
| 56 if (!data.get()) |
| 57 return NULL; |
| 58 |
| 59 data->extension_sync_data_.set_uninstalled(sync_change.change_type() == |
| 60 syncer::SyncChange::ACTION_DELETE); |
| 61 return data.Pass(); |
| 62 } |
| 63 |
53 syncer::SyncData AppSyncData::GetSyncData() const { | 64 syncer::SyncData AppSyncData::GetSyncData() const { |
54 sync_pb::EntitySpecifics specifics; | 65 sync_pb::EntitySpecifics specifics; |
55 PopulateAppSpecifics(specifics.mutable_app()); | 66 PopulateAppSpecifics(specifics.mutable_app()); |
56 | 67 |
57 return syncer::SyncData::CreateLocalData(extension_sync_data_.id(), | 68 return syncer::SyncData::CreateLocalData(extension_sync_data_.id(), |
58 extension_sync_data_.name(), | 69 extension_sync_data_.name(), |
59 specifics); | 70 specifics); |
60 } | 71 } |
61 | 72 |
62 syncer::SyncChange AppSyncData::GetSyncChange( | 73 syncer::SyncChange AppSyncData::GetSyncChange( |
(...skipping 25 matching lines...) Expand all Loading... |
88 if (!bookmark_app_description_.empty()) | 99 if (!bookmark_app_description_.empty()) |
89 specifics->set_bookmark_app_description(bookmark_app_description_); | 100 specifics->set_bookmark_app_description(bookmark_app_description_); |
90 | 101 |
91 if (!bookmark_app_icon_color_.empty()) | 102 if (!bookmark_app_icon_color_.empty()) |
92 specifics->set_bookmark_app_icon_color(bookmark_app_icon_color_); | 103 specifics->set_bookmark_app_icon_color(bookmark_app_icon_color_); |
93 | 104 |
94 extension_sync_data_.PopulateExtensionSpecifics( | 105 extension_sync_data_.PopulateExtensionSpecifics( |
95 specifics->mutable_extension()); | 106 specifics->mutable_extension()); |
96 } | 107 } |
97 | 108 |
98 void AppSyncData::PopulateFromAppSpecifics( | 109 bool AppSyncData::PopulateFromAppSpecifics( |
99 const sync_pb::AppSpecifics& specifics) { | 110 const sync_pb::AppSpecifics& specifics) { |
100 extension_sync_data_.PopulateFromExtensionSpecifics(specifics.extension()); | 111 if (!extension_sync_data_.PopulateFromExtensionSpecifics( |
| 112 specifics.extension())) |
| 113 return false; |
101 | 114 |
102 app_launch_ordinal_ = syncer::StringOrdinal(specifics.app_launch_ordinal()); | 115 app_launch_ordinal_ = syncer::StringOrdinal(specifics.app_launch_ordinal()); |
103 page_ordinal_ = syncer::StringOrdinal(specifics.page_ordinal()); | 116 page_ordinal_ = syncer::StringOrdinal(specifics.page_ordinal()); |
104 | 117 |
105 launch_type_ = specifics.has_launch_type() | 118 launch_type_ = specifics.has_launch_type() |
106 ? static_cast<extensions::LaunchType>(specifics.launch_type()) | 119 ? static_cast<extensions::LaunchType>(specifics.launch_type()) |
107 : LAUNCH_TYPE_INVALID; | 120 : LAUNCH_TYPE_INVALID; |
108 | 121 |
109 bookmark_app_url_ = specifics.bookmark_app_url(); | 122 bookmark_app_url_ = specifics.bookmark_app_url(); |
110 bookmark_app_description_ = specifics.bookmark_app_description(); | 123 bookmark_app_description_ = specifics.bookmark_app_description(); |
111 bookmark_app_icon_color_ = specifics.bookmark_app_icon_color(); | 124 bookmark_app_icon_color_ = specifics.bookmark_app_icon_color(); |
| 125 return true; |
112 } | 126 } |
113 | 127 |
114 void AppSyncData::PopulateFromSyncData(const syncer::SyncData& sync_data) { | 128 bool AppSyncData::PopulateFromSyncData(const syncer::SyncData& sync_data) { |
115 PopulateFromAppSpecifics(sync_data.GetSpecifics().app()); | 129 return PopulateFromAppSpecifics(sync_data.GetSpecifics().app()); |
116 } | 130 } |
117 | 131 |
118 } // namespace extensions | 132 } // namespace extensions |
OLD | NEW |