DO NOT MERGE: Removed extra 'pulling file' message.

Taking a zip bugreport has 2 phases: generating the bugreport and
pulling the file.

Initially adb was printing 2 messages, but since the latter is almost
instantaneously, it could be confusing to have 2 lines...

Fixes: 30451250
Change-Id: I1c6cc6163492c1fb6064667dfdb7aaf6ed4c4c6f
(cherry picked from commit f7c38b4c03d75c9cb27610acab96f4e7f4169de8)
(cherry picked from commit 33ae849fefa1605a472ac82c2c4ee8eb0af23463)
diff --git a/adb/bugreport.cpp b/adb/bugreport.cpp
index 8a3eb08..64f01bd 100644
--- a/adb/bugreport.cpp
+++ b/adb/bugreport.cpp
@@ -30,7 +30,12 @@
 class BugreportStandardStreamsCallback : public StandardStreamsCallbackInterface {
   public:
     BugreportStandardStreamsCallback(const std::string& dest_file, bool show_progress, Bugreport* br)
-        : br_(br), dest_file_(dest_file), show_progress_(show_progress), status_(-1), line_() {
+        : br_(br),
+          dest_file_(dest_file),
+          line_message_(android::base::StringPrintf("generating %s", dest_file_.c_str())),
+          show_progress_(show_progress),
+          status_(-1),
+          line_() {
     }
 
     void OnStdout(const char* buffer, int length) {
@@ -62,12 +67,12 @@
         if (android::base::StartsWith(line, BUGZ_OK_PREFIX)) {
             if (show_progress_) {
                 // Make sure pull message doesn't conflict with generation message.
-                br_->UpdateProgress(dest_file_, 100, 100, true);
+                br_->UpdateProgress(line_message_, 100, 100);
             }
 
             const char* zip_file = &line[strlen(BUGZ_OK_PREFIX)];
             std::vector<const char*> srcs{zip_file};
-            status_ = br_->DoSyncPull(srcs, dest_file_.c_str(), true, dest_file_.c_str()) ? 0 : 1;
+            status_ = br_->DoSyncPull(srcs, dest_file_.c_str(), true, line_message_.c_str()) ? 0 : 1;
             if (status_ != 0) {
                 fprintf(stderr, "Could not copy file '%s' to '%s'\n", zip_file, dest_file_.c_str());
             }
@@ -96,6 +101,7 @@
 
     Bugreport* br_;
     const std::string dest_file_;
+    const std::string line_message_;
     bool show_progress_;
     int status_;
 
@@ -156,15 +162,11 @@
     return SendShellCommand(transport_type, serial, bugz_command, false, &bugz_callback);
 }
 
-void Bugreport::UpdateProgress(const std::string& file_name, int progress, int total,
-                               bool keep_info_line) {
+void Bugreport::UpdateProgress(const std::string& message, int progress, int total) {
     int progress_percentage = (progress * 100 / total);
-    line_printer_.Print(android::base::StringPrintf("[%3d%%] generating %s", progress_percentage,
-                                                    file_name.c_str()),
-                        LinePrinter::INFO);
-    if (keep_info_line) {
-        line_printer_.KeepInfoLine();
-    }
+    line_printer_.Print(
+        android::base::StringPrintf("[%3d%%] %s", progress_percentage, message.c_str()),
+        LinePrinter::INFO);
 }
 
 int Bugreport::SendShellCommand(TransportType transport_type, const char* serial,
diff --git a/adb/bugreport.h b/adb/bugreport.h
index fd11a4a..ee99cbc 100644
--- a/adb/bugreport.h
+++ b/adb/bugreport.h
@@ -43,8 +43,7 @@
                             const char* name);
 
   private:
-    virtual void UpdateProgress(const std::string& file_name, int progress, int total,
-                                bool keep_info_line = false);
+    virtual void UpdateProgress(const std::string& file_name, int progress, int total);
     LinePrinter line_printer_;
     DISALLOW_COPY_AND_ASSIGN(Bugreport);
 };
diff --git a/adb/bugreport_test.cpp b/adb/bugreport_test.cpp
index e695b24..a89d8dc 100644
--- a/adb/bugreport_test.cpp
+++ b/adb/bugreport_test.cpp
@@ -117,7 +117,7 @@
                      bool disable_shell_protocol, StandardStreamsCallbackInterface* callback));
     MOCK_METHOD4(DoSyncPull, bool(const std::vector<const char*>& srcs, const char* dst,
                                   bool copy_attrs, const char* name));
-    MOCK_METHOD4(UpdateProgress, void(const std::string&, int, int, bool));
+    MOCK_METHOD3(UpdateProgress, void(const std::string&, int, int));
 };
 
 class BugreportTest : public ::testing::Test {
@@ -129,8 +129,8 @@
                             WithArg<4>(ReturnCallbackDone(0))));
     }
 
-    void ExpectProgress(int progress, int total, bool keep_info_line = false) {
-        EXPECT_CALL(br_, UpdateProgress(StrEq("file.zip"), progress, total, keep_info_line));
+    void ExpectProgress(int progress, int total) {
+        EXPECT_CALL(br_, UpdateProgress(HasSubstr("file.zip"), progress, total));
     }
 
     BugreportMock br_;
@@ -159,7 +159,7 @@
         .WillOnce(DoAll(WithArg<4>(WriteOnStdout("OK:/device/bugreport.zip")),
                         WithArg<4>(ReturnCallbackDone())));
     EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"),
-                                true, StrEq("file.zip")))
+                                true, HasSubstr("file.zip")))
         .WillOnce(Return(true));
 
     const char* args[1024] = {"bugreport", "file.zip"};
@@ -175,7 +175,7 @@
                         WithArg<4>(WriteOnStdout("/bugreport.zip")),
                         WithArg<4>(ReturnCallbackDone())));
     EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"),
-                                true, StrEq("file.zip")))
+                                true, HasSubstr("file.zip")))
         .WillOnce(Return(true));
 
     const char* args[1024] = {"bugreport", "file.zip"};
@@ -189,7 +189,7 @@
     ExpectProgress(10, 100);
     ExpectProgress(50, 100);
     ExpectProgress(99, 100);
-    ExpectProgress(100, 100, true);
+    ExpectProgress(100, 100);
     // clang-format off
     EXPECT_CALL(br_, SendShellCommand(kTransportLocal, "HannibalLecter", "bugreportz -p", false, _))
         .WillOnce(DoAll(
@@ -208,7 +208,7 @@
             WithArg<4>(WriteOnStdout(".zip")),
             WithArg<4>(ReturnCallbackDone())));
     EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"),
-                                true, StrEq("file.zip")))
+                                true, HasSubstr("file.zip")))
         .WillOnce(Return(true));
 
     const char* args[1024] = {"bugreport", "file.zip"};
@@ -218,12 +218,12 @@
 // Tests 'adb bugreport file' when it succeeds
 TEST_F(BugreportTest, OkNoExtension) {
     SetBugreportzVersion("1.1");
-    ExpectProgress(100, 100, true);
+    ExpectProgress(100, 100);
     EXPECT_CALL(br_, SendShellCommand(kTransportLocal, "HannibalLecter", "bugreportz -p", false, _))
         .WillOnce(DoAll(WithArg<4>(WriteOnStdout("OK:/device/bugreport.zip\n")),
                         WithArg<4>(ReturnCallbackDone())));
     EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"),
-                                true, StrEq("file.zip")))
+                                true, HasSubstr("file.zip")))
         .WillOnce(Return(true));
 
     const char* args[1024] = {"bugreport", "file"};
@@ -294,12 +294,12 @@
 // Tests 'adb bugreport file.zip' when the bugreport could not be pulled
 TEST_F(BugreportTest, PullFails) {
     SetBugreportzVersion("1.1");
-    ExpectProgress(100, 100, true);
+    ExpectProgress(100, 100);
     EXPECT_CALL(br_, SendShellCommand(kTransportLocal, "HannibalLecter", "bugreportz -p", false, _))
         .WillOnce(DoAll(WithArg<4>(WriteOnStdout("OK:/device/bugreport.zip")),
                         WithArg<4>(ReturnCallbackDone())));
     EXPECT_CALL(br_, DoSyncPull(ElementsAre(StrEq("/device/bugreport.zip")), StrEq("file.zip"),
-                                true, StrEq("file.zip")))
+                                true, HasSubstr("file.zip")))
         .WillOnce(Return(false));
 
     const char* args[1024] = {"bugreport", "file.zip"};