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