Fix StepCheckOldCertificate
[platform/core/appfw/wgt-backend.git] / src / wgt / wgt_installer.cc
1 // Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
2 // Use of this source code is governed by an apache-2.0 license that can be
3 // found in the LICENSE file.
4
5 #include "wgt/wgt_installer.h"
6
7 #include <common/pkgmgr_interface.h>
8
9 #include <common/privileges.h>
10 #include <common/step/filesystem/step_create_icons.h>
11 #include <common/step/filesystem/step_create_storage_directories.h>
12 #include <common/step/filesystem/step_delta_patch.h>
13 #include <common/step/filesystem/step_remove_per_user_storage_directories.h>
14 #include <common/step/security/step_check_old_certificate.h>
15 #include <common/step/security/step_privilege_compatibility.h>
16 #include <common/step/security/step_recover_privilege_compatibility.h>
17
18 #include <wgt_manifest_handlers/widget_config_parser.h>
19
20 #include "lib/wgt_archive_info.h"
21 #include "wgt/utils/shared_dirs.h"
22 #include "wgt/step/configuration/step_check_rds_manifest.h"
23 #include "wgt/step/configuration/step_check_start_files.h"
24 #include "wgt/step/configuration/step_parse.h"
25 #include "wgt/step/configuration/step_set_old_signature_files_location.h"
26 #include "wgt/step/encryption/step_encrypt_resources.h"
27 #include "wgt/step/encryption/step_remove_encryption_data.h"
28 #include "wgt/step/filesystem/step_copy_preview_icons.h"
29 #include "wgt/step/filesystem/step_create_wgt_symbolic_link.h"
30 #include "wgt/step/filesystem/step_restore_wgt_symbolic_link.h"
31 #include "wgt/step/filesystem/step_wgt_patch_icons.h"
32 #include "wgt/step/filesystem/step_wgt_patch_storage_directories.h"
33 #include "wgt/step/filesystem/step_wgt_prepare_package_directory.h"
34 #include "wgt/step/filesystem/step_wgt_resource_directory.h"
35 #include "wgt/step/filesystem/step_wgt_undo_patch_storage_directories.h"
36 #include "wgt/step/filesystem/step_wgt_update_package_directory.h"
37 #include "wgt/step/pkgmgr/step_generate_xml.h"
38 #include "wgt/step/security/step_add_default_privileges.h"
39 #include "wgt/step/security/step_check_settings_level.h"
40 #include "wgt/step/security/step_check_wgt_background_category.h"
41 #include "wgt/step/security/step_check_wgt_notification_category.h"
42 #include "wgt/step/security/step_check_wgt_ime_privilege.h"
43 #include "wgt/step/security/step_direct_manifest_signature.h"
44 #include "wgt/step/security/step_check_extension_privileges.h"
45 #include "wgt/step/security/step_wgt_recover_signature.h"
46
47 namespace ci = common_installer;
48
49 namespace wgt {
50
51 WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
52     : AppInstaller("wgt", pkgrmgr) {
53   context_->backend_data.set(new WgtBackendData());
54 }
55
56 std::unique_ptr<ci::ArchiveInfo> WgtInstaller::GetArchiveInfo() {
57   std::unique_ptr<WgtArchiveInfo> archive_info;
58   archive_info.reset(new WgtArchiveInfo(pkgmgr_->GetRequestInfo(GetIndex())));
59   return archive_info;
60 }
61
62 void WgtInstaller::InstallSteps() {
63   AppInstaller::InstallSteps();
64   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
65       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
66   AddStepAfter<ci::security::StepPrivilegeCompatibility>("Signature",
67       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
68   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
69   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
70       "CheckSettingsLevel");
71   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
72       "CheckWgtBackgroundCategory");
73   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
74       "CheckWgtNotificationCategory");
75   AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
76   AddStepAfter<wgt::filesystem::StepWgtResourceDirectory>("EncryptResources");
77   RemoveStep("CreateIcons");
78   AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>("CopyTep");
79   AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
80       "WgtPatchStorageDirectories");
81   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>(
82       "CreateWgtSymbolicLink", true);
83   AddStepAfter<ci::filesystem::StepCreateIcons>("WgtPatchIcons");
84   AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("CreateIcons");
85   AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
86       "CopyPreviewIcons");
87   AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
88   ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
89       "CreateStorageDirectories",
90       wgt::filesystem::WgtAdditionalSharedDirs);
91 }
92
93 void WgtInstaller::UpdateSteps() {
94   AppInstaller::UpdateSteps();
95   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
96       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
97   ReplaceStep<ci::security::StepCheckOldCertificate>("CheckOldCertificate",
98         "res/wgt/");
99   AddStepAfter<ci::security::StepPrivilegeCompatibility>("CheckOldCertificate",
100       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
101   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
102   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
103       "CheckSettingsLevel");
104   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
105       "CheckWgtBackgroundCategory");
106   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
107       "CheckWgtNotificationCategory");
108   AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
109   AddStepAfter<wgt::filesystem::StepWgtResourceDirectory>("EncryptResources");
110   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
111   AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
112   AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>("UpdateTep");
113   AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
114   AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
115       "CreateWgtSymbolicLink");
116   AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
117 }
118
119 void WgtInstaller::UninstallSteps() {
120   AppInstaller::UninstallSteps();
121   ReplaceStep<ci::filesystem::StepRemovePerUserStorageDirectories>(
122       "RemovePerUserStorageDirectories",
123       wgt::filesystem::WgtAdditionalSharedDirs);
124   AddStepAfter<wgt::filesystem::StepRestoreWgtSymbolicLink>(
125       "RemovePerUserStorageDirectories");
126   AddStepAfter<wgt::encryption::StepRemoveEncryptionData>(
127       "RemovePerUserStorageDirectories");
128 }
129
130 void WgtInstaller::ReinstallSteps() {
131   AppInstaller::ReinstallSteps();
132   AddStepAfter<wgt::configuration::StepCheckRDSManifest>("Configure");
133   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
134       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, false);
135   // Unlike reinstall mode (RDS) of tpk-backend, the RDS package of wgt does not
136   // contain signature files. This may can be changed differently later.
137   RemoveStep("Signature");
138   RemoveStep("CheckOldCertificate");
139   AddStepAfter<wgt::security::StepCheckExtensionPrivileges>("CreateIcons");
140 }
141
142 void WgtInstaller::DeltaSteps() {
143   AppInstaller::DeltaSteps();
144   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
145       wgt::configuration::StepParse::ConfigLocation::PACKAGE, false);
146   ReplaceStep<ci::security::StepCheckOldCertificate>("CheckOldCertificate",
147         "res/wgt/");
148   AddStepAfter<wgt::filesystem::StepWgtUndoPatchStorageDirectories>(
149       "EnableExternalMount");
150   ReplaceStep<ci::filesystem::StepDeltaPatch>("DeltaPatch", "res/wgt/");
151   AddStepAfter<wgt::configuration::StepCheckStartFiles>("DisableExternalMount");
152   AddStepAfter<ci::security::StepPrivilegeCompatibility>("CheckOldCertificate",
153       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
154   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
155   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
156       "CheckSettingsLevel");
157   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
158       "CheckWgtBackgroundCategory");
159   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
160       "CheckWgtNotificationCategory");
161   AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
162   AddStepAfter<wgt::filesystem::StepWgtResourceDirectory>("EncryptResources");
163   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
164   AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
165   AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>("UpdateTep");
166   AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
167   AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
168       "CreateWgtSymbolicLink");
169   AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
170 }
171
172 void WgtInstaller::RecoverySteps() {
173   AppInstaller::RecoverySteps();
174   AddStepAfter<wgt::security::StepWgtRecoverSignature>("MountRecover");
175   AddStepAfter<ci::security::StepRecoverPrivilegeCompatibility>(
176       "WgtRecoverSignature",
177       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
178 }
179
180 void WgtInstaller::MountInstallSteps() {
181   AppInstaller::MountInstallSteps();
182   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
183       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
184   AddStepAfter<ci::security::StepPrivilegeCompatibility>("Signature",
185       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
186   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
187   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
188       "CheckSettingsLevel");
189   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
190       "CheckWgtBackgroundCategory");
191   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
192       "CheckWgtNotificationCategory");
193   AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
194   AddStepAfter<wgt::filesystem::StepWgtPreparePackageDirectory>("MountInstall");
195   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
196   AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
197   AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>("CopyTep");
198   AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
199       "CopyPreviewIcons");
200   AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
201       "CreateWgtSymbolicLink");
202   AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
203   ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
204       "CreateStorageDirectories",
205       wgt::filesystem::WgtAdditionalSharedDirs);
206 }
207
208 void WgtInstaller::MountUpdateSteps() {
209   AppInstaller::MountUpdateSteps();
210   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
211       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
212   ReplaceStep<ci::security::StepCheckOldCertificate>("CheckOldCertificate",
213         "res/wgt/");
214   AddStepAfter<ci::security::StepPrivilegeCompatibility>("CheckOldCertificate",
215       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
216   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
217   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
218       "CheckSettingsLevel");
219   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
220       "CheckWgtBackgroundCategory");
221   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
222       "CheckWgtNotificationCategory");
223   AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
224   AddStepAfter<wgt::filesystem::StepWgtUpdatePackageDirectory>("MountUpdate");
225   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
226   AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
227   AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>("UpdateTep");
228   AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
229       "CopyPreviewIcons");
230   AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
231       "CreateWgtSymbolicLink");
232   AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
233 }
234
235 void WgtInstaller::ManifestDirectInstallSteps() {
236   AppInstaller::ManifestDirectInstallSteps();
237   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
238       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
239   ReplaceStep<wgt::security::StepDirectManifestSignature>("Signature", true);
240   AddStepAfter<ci::security::StepPrivilegeCompatibility>(
241       "DirectManifestSignature",
242       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
243   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
244   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
245       "CheckSettingsLevel");
246   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
247       "CheckWgtBackgroundCategory");
248   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
249       "CheckWgtNotificationCategory");
250   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("RemoveGlobalAppSymlinks",
251       true);
252   AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
253       "WgtPatchIcons");
254   AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateWgtSymbolicLink");
255   ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
256       "CreateStorageDirectories",
257       wgt::filesystem::WgtAdditionalSharedDirs);
258 }
259
260 void WgtInstaller::ManifestDirectUpdateSteps() {
261   AppInstaller::ManifestDirectUpdateSteps();
262   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
263       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
264   ReplaceStep<wgt::security::StepDirectManifestSignature>("Signature", true);
265   ReplaceStep<ci::security::StepCheckOldCertificate>("CheckOldCertificate",
266         "res/wgt/");
267   AddStepAfter<ci::security::StepPrivilegeCompatibility>(
268       "CheckOldCertificate",
269       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
270   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
271   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
272       "CheckSettingsLevel");
273   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
274       "CheckWgtBackgroundCategory");
275   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
276       "CheckWgtNotificationCategory");
277   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("RemoveGlobalAppSymlinks",
278       true);
279   AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
280       "WgtPatchIcons");
281   AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateWgtSymbolicLink");
282 }
283
284 void WgtInstaller::ReadonlyUpdateInstallSteps() {
285   AppInstaller::ReadonlyUpdateInstallSteps();
286   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
287       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
288   ReplaceStep<ci::security::StepCheckOldCertificate>("CheckOldCertificate",
289         "res/wgt/");
290   AddStepAfter<ci::security::StepPrivilegeCompatibility>("CheckOldCertificate",
291       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
292   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
293   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
294       "CheckSettingsLevel");
295   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
296       "CheckWgtBackgroundCategory");
297   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
298       "CheckWgtNotificationCategory");
299   AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
300   AddStepAfter<wgt::filesystem::StepWgtResourceDirectory>("EncryptResources");
301   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
302   AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
303   AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>("CopyTep");
304   AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
305       "CopyPreviewIcons");
306   AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
307       "CreateWgtSymbolicLink");
308   AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
309 }
310
311 void WgtInstaller::ReadonlyUpdateUninstallSteps() {
312   AppInstaller::ReadonlyUpdateUninstallSteps();
313   AddStepBefore<wgt::configuration::StepSetOldSignatureFilesLocation>(
314       "Signature");
315   AddStepAfter<ci::security::StepPrivilegeCompatibility>("Signature",
316       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
317   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
318   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
319       "CheckSettingsLevel");
320   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
321       "CheckWgtBackgroundCategory");
322   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
323       "CheckWgtNotificationCategory");
324 }
325
326 void WgtInstaller::ManifestPartialInstallSteps() {
327   AppInstaller::ManifestPartialInstallSteps();
328   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
329       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
330   ReplaceStep<wgt::security::StepDirectManifestSignature>("Signature", false);
331   AddStepAfter<ci::security::StepPrivilegeCompatibility>(
332       "DirectManifestSignature",
333       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
334   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
335   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
336       "CheckSettingsLevel");
337   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
338       "CheckWgtBackgroundCategory");
339   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
340       "CheckWgtNotificationCategory");
341   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("RemoveGlobalAppSymlinks",
342       false);
343   ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
344       "CreateStorageDirectories",
345       wgt::filesystem::WgtAdditionalSharedDirs);
346 }
347
348 void WgtInstaller::ManifestPartialUpdateSteps() {
349   AppInstaller::ManifestPartialUpdateSteps();
350   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
351       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
352   ReplaceStep<wgt::security::StepDirectManifestSignature>("Signature", false);
353   ReplaceStep<ci::security::StepCheckOldCertificate>("CheckOldCertificate",
354         "res/wgt/");
355   AddStepAfter<ci::security::StepPrivilegeCompatibility>(
356       "CheckOldCertificate",
357       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
358   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
359   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
360       "CheckSettingsLevel");
361   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
362       "CheckWgtBackgroundCategory");
363   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
364       "CheckWgtNotificationCategory");
365   AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("RemoveGlobalAppSymlinks",
366       false);
367 }
368
369 void WgtInstaller::PartialUninstallSteps() {
370   AppInstaller::PartialUninstallSteps();
371   ReplaceStep<ci::filesystem::StepRemovePerUserStorageDirectories>(
372       "RemovePerUserStorageDirectories",
373       wgt::filesystem::WgtAdditionalSharedDirs);
374   AddStepAfter<wgt::filesystem::StepRestoreWgtSymbolicLink>(
375       "RemovePerUserStorageDirectories");
376   AddStepAfter<wgt::encryption::StepRemoveEncryptionData>(
377       "RemovePerUserStorageDirectories");
378 }
379
380 void WgtInstaller::MoveSteps() {
381   AppInstaller::MoveSteps();
382 }
383
384 void WgtInstaller::EnablePkgSteps() {
385   AppInstaller::EnablePkgSteps();
386 }
387
388 void WgtInstaller::DisablePkgSteps() {
389   AppInstaller::DisablePkgSteps();
390 }
391
392 void WgtInstaller::MigrateExtImgSteps() {
393   AppInstaller::MigrateExtImgSteps();
394 }
395
396 void WgtInstaller::RecoverDBSteps() {
397   AppInstaller::RecoverDBSteps();
398   ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
399       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
400   AddStepAfter<ci::security::StepPrivilegeCompatibility>("GetPrivilegeLevel",
401       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
402   AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
403   AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
404       "CheckSettingsLevel");
405   AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
406       "CheckWgtBackgroundCategory");
407   AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
408       "CheckWgtNotificationCategory");
409 }
410
411 }  // namespace wgt