Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c88aec1f authored by Nandana Dutt's avatar Nandana Dutt Committed by Automerger Merge Worker
Browse files

Merge "Handle cancelBugreport" into rvc-dev am: 5f8d2338 am: 9432620e am:...

Merge "Handle cancelBugreport" into rvc-dev am: 5f8d2338 am: 9432620e am: 1e228d56 am: 85aa50ae

Change-Id: Ib3d0d7646616e1f7122168625a87673d073e83ea
parents fe85c63e 85aa50ae
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -148,14 +148,13 @@ binder::Status DumpstateService::startBugreport(int32_t calling_uid,
}

binder::Status DumpstateService::cancelBugreport() {
    // This is a no-op since the cancellation is done from java side via setting sys properties.
    // See BugreportManagerServiceImpl.
    // TODO(b/111441001): maybe make native and java sides use different binder interface
    // to avoid these annoyances.
    std::lock_guard<std::mutex> lock(lock_);
    ds_->Cancel();
    return binder::Status::ok();
}

status_t DumpstateService::dump(int fd, const Vector<String16>&) {
    std::lock_guard<std::mutex> lock(lock_);
    if (ds_ == nullptr) {
        dprintf(fd, "Bugreport not in progress yet");
        return NO_ERROR;
+16 −3
Original line number Diff line number Diff line
@@ -239,6 +239,9 @@ static bool CopyFileToFd(const std::string& input_file, int out_fd) {
}

static bool UnlinkAndLogOnError(const std::string& file) {
    if (file.empty()) {
        return false;
    }
    if (unlink(file.c_str())) {
        MYLOGE("Failed to unlink file (%s): %s\n", file.c_str(), strerror(errno));
        return false;
@@ -246,7 +249,6 @@ static bool UnlinkAndLogOnError(const std::string& file) {
    return true;
}


int64_t GetModuleMetadataVersion() {
    auto binder = defaultServiceManager()->getService(android::String16("package_native"));
    if (binder == nullptr) {
@@ -2419,6 +2421,17 @@ Dumpstate::RunStatus Dumpstate::Run(int32_t calling_uid, const std::string& call
    return status;
}

void Dumpstate::Cancel() {
    CleanupTmpFiles();
    android::os::UnlinkAndLogOnError(log_path_);
    for (int i = 0; i < NUM_OF_DUMPS; i++) {
        android::os::UnlinkAndLogOnError(ds.bugreport_internal_dir_ + "/" +
                                         kDumpstateBoardFiles[i]);
    }
    tombstone_data_.clear();
    anr_data_.clear();
}

/*
 * Dumps relevant information to a bugreport based on the given options.
 *
@@ -2755,7 +2768,7 @@ bool Dumpstate::CalledByApi() const {
    return ds.options_->bugreport_fd.get() != -1 ? true : false;
}

void Dumpstate::CleanupFiles() {
void Dumpstate::CleanupTmpFiles() {
    android::os::UnlinkAndLogOnError(tmp_path_);
    android::os::UnlinkAndLogOnError(screenshot_path_);
    android::os::UnlinkAndLogOnError(path_);
@@ -2763,7 +2776,7 @@ void Dumpstate::CleanupFiles() {

Dumpstate::RunStatus Dumpstate::HandleUserConsentDenied() {
    MYLOGD("User denied consent; deleting files and returning\n");
    CleanupFiles();
    CleanupTmpFiles();
    return USER_CONSENT_DENIED;
}

+4 −1
Original line number Diff line number Diff line
@@ -334,6 +334,9 @@ class Dumpstate {

    RunStatus ParseCommandlineAndRun(int argc, char* argv[]);

    /* Deletes in-progress files */
    void Cancel();

    /* Sets runtime options. */
    void SetOptions(std::unique_ptr<DumpOptions> options);

@@ -502,7 +505,7 @@ class Dumpstate {

    // Removes the in progress files output files (tmp file, zip/txt file, screenshot),
    // but leaves the log file alone.
    void CleanupFiles();
    void CleanupTmpFiles();

    RunStatus HandleUserConsentDenied();