| Index: ios/web/public/test/response_providers/http_auth_response_provider.h
 | 
| diff --git a/ios/web/public/test/response_providers/http_auth_response_provider.h b/ios/web/public/test/response_providers/http_auth_response_provider.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..1787b38dd8a13947f63d319ce5e9c4edb971b224
 | 
| --- /dev/null
 | 
| +++ b/ios/web/public/test/response_providers/http_auth_response_provider.h
 | 
| @@ -0,0 +1,61 @@
 | 
| +// Copyright 2017 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +#ifndef IOS_WEB_PUBLIC_TEST_RESPONSE_PROVIDERS_HTTP_AUTH_RESPONSE_PROVIDER_H_
 | 
| +#define IOS_WEB_PUBLIC_TEST_RESPONSE_PROVIDERS_HTTP_AUTH_RESPONSE_PROVIDER_H_
 | 
| +
 | 
| +#include <string>
 | 
| +
 | 
| +#import "ios/web/public/test/response_providers/html_response_provider.h"
 | 
| +#include "url/gurl.h"
 | 
| +
 | 
| +namespace net {
 | 
| +class HttpResponseHeaders;
 | 
| +class HttpRequestHeaders;
 | 
| +}  // namespace net
 | 
| +
 | 
| +namespace web {
 | 
| +
 | 
| +// Serves a page which requires Basic HTTP Authentication.
 | 
| +class HttpAuthResponseProvider : public HtmlResponseProvider {
 | 
| + public:
 | 
| +  // Constructs provider which will respond to the given |url| and will use the
 | 
| +  // given authenticaion |realm|. |username| and |password| are credentials
 | 
| +  // required for sucessfull authentication. Use different realms and
 | 
| +  // username/password combination for different tests to prevent credentials
 | 
| +  // caching.
 | 
| +  HttpAuthResponseProvider(const GURL& url,
 | 
| +                           const std::string& realm,
 | 
| +                           const std::string& username,
 | 
| +                           const std::string& password);
 | 
| +  ~HttpAuthResponseProvider() override;
 | 
| +
 | 
| +  // HtmlResponseProvider overrides:
 | 
| +  bool CanHandleRequest(const Request& request) override;
 | 
| +  void GetResponseHeadersAndBody(
 | 
| +      const Request& request,
 | 
| +      scoped_refptr<net::HttpResponseHeaders>* headers,
 | 
| +      std::string* response_body) override;
 | 
| +
 | 
| +  // Text returned in response if authentication was successfull.
 | 
| +  static std::string page_text() { return "authenticated"; }
 | 
| +
 | 
| + private:
 | 
| +  // Checks if authorization header has valid credintials:
 | 
| +  // https://tools.ietf.org/html/rfc1945#section-10.2
 | 
| +  bool HeadersHaveValidCredentials(const net::HttpRequestHeaders& headers);
 | 
| +
 | 
| +  // URL this provider responds to.
 | 
| +  GURL url_;
 | 
| +  // HTTP Authentication realm.
 | 
| +  std::string realm_;
 | 
| +  // Correct username to pass authentication
 | 
| +  std::string username_;
 | 
| +  // Correct password to pass authentication
 | 
| +  std::string password_;
 | 
| +};
 | 
| +
 | 
| +}  // namespace web
 | 
| +
 | 
| +#endif  // IOS_WEB_PUBLIC_TEST_RESPONSE_PROVIDERS_HTTP_AUTH_RESPONSE_PROVIDER_H_
 | 
| 
 |