| Index: webrtc/api/peerconnectioninterface.h
 | 
| diff --git a/webrtc/api/peerconnectioninterface.h b/webrtc/api/peerconnectioninterface.h
 | 
| index d4daf2435e3ac7de78092579413fbc4aa41bd7dc..242d42aa32a333d724871701f29b3347ba3f2df0 100644
 | 
| --- a/webrtc/api/peerconnectioninterface.h
 | 
| +++ b/webrtc/api/peerconnectioninterface.h
 | 
| @@ -299,6 +299,9 @@ class PeerConnectionInterface : public rtc::RefCountInterface {
 | 
|        }
 | 
|      }
 | 
|  
 | 
| +    bool operator==(const RTCConfiguration& o) const;
 | 
| +    bool operator!=(const RTCConfiguration& o) const;
 | 
| +
 | 
|      bool dscp() { return media_config.enable_dscp; }
 | 
|      void set_dscp(bool enable) { media_config.enable_dscp = enable; }
 | 
|  
 | 
| @@ -372,6 +375,9 @@ class PeerConnectionInterface : public rtc::RefCountInterface {
 | 
|      // If true, ICE role is redetermined when peerconnection sets a local
 | 
|      // transport description that indicates an ICE restart.
 | 
|      bool redetermine_role_on_ice_restart = true;
 | 
| +    //
 | 
| +    // Don't forget to update operator== if adding something.
 | 
| +    //
 | 
|    };
 | 
|  
 | 
|    struct RTCOfferAnswerOptions {
 | 
| @@ -530,15 +536,33 @@ class PeerConnectionInterface : public rtc::RefCountInterface {
 | 
|    virtual PeerConnectionInterface::RTCConfiguration GetConfiguration() {
 | 
|      return PeerConnectionInterface::RTCConfiguration();
 | 
|    }
 | 
| +
 | 
|    // Sets the PeerConnection's global configuration to |config|.
 | 
| +  //
 | 
| +  // The members of |config| that may be changed are |type|, |servers|,
 | 
| +  // |ice_candidate_pool_size| and |prune_turn_ports| (though the candidate
 | 
| +  // pool size can't be changed after the first call to SetLocalDescription).
 | 
| +  // Note that this means the BUNDLE and RTCP-multiplexing policies cannot be
 | 
| +  // changed with this method.
 | 
| +  //
 | 
|    // Any changes to STUN/TURN servers or ICE candidate policy will affect the
 | 
|    // next gathering phase, and cause the next call to createOffer to generate
 | 
| -  // new ICE credentials. Note that the BUNDLE and RTCP-multiplexing policies
 | 
| -  // cannot be changed with this method.
 | 
| +  // new ICE credentials, as described in JSEP. This also occurs when
 | 
| +  // |prune_turn_ports| changes, for the same reasoning.
 | 
| +  //
 | 
| +  // If an error occurs, returns false and populates |error| if non-null:
 | 
| +  // - INVALID_MODIFICATION if |config| contains a modified parameter other
 | 
| +  //   than one of the parameters listed above.
 | 
| +  // - INVALID_RANGE if |ice_candidate_pool_size| is out of range.
 | 
| +  // - SYNTAX_ERROR if parsing an ICE server URL failed.
 | 
| +  // - INVALID_PARAMETER if a TURN server is missing |username| or |password|.
 | 
| +  // - INTERNAL_ERROR if an unexpected error occurred.
 | 
| +  //
 | 
|    // TODO(deadbeef): Make this pure virtual once all Chrome subclasses of
 | 
|    // PeerConnectionInterface implement it.
 | 
|    virtual bool SetConfiguration(
 | 
| -      const PeerConnectionInterface::RTCConfiguration& config) {
 | 
| +      const PeerConnectionInterface::RTCConfiguration& config,
 | 
| +      RtcError* error = nullptr) {
 | 
|      return false;
 | 
|    }
 | 
|    // Provides a remote candidate to the ICE Agent.
 | 
| 
 |