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.
5 #include "wgt/wgt_installer.h"
7 #include <common/pkgmgr_interface.h>
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>
18 #include <wgt_manifest_handlers/widget_config_parser.h>
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"
47 namespace ci = common_installer;
51 WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
52 : AppInstaller("wgt", pkgrmgr) {
53 context_->backend_data.set(new WgtBackendData());
56 std::unique_ptr<ci::ArchiveInfo> WgtInstaller::GetArchiveInfo() {
57 std::unique_ptr<WgtArchiveInfo> archive_info;
58 archive_info.reset(new WgtArchiveInfo(pkgmgr_->GetRequestInfo(GetIndex())));
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>(
87 AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
88 ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
89 "CreateStorageDirectories",
90 wgt::filesystem::WgtAdditionalSharedDirs);
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",
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");
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");
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");
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",
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");
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);
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>(
200 AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
201 "CreateWgtSymbolicLink");
202 AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
203 ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
204 "CreateStorageDirectories",
205 wgt::filesystem::WgtAdditionalSharedDirs);
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",
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>(
230 AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
231 "CreateWgtSymbolicLink");
232 AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
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",
252 AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
254 AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateWgtSymbolicLink");
255 ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
256 "CreateStorageDirectories",
257 wgt::filesystem::WgtAdditionalSharedDirs);
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",
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",
279 AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
281 AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateWgtSymbolicLink");
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",
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>(
306 AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
307 "CreateWgtSymbolicLink");
308 AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
311 void WgtInstaller::ReadonlyUpdateUninstallSteps() {
312 AppInstaller::ReadonlyUpdateUninstallSteps();
313 AddStepBefore<wgt::configuration::StepSetOldSignatureFilesLocation>(
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");
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",
343 ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
344 "CreateStorageDirectories",
345 wgt::filesystem::WgtAdditionalSharedDirs);
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",
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",
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");
380 void WgtInstaller::MoveSteps() {
381 AppInstaller::MoveSteps();
384 void WgtInstaller::EnablePkgSteps() {
385 AppInstaller::EnablePkgSteps();
388 void WgtInstaller::DisablePkgSteps() {
389 AppInstaller::DisablePkgSteps();
392 void WgtInstaller::MigrateExtImgSteps() {
393 AppInstaller::MigrateExtImgSteps();
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");