12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 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 CHROME_BROWSER_CHROMEOS_LOGIN_PROFILE_AUTH_DATA_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_LOGIN_PROFILE_AUTH_DATA_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/callback_forward.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/macros.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace content { 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class BrowserContext; 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace chromeos { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Helper class that transfers authentication-related data from a BrowserContext 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// used for authentication to the user's actual BrowserContext. 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ProfileAuthData { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Transfers authentication-related data from |from_context| to |to_context| 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // and invokes |completion_callback| on the UI thread when the operation has 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // completed. The following data is transferred: 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // * The proxy authentication state. 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // * All authentication cookies and channel IDs, if 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // |transfer_auth_cookies_and_channel_ids_on_first_login| is true and 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // |to_context|'s cookie jar is empty. If the cookie jar is not empty, the 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // authentication states in |from_context| and |to_context| should be merged 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // using /MergeSession instead. 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // * The authentication cookies set by a SAML IdP, if 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // |transfer_saml_auth_cookies_on_subsequent_login| is true and 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // |to_context|'s cookie jar is not empty. 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static void Transfer( 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserContext* from_context, 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserContext* to_context, 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool transfer_auth_cookies_and_channel_ids_on_first_login, 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool transfer_saml_auth_cookies_on_subsequent_login, 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const base::Closure& completion_callback); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_IMPLICIT_CONSTRUCTORS(ProfileAuthData); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace chromeos 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_LOGIN_PROFILE_AUTH_DATA_H_ 47