1 /* 2 * Copyright (C) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <unistd.h> 17 #include <sys/stat.h> 18 #include "screen_capture_server_function_unittest.h" 19 #include "ui_extension_ability_connection.h" 20 #include "image_source.h" 21 #include "image_type.h" 22 #include "pixel_map.h" 23 #include "media_log.h" 24 #include "media_errors.h" 25 #include "media_utils.h" 26 #include "uri_helper.h" 27 #include "media_dfx.h" 28 #include "scope_guard.h" 29 #include "param_wrapper.h" 30 31 using namespace testing::ext; 32 using namespace OHOS::Media::ScreenCaptureTestParam; 33 using namespace OHOS::Media; 34 35 namespace OHOS { 36 namespace Media { 37 HWTEST_F(ScreenCaptureServerFunctionTest, AudioCapturerWrapperStart_001, TestSize.Level2) 38 { 39 SetValidConfig(); 40 ASSERT_EQ(InitStreamScreenCaptureServer(), MSERR_OK); 41 screenCaptureServer_->screenCaptureCb_ = std::make_shared<ScreenCaptureServerUnittestCallback>(); 42 screenCaptureServer_->audioSource_ = std::make_unique<AudioDataSource>( 43 AVScreenCaptureMixMode::MIX_MODE, screenCaptureServer_.get()); 44 screenCaptureServer_->captureCallback_ = std::make_shared<ScreenRendererAudioStateChangeCallback>(); 45 screenCaptureServer_->captureCallback_->SetAudioSource(screenCaptureServer_->audioSource_); 46 screenCaptureServer_->innerAudioCapture_ = std::make_shared<AudioCapturerWrapper>( 47 screenCaptureServer_->captureConfig_.audioInfo.innerCapInfo, screenCaptureServer_->screenCaptureCb_, 48 std::string("OS_InnerAudioCapture"), screenCaptureServer_->contentFilter_); 49 screenCaptureServer_->innerAudioCapture_->bundleName_ = ScreenRecorderBundleName; 50 ASSERT_EQ(screenCaptureServer_->innerAudioCapture_->Start(screenCaptureServer_->appInfo_), MSERR_OK); 51 sleep(RECORDER_TIME); 52 ASSERT_EQ(screenCaptureServer_->innerAudioCapture_->Stop(), MSERR_OK); 53 // avoid crash 54 screenCaptureServer_->screenCaptureCb_ = nullptr; 55 } 56 57 HWTEST_F(ScreenCaptureServerFunctionTest, AudioCapturerWrapperStart_002, TestSize.Level2) 58 { 59 SetValidConfig(); 60 ASSERT_EQ(InitStreamScreenCaptureServer(), MSERR_OK); 61 screenCaptureServer_->screenCaptureCb_ = std::make_shared<ScreenCaptureServerUnittestCallback>(); 62 screenCaptureServer_->audioSource_ = std::make_unique<AudioDataSource>( 63 AVScreenCaptureMixMode::MIX_MODE, screenCaptureServer_.get()); 64 screenCaptureServer_->captureCallback_ = std::make_shared<ScreenRendererAudioStateChangeCallback>(); 65 screenCaptureServer_->captureCallback_->SetAudioSource(screenCaptureServer_->audioSource_); 66 screenCaptureServer_->innerAudioCapture_ = std::make_shared<AudioCapturerWrapper>( 67 screenCaptureServer_->captureConfig_.audioInfo.innerCapInfo, screenCaptureServer_->screenCaptureCb_, 68 std::string("OS_InnerAudioCapture"), screenCaptureServer_->contentFilter_); 69 screenCaptureServer_->innerAudioCapture_->bundleName_ = ScreenRecorderBundleName; 70 ASSERT_EQ(screenCaptureServer_->innerAudioCapture_->Start(screenCaptureServer_->appInfo_), MSERR_OK); 71 sleep(RECORDER_TIME); 72 ASSERT_EQ(screenCaptureServer_->innerAudioCapture_->Stop(), MSERR_OK); 73 screenCaptureServer_->innerAudioCapture_->OnStartFailed( 74 ScreenCaptureErrorType::SCREEN_CAPTURE_ERROR_INTERNAL, SCREEN_CAPTURE_ERR_UNKNOWN); 75 // avoid crash 76 screenCaptureServer_->screenCaptureCb_ = nullptr; 77 } 78 79 HWTEST_F(ScreenCaptureServerFunctionTest, AudioCapturerWrapperStart_003, TestSize.Level2) 80 { 81 SetValidConfig(); 82 ASSERT_EQ(InitStreamScreenCaptureServer(), MSERR_OK); 83 screenCaptureServer_->screenCaptureCb_ = std::make_shared<ScreenCaptureServerUnittestCallback>(); 84 screenCaptureServer_->audioSource_ = std::make_unique<AudioDataSource>( 85 AVScreenCaptureMixMode::MIX_MODE, screenCaptureServer_.get()); 86 screenCaptureServer_->captureCallback_ = std::make_shared<ScreenRendererAudioStateChangeCallback>(); 87 screenCaptureServer_->captureCallback_->SetAudioSource(screenCaptureServer_->audioSource_); 88 screenCaptureServer_->micAudioCapture_ = std::make_shared<AudioCapturerWrapper>( 89 screenCaptureServer_->captureConfig_.audioInfo.innerCapInfo, screenCaptureServer_->screenCaptureCb_, 90 std::string("OS_InnerAudioCapture"), screenCaptureServer_->contentFilter_); 91 screenCaptureServer_->micAudioCapture_->bundleName_ = ScreenRecorderBundleName; 92 ASSERT_EQ(screenCaptureServer_->micAudioCapture_->Start(screenCaptureServer_->appInfo_), MSERR_OK); 93 sleep(RECORDER_TIME); 94 ASSERT_EQ(screenCaptureServer_->micAudioCapture_->Stop(), MSERR_OK); 95 screenCaptureServer_->micAudioCapture_->OnStartFailed( 96 ScreenCaptureErrorType::SCREEN_CAPTURE_ERROR_INTERNAL, SCREEN_CAPTURE_ERR_UNKNOWN); 97 // avoid crash 98 screenCaptureServer_->screenCaptureCb_ = nullptr; 99 } 100 } // Media 101 } // OHOS