diff --git a/talk/xmpp/constants.cc b/talk/xmpp/constants.cc
index 8144fe0c2d..f69f84e469 100644
--- a/talk/xmpp/constants.cc
+++ b/talk/xmpp/constants.cc
@@ -121,6 +121,7 @@ const char STR_MUC_ROOM_FEATURE_MULTI_USER_VC[] = "muc_muvc";
const char STR_MUC_ROOM_FEATURE_RECORDABLE[] = "recordable";
const char STR_MUC_ROOM_FEATURE_CUSTOM_RECORDING[] = "custom_recording";
const char STR_MUC_ROOM_OWNER_PROFILE_ID[] = "muc#roominfo_owner_profile_id";
+const char STR_MUC_ROOM_FEATURE_ABUSE_RECORDABLE[] = "abuse_recordable";
const char STR_ID_TYPE_CONVERSATION[] = "conversation";
const char NS_GOOGLE_MUC_HANGOUT[] = "google:muc#hangout";
diff --git a/talk/xmpp/constants.h b/talk/xmpp/constants.h
index 62e4901d07..6d940957da 100644
--- a/talk/xmpp/constants.h
+++ b/talk/xmpp/constants.h
@@ -114,6 +114,7 @@ extern const char STR_MUC_ROOM_FEATURE_MULTI_USER_VC[];
extern const char STR_MUC_ROOM_FEATURE_RECORDABLE[];
extern const char STR_MUC_ROOM_FEATURE_CUSTOM_RECORDING[];
extern const char STR_MUC_ROOM_OWNER_PROFILE_ID[];
+extern const char STR_MUC_ROOM_FEATURE_ABUSE_RECORDABLE[];
extern const char STR_ID_TYPE_CONVERSATION[];
extern const char NS_GOOGLE_MUC_HANGOUT[];
diff --git a/talk/xmpp/hangoutpubsubclient.cc b/talk/xmpp/hangoutpubsubclient.cc
index d9ba6af302..aede56318c 100644
--- a/talk/xmpp/hangoutpubsubclient.cc
+++ b/talk/xmpp/hangoutpubsubclient.cc
@@ -277,6 +277,7 @@ void HangoutPubSubClient::OnAudioMuteStateChange(
bool is_muted = change.new_state;
bool remote_action = (!change.publisher_nick.empty() &&
(change.publisher_nick != change.published_nick));
+
if (remote_action) {
const std::string& mutee_nick = change.published_nick;
const std::string& muter_nick = change.publisher_nick;
@@ -287,9 +288,8 @@ void HangoutPubSubClient::OnAudioMuteStateChange(
}
bool should_mute_locally = (mutee_nick == nick_);
SignalRemoteMute(mutee_nick, muter_nick, should_mute_locally);
- } else {
- SignalAudioMuteStateChange(change.published_nick, was_muted, is_muted);
}
+ SignalAudioMuteStateChange(change.published_nick, was_muted, is_muted);
}
const std::string GetAudioMuteNickFromItem(const XmlElement* item) {
diff --git a/talk/xmpp/hangoutpubsubclient_unittest.cc b/talk/xmpp/hangoutpubsubclient_unittest.cc
index 0ffb248f3c..1d1c14b13e 100644
--- a/talk/xmpp/hangoutpubsubclient_unittest.cc
+++ b/talk/xmpp/hangoutpubsubclient_unittest.cc
@@ -449,11 +449,14 @@ TEST_F(HangoutPubSubClientTest, TestRequest) {
" "
"";
+ listener->last_is_audio_muted = false;
xmpp_client->HandleStanza(
buzz::XmlElement::ForStr(incoming_remote_mute_message));
EXPECT_EQ("mutee", listener->last_mutee_nick);
EXPECT_EQ("muter", listener->last_muter_nick);
EXPECT_FALSE(listener->last_should_mute);
+ EXPECT_EQ("mutee", listener->last_audio_muted_nick);
+ EXPECT_TRUE(listener->last_is_audio_muted);
std::string incoming_remote_mute_me_message =
""
@@ -466,11 +469,14 @@ TEST_F(HangoutPubSubClientTest, TestRequest) {
" "
"";
+ listener->last_is_audio_muted = false;
xmpp_client->HandleStanza(
buzz::XmlElement::ForStr(incoming_remote_mute_me_message));
EXPECT_EQ("me", listener->last_mutee_nick);
EXPECT_EQ("muter", listener->last_muter_nick);
EXPECT_TRUE(listener->last_should_mute);
+ EXPECT_EQ("me", listener->last_audio_muted_nick);
+ EXPECT_TRUE(listener->last_is_audio_muted);
std::string incoming_media_block_message =
""