| Index: third_party/WebKit/Source/modules/credentialmanager/PasswordCredential.cpp
 | 
| diff --git a/third_party/WebKit/Source/modules/credentialmanager/PasswordCredential.cpp b/third_party/WebKit/Source/modules/credentialmanager/PasswordCredential.cpp
 | 
| index 4042182b3204aaa6c5996dcfdc7291a92bf65edf..41bf1f2fb7f1133711728cc39af00308dc2373a4 100644
 | 
| --- a/third_party/WebKit/Source/modules/credentialmanager/PasswordCredential.cpp
 | 
| +++ b/third_party/WebKit/Source/modules/credentialmanager/PasswordCredential.cpp
 | 
| @@ -8,6 +8,7 @@
 | 
|  #include "bindings/core/v8/Dictionary.h"
 | 
|  #include "bindings/core/v8/ExceptionState.h"
 | 
|  #include "core/dom/ExecutionContext.h"
 | 
| +#include "core/dom/URLSearchParams.h"
 | 
|  #include "core/html/FormData.h"
 | 
|  #include "modules/credentialmanager/FormDataOptions.h"
 | 
|  #include "modules/credentialmanager/PasswordCredentialData.h"
 | 
| @@ -33,25 +34,47 @@ PasswordCredential* PasswordCredential::create(const PasswordCredentialData& dat
 | 
|  
 | 
|  PasswordCredential::PasswordCredential(WebPasswordCredential* webPasswordCredential)
 | 
|      : Credential(webPasswordCredential->platformCredential())
 | 
| +    , m_idName("username")
 | 
| +    , m_passwordName("password")
 | 
|  {
 | 
|  }
 | 
|  
 | 
|  PasswordCredential::PasswordCredential(const String& id, const String& password, const String& name, const KURL& icon)
 | 
|      : Credential(PlatformPasswordCredential::create(id, password, name, icon))
 | 
| +    , m_idName("username")
 | 
| +    , m_passwordName("password")
 | 
|  {
 | 
|  }
 | 
|  
 | 
| -FormData* PasswordCredential::toFormData(ScriptState* scriptState, const FormDataOptions& options)
 | 
| +PassRefPtr<EncodedFormData> PasswordCredential::encodeFormData() const
 | 
|  {
 | 
| -    FormData* fd = FormData::create();
 | 
| +    if (m_additionalData.isURLSearchParams()) {
 | 
| +        // If |additionalData| is a 'URLSearchParams' object, build a urlencoded response.
 | 
| +        URLSearchParams* params = URLSearchParams::create(URLSearchParamsInit());
 | 
| +        URLSearchParams* additionalData = m_additionalData.getAsURLSearchParams();
 | 
| +        for (const auto& param : additionalData->params())
 | 
| +            params->append(param.first, param.second);
 | 
| +        params->append(idName(), id());
 | 
| +        params->append(passwordName(), password());
 | 
|  
 | 
| -    String errorMessage;
 | 
| -    if (!scriptState->executionContext()->isSecureContext(errorMessage))
 | 
| -        return fd;
 | 
| +        return params->encodeFormData();
 | 
| +    }
 | 
|  
 | 
| -    fd->append(options.idName(), id());
 | 
| -    fd->append(options.passwordName(), password());
 | 
| -    return fd;
 | 
| +    // Otherwise, we'll build a multipart response.
 | 
| +    FormData* formData = FormData::create(nullptr);
 | 
| +    if (m_additionalData.isFormData()) {
 | 
| +        FormData* additionalData = m_additionalData.getAsFormData();
 | 
| +        for (const FormData::Entry* entry : additionalData->entries()) {
 | 
| +            if (entry->blob())
 | 
| +                formData->append(formData->decode(entry->name()), entry->blob(), entry->filename());
 | 
| +            else
 | 
| +                formData->append(formData->decode(entry->name()), formData->decode(entry->value()));
 | 
| +        }
 | 
| +    }
 | 
| +    formData->append(idName(), id());
 | 
| +    formData->append(passwordName(), password());
 | 
| +
 | 
| +    return formData->encodeMultiPartFormData();
 | 
|  }
 | 
|  
 | 
|  const String& PasswordCredential::password() const
 | 
| @@ -62,6 +85,7 @@ const String& PasswordCredential::password() const
 | 
|  DEFINE_TRACE(PasswordCredential)
 | 
|  {
 | 
|      Credential::trace(visitor);
 | 
| +    visitor->trace(m_additionalData);
 | 
|  }
 | 
|  
 | 
|  } // namespace blink
 | 
| 
 |