From d3cca0d842e94104dfcadec19f0e54f43001f727 Mon Sep 17 00:00:00 2001 From: Abhijeet Kaur Date: Mon, 25 Mar 2019 12:04:16 +0000 Subject: Lite bugreports(wifi/telephony) don't need screenshots Set do_fb to false for lite bugreports to not take screenshots. Also, add a nonempty check for screenshot files before broadcasting to notification. This way while sharing or uploading to drive/gmail by clicking the "Share" button would not show empty file (Not able to upload) error. Update unit tests to check for do_fb set to false for wifi/telephony. Bug: 128546970 Test: Manually take a wifi bugreport: * adb root * adb shell setprop dumpstate.options bugreportwifi * adb shell dumpstate * share bugreport from the notification to the drive * No upload failures (previously screenshot would show "Upload was unsuccessful" notification.) Test: * adb shell mkdir /data/nativetest64 * mmm -j frameworks/native/cmds/dumpstate/ && adb push ${OUT}/data/nativetest64/dumpstate_test* /data/nativetest64 && adb shell /data/nativetest64/dumpstate_test/dumpstate_test && printf "\n\n#### ALL TESTS PASSED ####\n" Change-Id: I0d2fe2a64f91dee7d090d5f8353e86d51ed5fb94 --- cmds/dumpstate/dumpstate.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'cmds/dumpstate/dumpstate.cpp') diff --git a/cmds/dumpstate/dumpstate.cpp b/cmds/dumpstate/dumpstate.cpp index 51b230748e..a66a8c16b2 100644 --- a/cmds/dumpstate/dumpstate.cpp +++ b/cmds/dumpstate/dumpstate.cpp @@ -34,6 +34,7 @@ #include #include +#include #include #include #include @@ -181,6 +182,15 @@ static bool UnlinkAndLogOnError(const std::string& file) { return true; } +static bool IsFileEmpty(const std::string& file_path) { + std::ifstream file(file_path, std::ios::binary | std::ios::ate); + if(file.bad()) { + MYLOGE("Cannot open file: %s\n", file_path.c_str()); + return true; + } + return file.tellg() <= 0; +} + } // namespace } // namespace os } // namespace android @@ -2085,7 +2095,7 @@ static void SendBugreportFinishedBroadcast() { "--es", "android.intent.extra.DUMPSTATE_LOG", ds.log_path_ }; // clang-format on - if (ds.options_->do_fb) { + if (ds.options_->do_fb && !android::os::IsFileEmpty(ds.screenshot_path_)) { am_args.push_back("--es"); am_args.push_back("android.intent.extra.SCREENSHOT"); am_args.push_back(ds.screenshot_path_); @@ -2161,13 +2171,13 @@ static void SetOptionsFromMode(Dumpstate::BugreportMode mode, Dumpstate::DumpOpt break; case Dumpstate::BugreportMode::BUGREPORT_TELEPHONY: options->telephony_only = true; - options->do_fb = true; + options->do_fb = false; options->do_broadcast = true; break; case Dumpstate::BugreportMode::BUGREPORT_WIFI: options->wifi_only = true; options->do_zip_file = true; - options->do_fb = true; + options->do_fb = false; options->do_broadcast = true; break; case Dumpstate::BugreportMode::BUGREPORT_DEFAULT: -- cgit v1.2.3-59-g8ed1b