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

Commit 5e6a2497 authored by Pechetty Sravani (xWF)'s avatar Pechetty Sravani (xWF) Committed by Android (Google) Code Review
Browse files

Revert "Improve error message when invalid display id is passed to screencap with -d argument."

This reverts commit e696b74f.

Reason for revert: <Droidmonitor created revert due to b/393477524.Will be verified through ABTD for standard investigation.>

Change-Id: Ib5ed9640d568bbc79648118acd305f63ed2919f5
parent e696b74f
Loading
Loading
Loading
Loading
+12 −53
Original line number Diff line number Diff line
@@ -7,66 +7,25 @@ package {
    default_applicable_licenses: ["frameworks_base_license"],
}

cc_defaults {
    name: "screencap_defaults",
cc_binary {
    name: "screencap",

    cflags: [
        "-Wall",
        "-Werror",
        "-Wunreachable-code",
        "-Wunused",
    ],
    srcs: ["screencap.cpp"],

    shared_libs: [
        "libbinder",
        "libcutils",
        "libgui",
        "libhwui",
        "libutils",
        "libbinder",
        "libjnigraphics",
        "libhwui",
        "libui",
        "libutils",
    ],
}

cc_library {
    name: "libscreencap",

    defaults: [
        "screencap_defaults",
    ],

    srcs: ["screencap_utils.cpp"],
}

cc_binary {
    name: "screencap",

    defaults: [
        "screencap_defaults",
    ],

    srcs: ["screencap.cpp"],

    static_libs: [
        "libscreencap",
    ],
}

cc_test {
    name: "libscreencap_test",

    defaults: [
        "screencap_defaults",
    ],

    test_suites: ["device-tests"],

    srcs: [
        "tests/screencap_test.cpp",
        "libgui",
    ],

    static_libs: [
        "libgmock",
        "libscreencap",
    cflags: [
        "-Wall",
        "-Werror",
        "-Wunused",
        "-Wunreachable-code",
    ],
}

cmds/screencap/TEST_MAPPING

deleted100644 → 0
+0 −12
Original line number Diff line number Diff line
{
  "presubmit": [
    {
      "name": "libscreencap_test"
    }
  ],
  "hwasan-presubmit": [
    {
      "name": "libscreencap_test"
    }
  ]
}
 No newline at end of file
+27 −9
Original line number Diff line number Diff line
@@ -37,9 +37,6 @@
#include <ui/GraphicTypes.h>
#include <ui/PixelFormat.h>

#include "utils/Errors.h"
#include "screencap_utils.h"

using namespace android;

#define COLORSPACE_UNKNOWN    0
@@ -148,6 +145,24 @@ static status_t notifyMediaScanner(const char* fileName) {
    return NO_ERROR;
}

status_t capture(const DisplayId displayId,
            const gui::CaptureArgs& captureArgs,
            ScreenCaptureResults& outResult) {
    sp<SyncScreenCaptureListener> captureListener = new SyncScreenCaptureListener();
    ScreenshotClient::captureDisplay(displayId, captureArgs, captureListener);

    ScreenCaptureResults captureResults = captureListener->waitForResults();
    if (!captureResults.fenceResult.ok()) {
        fprintf(stderr, "Failed to take screenshot. Status: %d\n",
                fenceStatus(captureResults.fenceResult));
        return 1;
    }

    outResult = captureResults;

    return 0;
}

status_t saveImage(const char* fn, std::optional<AndroidBitmapCompressFormat> format,
                   const ScreenCaptureResults& captureResults) {
    void* base = nullptr;
@@ -413,11 +428,14 @@ int main(int argc, char** argv)
    std::vector<ScreenCaptureResults> results;
    const size_t numDisplays = displaysToCapture.size();
    for (int i=0; i<numDisplays; i++) {
        ScreenCaptureResults result;

        // 1. Capture the screen
        auto captureResult = screencap::capture(displaysToCapture[i], captureArgs);
        if (captureResult.error().code() != OK) {
            fprintf(stderr, "%sCapturing failed.\n", captureResult.error().message().c_str());
            return 1;
        if (const status_t captureStatus =
            capture(displaysToCapture[i], captureArgs, result) != 0) {

            fprintf(stderr, "Capturing failed.\n");
            return captureStatus;
        }

        // 2. Save the capture result as an image.
@@ -435,7 +453,7 @@ int main(int argc, char** argv)
        if (!filename.empty()) {
            fn = filename.c_str();
        }
        if (const status_t saveImageStatus = saveImage(fn, format, captureResult.value()) != 0) {
        if (const status_t saveImageStatus = saveImage(fn, format, result) != 0) {
            fprintf(stderr, "Saving image failed.\n");
            return saveImageStatus;
        }
+0 −43
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "screencap_utils.h"

#include "gui/SyncScreenCaptureListener.h"

namespace android::screencap {

base::Result<gui::ScreenCaptureResults> capture(const DisplayId displayId,
                                                const gui::CaptureArgs& captureArgs) {
    sp<SyncScreenCaptureListener> captureListener = new SyncScreenCaptureListener();
    auto captureDisplayStatus =
            ScreenshotClient::captureDisplay(displayId, captureArgs, captureListener);

    gui::ScreenCaptureResults captureResults = captureListener->waitForResults();
    if (!captureResults.fenceResult.ok()) {
        status_t captureStatus = fenceStatus(captureResults.fenceResult);
        std::stringstream errorMsg;
        errorMsg << "Failed to take take screenshot. ";
        if (captureStatus == NAME_NOT_FOUND) {
            errorMsg << "Display Id '" << displayId.value << "' is not valid.\n";
        }
        return base::ResultError(errorMsg.str(), captureStatus);
    }

    return captureResults;
}

} // namespace android::screencap
 No newline at end of file

cmds/screencap/screencap_utils.h

deleted100644 → 0
+0 −28
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <android-base/result.h>
#include <android/gui/DisplayCaptureArgs.h>

#include "gui/ScreenCaptureResults.h"
#include "ui/DisplayId.h"

#pragma once

namespace android::screencap {
base::Result<gui::ScreenCaptureResults> capture(const DisplayId displayId,
                                                const gui::CaptureArgs& captureArgs);
} // namespace android::screencap
Loading