1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef COMPONENTS_AUTO_LOGIN_PARSER_AUTO_LOGIN_PARSER_H_ 6 #define COMPONENTS_AUTO_LOGIN_PARSER_AUTO_LOGIN_PARSER_H_ 7 8 #include <string> 9 10 namespace net { 11 class URLRequest; 12 } 13 14 namespace auto_login_parser { 15 16 enum RealmRestriction { 17 ONLY_GOOGLE_COM, 18 ALLOW_ANY_REALM 19 }; 20 21 struct HeaderData { 22 HeaderData(); 23 ~HeaderData(); 24 25 // "realm" string from x-auto-login (e.g. "com.google"). 26 std::string realm; 27 28 // "account" string from x-auto-login. 29 std::string account; 30 31 // "args" string from x-auto-login to be passed to MergeSession. This string 32 // should be considered opaque and not be cracked open to look inside. 33 std::string args; 34 }; 35 36 // Returns whether parsing succeeded. Parameter |header_data| will not be 37 // modified if parsing fails. 38 bool ParseHeader(const std::string& header, 39 RealmRestriction realm_restriction, 40 HeaderData* header_data); 41 42 // Helper function that also retrieves the header from the response of the 43 // given URLRequest. 44 bool ParserHeaderInResponse(net::URLRequest* request, 45 RealmRestriction realm_restriction, 46 HeaderData* header_data); 47 48 } // namespace auto_login_parser 49 50 #endif // COMPONENTS_AUTO_LOGIN_PARSER_AUTO_LOGIN_PARSER_H_ 51