12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef COMPONENTS_AUTO_LOGIN_PARSER_AUTO_LOGIN_PARSER_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define COMPONENTS_AUTO_LOGIN_PARSER_AUTO_LOGIN_PARSER_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace net {
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class URLRequest;
12b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)namespace auto_login_parser {
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)enum RealmRestriction {
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ONLY_GOOGLE_COM,
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ALLOW_ANY_REALM
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct HeaderData {
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  HeaderData();
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ~HeaderData();
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // "realm" string from x-auto-login (e.g. "com.google").
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string realm;
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // "account" string from x-auto-login.
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string account;
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // "args" string from x-auto-login to be passed to MergeSession. This string
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // should be considered opaque and not be cracked open to look inside.
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string args;
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Returns whether parsing succeeded. Parameter |header_data| will not be
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// modified if parsing fails.
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool ParseHeader(const std::string& header,
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                 RealmRestriction realm_restriction,
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                 HeaderData* header_data);
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Helper function that also retrieves the header from the response of the
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// given URLRequest.
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool ParserHeaderInResponse(net::URLRequest* request,
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            RealmRestriction realm_restriction,
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            HeaderData* header_data);
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
48b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}  // namespace auto_login_parser
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // COMPONENTS_AUTO_LOGIN_PARSER_AUTO_LOGIN_PARSER_H_
51