diff --git a/interfaces/inner_api/native/audiocommon/include/audio_interrupt_info.h b/interfaces/inner_api/native/audiocommon/include/audio_interrupt_info.h index 62a75dc9e7a9ec77a8ae61032c18bad44d632c46..7cb2e8ab261979205cb4117bfa2d4a0099dc21b5 100644 --- a/interfaces/inner_api/native/audiocommon/include/audio_interrupt_info.h +++ b/interfaces/inner_api/native/audiocommon/include/audio_interrupt_info.h @@ -298,6 +298,7 @@ public: int32_t pid { -1 }; int32_t uid { -1 }; std::string deviceTag; + mutable std::string bundleName; InterruptMode mode { SHARE_MODE }; bool isAudioSessionInterrupt {false}; AudioFocusConcurrency currencySources; @@ -344,6 +345,7 @@ public: res = res && parcel.WriteInt32(interrupt.pid); res = res && parcel.WriteInt32(interrupt.uid); res = res && parcel.WriteString(interrupt.deviceTag); + res = res && parcel.WriteString(interrupt.bundleName); res = res && parcel.WriteInt32(static_cast(interrupt.mode)); res = res && parcel.WriteBool(interrupt.isAudioSessionInterrupt); size_t vct = interrupt.currencySources.sourcesTypes.size(); @@ -370,6 +372,7 @@ public: interrupt.pid = parcel.ReadInt32(); interrupt.uid = parcel.ReadInt32(); interrupt.deviceTag = parcel.ReadString(); + interrupt.bundleName = parcel.ReadString(); interrupt.mode = static_cast(parcel.ReadInt32()); interrupt.isAudioSessionInterrupt = parcel.ReadBool(); int32_t vct = parcel.ReadInt32(); diff --git a/services/audio_policy/server/domain/interrupt/include/audio_interrupt_service.h b/services/audio_policy/server/domain/interrupt/include/audio_interrupt_service.h index 811979b2c27aceb9bb8ca56914a33c4b84254a4b..e42c36c7e098d323ca11ee6324524666fdd50865 100644 --- a/services/audio_policy/server/domain/interrupt/include/audio_interrupt_service.h +++ b/services/audio_policy/server/domain/interrupt/include/audio_interrupt_service.h @@ -201,7 +201,7 @@ private: void UpdateFocusStrategy(const std::string &bundleName, AudioFocusEntry &focusEntry, bool isExistMediaStream, bool isIncomingMediaStream); bool IsMediaStream(AudioStreamType audioStreamType); - std::string GetRealBundleName(uint32_t uid); + std::string GetAudioInterruptBundleName(const AudioInterrupt &audioInterrupt); std::string GetCurrentBundleName(uint32_t uid); void UpdateAudioFocusStrategy(const AudioInterrupt ¤tInterrupt, const AudioInterrupt &incomingInterrupt, AudioFocusEntry &focusEntry); diff --git a/services/audio_policy/server/domain/interrupt/src/audio_interrupt_service.cpp b/services/audio_policy/server/domain/interrupt/src/audio_interrupt_service.cpp index 3be0c3ae6d2d739d5b14778da5862d22874f56dc..6ed6748baec7d1b51a6022abe38af00a8973c75f 100644 --- a/services/audio_policy/server/domain/interrupt/src/audio_interrupt_service.cpp +++ b/services/audio_policy/server/domain/interrupt/src/audio_interrupt_service.cpp @@ -1783,14 +1783,14 @@ int32_t AudioInterruptService::SetQueryBundleNameListCallback(const sptr(uid)); + std::string bundleName = GetAudioInterruptBundleName(incomingInterrupt); std::string currentBundleName = GetCurrentBundleName(static_cast(currentUid)); CHECK_AND_RETURN_LOG(!bundleName.empty(), "bundleName is empty"); AudioStreamType existStreamType = existAudioFocusType.streamType; diff --git a/services/audio_policy/test/unittest/audio_interrupt_service_test/src/audio_interrupt_unit_test.cpp b/services/audio_policy/test/unittest/audio_interrupt_service_test/src/audio_interrupt_unit_test.cpp index 43bdbdb8a91a4e004f3b97b57b2c37cd76d6da1b..dbe83517c0244ec070c28facf7aad76791027797 100644 --- a/services/audio_policy/test/unittest/audio_interrupt_service_test/src/audio_interrupt_unit_test.cpp +++ b/services/audio_policy/test/unittest/audio_interrupt_service_test/src/audio_interrupt_unit_test.cpp @@ -2266,7 +2266,7 @@ HWTEST(AudioInterruptUnitTest, InjectInterruptToAudioZone_003, TestSize.Level1) interruptServiceTest->zonesMap_.clear(); interruptServiceTest->zonesMap_[0] = std::make_shared(); interruptServiceTest->zonesMap_[1] = std::make_shared(); - + SetUid1041(); EXPECT_NO_THROW( interruptServiceTest->InjectInterruptToAudioZone(1, interrupts); @@ -2350,7 +2350,7 @@ HWTEST(AudioInterruptUnitTest, InjectInterruptToAudioZone_007, TestSize.Level1) interruptServiceTest->zonesMap_.clear(); interruptServiceTest->zonesMap_[0] = std::make_shared(); interruptServiceTest->zonesMap_[1] = std::make_shared(); - + SetUid1041(); EXPECT_NO_THROW( interruptServiceTest->InjectInterruptToAudioZone(1, "1", interrupts); @@ -3701,7 +3701,7 @@ HWTEST(AudioInterruptUnitTest, AudioInterruptService_118, TestSize.Level1) auto iterActive = myList.begin(); AudioFocuState oldState = ACTIVE; - + std::list> myList2; myList.emplace_back(AudioInterrupt(), AudioFocuState::PAUSEDBYREMOTE); auto iterNew = myList.begin(); @@ -3750,6 +3750,40 @@ HWTEST(AudioInterruptUnitTest, AudioInterruptService_119, TestSize.Level1) EXPECT_EQ(ret1, SUCCESS); } +/** +* @tc.name : Test AudioInterruptService +* @tc.number: AudioInterruptService_120 +* @tc.desc : Test GetAudioInterruptBundleName_01 +*/ +HWTEST(AudioInterruptUnitTest, AudioInterruptService_120, TestSize.Level1) +{ + auto audioInterruptService = std::make_shared(); + ASSERT_NE(audioInterruptService, nullptr); + + AudioInterrupt audioInterrupt = {}; + audioInterrupt.uid = 1013; + audioInterrupt.bundleName.clear(); + audioInterruptService->GetAudioInterruptBundleName(audioInterrupt); + EXPECT_TRUE(audioInterrupt.bundleName.empty()); +} + +/** +* @tc.name : Test AudioInterruptService +* @tc.number: AudioInterruptService_121 +* @tc.desc : Test GetAudioInterruptBundleName_02 +*/ +HWTEST(AudioInterruptUnitTest, AudioInterruptService_121, TestSize.Level1) +{ + auto audioInterruptService = std::make_shared(); + ASSERT_NE(audioInterruptService, nullptr); + + AudioInterrupt audioInterrupt = {}; + std::string str = "xyz"; + audioInterrupt.bundleName = str; + audioInterruptService->GetAudioInterruptBundleName(audioInterrupt); + EXPECT_TRUE(audioInterrupt.bundleName.compare(str)==0); +} + /** * @tc.name : Test RegisterDefaultVolumeTypeListener * @tc.number: RegisterDefaultVolumeTypeListenerTest