Adds a MediaConstraint for the AudioOption aec_dump

Alson includes
- a test verifying that the option is set
- changed the test verifying delay_agnostic_aec option is set to use non-default value

BUG=4555
TESTED=locally through AppRTCDemo on N7 and Android One
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/46059004

Cr-Commit-Position: refs/heads/master@{#9109}
diff --git a/talk/app/webrtc/localaudiosource.cc b/talk/app/webrtc/localaudiosource.cc
index bd57cd7..b37d1e3 100644
--- a/talk/app/webrtc/localaudiosource.cc
+++ b/talk/app/webrtc/localaudiosource.cc
@@ -78,6 +78,8 @@
       options->typing_detection.Set(value);
     else if (iter->key == MediaConstraintsInterface::kAudioMirroring)
       options->stereo_swapping.Set(value);
+    else if (iter->key == MediaConstraintsInterface::kAecDump)
+      options->aec_dump.Set(value);
   }
 }
 
diff --git a/talk/app/webrtc/localaudiosource_unittest.cc b/talk/app/webrtc/localaudiosource_unittest.cc
index c838109..569f814 100644
--- a/talk/app/webrtc/localaudiosource_unittest.cc
+++ b/talk/app/webrtc/localaudiosource_unittest.cc
@@ -46,13 +46,13 @@
   constraints.AddMandatory(MediaConstraintsInterface::kEchoCancellation, false);
   constraints.AddOptional(
       MediaConstraintsInterface::kExperimentalEchoCancellation, true);
-  constraints.AddOptional(
-      MediaConstraintsInterface::kDAEchoCancellation, false);
+  constraints.AddOptional(MediaConstraintsInterface::kDAEchoCancellation, true);
   constraints.AddOptional(MediaConstraintsInterface::kAutoGainControl, true);
   constraints.AddOptional(
       MediaConstraintsInterface::kExperimentalAutoGainControl, true);
   constraints.AddMandatory(MediaConstraintsInterface::kNoiseSuppression, false);
   constraints.AddOptional(MediaConstraintsInterface::kHighpassFilter, true);
+  constraints.AddOptional(MediaConstraintsInterface::kAecDump, true);
 
   rtc::scoped_refptr<LocalAudioSource> source =
       LocalAudioSource::Create(PeerConnectionFactoryInterface::Options(),
@@ -64,7 +64,7 @@
   EXPECT_TRUE(source->options().experimental_aec.Get(&value));
   EXPECT_TRUE(value);
   EXPECT_TRUE(source->options().delay_agnostic_aec.Get(&value));
-  EXPECT_FALSE(value);
+  EXPECT_TRUE(value);
   EXPECT_TRUE(source->options().auto_gain_control.Get(&value));
   EXPECT_TRUE(value);
   EXPECT_TRUE(source->options().experimental_agc.Get(&value));
@@ -73,6 +73,8 @@
   EXPECT_FALSE(value);
   EXPECT_TRUE(source->options().highpass_filter.Get(&value));
   EXPECT_TRUE(value);
+  EXPECT_TRUE(source->options().aec_dump.Get(&value));
+  EXPECT_TRUE(value);
 }
 
 TEST(LocalAudioSourceTest, OptionNotSet) {
diff --git a/talk/app/webrtc/mediaconstraintsinterface.cc b/talk/app/webrtc/mediaconstraintsinterface.cc
index 509c9db..a84dde2 100644
--- a/talk/app/webrtc/mediaconstraintsinterface.cc
+++ b/talk/app/webrtc/mediaconstraintsinterface.cc
@@ -65,6 +65,7 @@
 const char MediaConstraintsInterface::kTypingNoiseDetection[] =
     "googTypingNoiseDetection";
 const char MediaConstraintsInterface::kAudioMirroring[] = "googAudioMirroring";
+const char MediaConstraintsInterface::kAecDump[] = "audioDebugRecording";
 
 // Google-specific constraint keys for a local video source (getUserMedia).
 const char MediaConstraintsInterface::kNoiseReduction[] = "googNoiseReduction";
diff --git a/talk/app/webrtc/mediaconstraintsinterface.h b/talk/app/webrtc/mediaconstraintsinterface.h
index a3d5858..cc68209 100644
--- a/talk/app/webrtc/mediaconstraintsinterface.h
+++ b/talk/app/webrtc/mediaconstraintsinterface.h
@@ -83,6 +83,7 @@
   static const char kHighpassFilter[];  // googHighpassFilter
   static const char kTypingNoiseDetection[];  // googTypingNoiseDetection
   static const char kAudioMirroring[];  // googAudioMirroring
+  static const char kAecDump[];               // audioDebugRecording
 
   // Google-specific constraint keys for a local video source
   static const char kNoiseReduction[];  // googNoiseReduction