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