diff --git a/talk/app/webrtc/peerconnection.cc b/talk/app/webrtc/peerconnection.cc
index 64ddcad..b64caf7 100644
--- a/talk/app/webrtc/peerconnection.cc
+++ b/talk/app/webrtc/peerconnection.cc
@@ -420,6 +420,11 @@
   return true;
 }
 
+bool PeerConnection::AddStream(MediaStreamInterface* local_stream,
+                               const MediaConstraintsInterface* constraints) {
+  return AddStream(local_stream);
+}
+
 void PeerConnection::RemoveStream(MediaStreamInterface* local_stream) {
   mediastream_signaling_->RemoveLocalStream(local_stream);
   if (IsClosed()) {
diff --git a/talk/app/webrtc/peerconnection.h b/talk/app/webrtc/peerconnection.h
index 68aa154..355211c 100644
--- a/talk/app/webrtc/peerconnection.h
+++ b/talk/app/webrtc/peerconnection.h
@@ -66,6 +66,8 @@
   virtual rtc::scoped_refptr<StreamCollectionInterface> local_streams();
   virtual rtc::scoped_refptr<StreamCollectionInterface> remote_streams();
   virtual bool AddStream(MediaStreamInterface* local_stream);
+  virtual bool AddStream(MediaStreamInterface* local_stream,
+                         const MediaConstraintsInterface* constraints);
   virtual void RemoveStream(MediaStreamInterface* local_stream);
 
   virtual rtc::scoped_refptr<DtmfSenderInterface> CreateDtmfSender(
diff --git a/talk/app/webrtc/peerconnectioninterface.h b/talk/app/webrtc/peerconnectioninterface.h
index edbf6e3..68b7879 100644
--- a/talk/app/webrtc/peerconnectioninterface.h
+++ b/talk/app/webrtc/peerconnectioninterface.h
@@ -252,17 +252,18 @@
   virtual rtc::scoped_refptr<StreamCollectionInterface>
       remote_streams() = 0;
 
-  // Deprecated:
-  // TODO(perkj): Remove once its not used by Chrome.
-  virtual bool AddStream(MediaStreamInterface* stream,
-                           const MediaConstraintsInterface* constraints) {
-    return AddStream(stream);
-  }
-
   // Add a new MediaStream to be sent on this PeerConnection.
   // Note that a SessionDescription negotiation is needed before the
   // remote peer can receive the stream.
-  virtual bool AddStream(MediaStreamInterface* stream) = 0;
+  // TODO(perkj): Make pure virtual once Chrome mocks have implemented.
+  virtual bool AddStream(MediaStreamInterface* stream) { return false;}
+
+  // Deprecated:
+  // TODO(perkj): Remove once its not used by Chrome.
+  virtual bool AddStream(MediaStreamInterface* stream,
+                         const MediaConstraintsInterface* constraints) {
+    return false;
+  }
 
   // Remove a MediaStream from this PeerConnection.
   // Note that a SessionDescription negotiation is need before the
diff --git a/talk/app/webrtc/peerconnectionproxy.h b/talk/app/webrtc/peerconnectionproxy.h
index 852d852..571c676 100644
--- a/talk/app/webrtc/peerconnectionproxy.h
+++ b/talk/app/webrtc/peerconnectionproxy.h
@@ -40,6 +40,8 @@
   PROXY_METHOD0(rtc::scoped_refptr<StreamCollectionInterface>,
                 remote_streams)
   PROXY_METHOD1(bool, AddStream, MediaStreamInterface*)
+  PROXY_METHOD2(bool, AddStream, MediaStreamInterface*,
+                const MediaConstraintsInterface*);
   PROXY_METHOD1(void, RemoveStream, MediaStreamInterface*)
   PROXY_METHOD1(rtc::scoped_refptr<DtmfSenderInterface>,
                 CreateDtmfSender, AudioTrackInterface*)
