summaryrefslogtreecommitdiff
path: root/cmds/idmap2/idmap2d/Idmap2Service.cpp
diff options
context:
space:
mode:
authorMÃ¥rten Kongstad <marten.kongstad@volvocars.com>2021-05-10 11:00:17 +0000
committerRyan Mitchell <rtmitchell@google.com>2021-06-02 21:54:40 +0000
commit99ae898d3cc484de91bd8df6c93514c25f0b0dce (patch)
tree7ff728cccba7456f3e0c2ed98f88f12c097e9923 /cmds/idmap2/idmap2d/Idmap2Service.cpp
parenta384fb763717ac0b841605b0b16b23784c09fc90 (diff)
OMS: include idmap data in dump
Teach the overlay manager to ask the idmap service to pretty print the contents of each idmap file as part of OMS dump. This creates a single entry point for dumping both OMS and idmap data, and circumvents the problem of accessing the idmap service if it has been killed due to inactivity. Example idmap section: ---- 8< ---- IDMAP OF com.android.theme.color.sand Paths: target path : /system/framework/framework-res.apk overlay path : /product/overlay/AccentColorSand/AccentColorSandOverlay.apk Debug info: W failed to find resource 'string/accent_color_overlay' Mapping: 0x0106006e -> 0x7f010000 (color/accent_device_default_dark -> color/accent_device_default_dark) 0x01060070 -> 0x7f010001 (color/accent_device_default_light -> color/accent_device_default_light) ---- >8 ---- Bug: 189963636 Test: adb exec-out dumpsys Test: adb exec-out cmd overlay dump Test: adb exec-out cmd overlay dump <overlay-identifier> Change-Id: I9de6ba646ad4714c9d0f0d8081fbf632577107e7
Diffstat (limited to 'cmds/idmap2/idmap2d/Idmap2Service.cpp')
-rw-r--r--cmds/idmap2/idmap2d/Idmap2Service.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/cmds/idmap2/idmap2d/Idmap2Service.cpp b/cmds/idmap2/idmap2d/Idmap2Service.cpp
index 4f775aa52195..73a7240219af 100644
--- a/cmds/idmap2/idmap2d/Idmap2Service.cpp
+++ b/cmds/idmap2/idmap2d/Idmap2Service.cpp
@@ -33,6 +33,7 @@
#include "idmap2/BinaryStreamVisitor.h"
#include "idmap2/FileUtils.h"
#include "idmap2/Idmap.h"
+#include "idmap2/PrettyPrintVisitor.h"
#include "idmap2/Result.h"
#include "idmap2/SysTrace.h"
@@ -45,6 +46,7 @@ using android::idmap2::FabricatedOverlayContainer;
using android::idmap2::Idmap;
using android::idmap2::IdmapHeader;
using android::idmap2::OverlayResourceContainer;
+using android::idmap2::PrettyPrintVisitor;
using android::idmap2::TargetResourceContainer;
using android::idmap2::utils::kIdmapCacheDir;
using android::idmap2::utils::kIdmapFilePermissionMask;
@@ -352,4 +354,24 @@ binder::Status Idmap2Service::deleteFabricatedOverlay(const std::string& overlay
return ok();
}
+binder::Status Idmap2Service::dumpIdmap(const std::string& overlay_path,
+ std::string* _aidl_return) {
+ assert(_aidl_return);
+
+ const auto idmap_path = Idmap::CanonicalIdmapPathFor(kIdmapCacheDir, overlay_path);
+ std::ifstream fin(idmap_path);
+ const auto idmap = Idmap::FromBinaryStream(fin);
+ fin.close();
+ if (!idmap) {
+ return error(idmap.GetErrorMessage());
+ }
+
+ std::stringstream stream;
+ PrettyPrintVisitor visitor(stream);
+ (*idmap)->accept(&visitor);
+ *_aidl_return = stream.str();
+
+ return ok();
+}
+
} // namespace android::os