[go: nahoru, domu]

blob: d53cd6d3d3c50b05a3654fcaf9989f88a8da5b6e [file] [log] [blame]
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_LOGIN_PROFILE_AUTH_DATA_H_
#define CHROME_BROWSER_ASH_LOGIN_PROFILE_AUTH_DATA_H_
#include "base/functional/callback_forward.h"
#include "base/time/time.h"
namespace base {
class UnguessableToken;
}
namespace content {
class StoragePartition;
}
namespace ash {
// Delay for transferring the auth cache to the system profile.
inline constexpr base::TimeDelta kAuthCacheTransferDelayMs =
base::Milliseconds(2000);
// Timeout to delay first notification about offline state when authenticating
// to a proxy.
inline constexpr base::TimeDelta kProxyAuthTimeout = base::Seconds(5);
// Transfers auth cache to system network context.
void TransferHttpAuthCacheToSystemNetworkContext(
base::RepeatingClosure completion_callback,
const base::UnguessableToken& cache_key);
// Helper class that transfers authentication-related data from a BrowserContext
// used for authentication to the user's actual BrowserContext.
class ProfileAuthData {
public:
ProfileAuthData() = delete;
ProfileAuthData(const ProfileAuthData&) = delete;
ProfileAuthData& operator=(const ProfileAuthData&) = delete;
// Transfers authentication-related data from `from_partition` to
// `to_partition` and invokes `completion_callback` on the UI thread when the
// operation has completed. The following data is transferred:
// * The proxy authentication state.
// * All authentication cookies, if
// `transfer_auth_cookies_on_first_login` is true and
// `to_partition`'s cookie jar is empty. If the cookie jar is not empty, the
// authentication states in `from_partition` and `to_partition` should be
// merged using /MergeSession instead.
// * The authentication cookies set by a SAML IdP, if
// `transfer_saml_auth_cookies_on_subsequent_login` is true and
// `to_partition`'s cookie jar is not empty.
// `from_partition` and `to_partition` must live until `completion_callback`
// is called.
static void Transfer(content::StoragePartition* from_partition,
content::StoragePartition* to_partition,
bool transfer_auth_cookies_on_first_login,
bool transfer_saml_auth_cookies_on_subsequent_login,
base::OnceClosure completion_callback);
// Transfers proxy authentication state from `from_partition` to
// `to_partition` and and invokes `completion_callback` on the UI thread when
// the operation has completed.
static void TransferHttpAuthCacheProxyEntries(
base::RepeatingClosure completion_callback,
content::StoragePartition* from_partition,
content::StoragePartition* to_partition);
};
} // namespace ash
#endif // CHROME_BROWSER_ASH_LOGIN_PROFILE_AUTH_DATA_H_