Chromium Code Reviews| Index: chrome/browser/chromeos/login/login_utils.cc |
| diff --git a/chrome/browser/chromeos/login/login_utils.cc b/chrome/browser/chromeos/login/login_utils.cc |
| index ecd0c92479057d6efff75a769cc9674e5763ea44..2376c3f469a9e970d3fd66199683349474897625 100644 |
| --- a/chrome/browser/chromeos/login/login_utils.cc |
| +++ b/chrome/browser/chromeos/login/login_utils.cc |
| @@ -22,7 +22,8 @@ |
| #include "base/string_util.h" |
| #include "base/stringprintf.h" |
| #include "base/synchronization/lock.h" |
| -#include "base/threading/thread_restrictions.h" |
| +#include "base/task_runner_util.h" |
| +#include "base/threading/worker_pool.h" |
| #include "base/time.h" |
| #include "base/utf_string_conversions.h" |
| #include "cc/switches.h" |
| @@ -48,6 +49,7 @@ |
| #include "chrome/browser/chromeos/settings/cros_settings_names.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/first_run/first_run.h" |
| +#include "chrome/browser/google/google_util_chromeos.h" |
| #include "chrome/browser/net/chrome_url_request_context.h" |
| #include "chrome/browser/net/preconnect.h" |
| #include "chrome/browser/policy/browser_policy_connector.h" |
| @@ -187,6 +189,15 @@ void TransferDefaultAuthCacheOnIOThread( |
| http_transaction_factory()->GetSession()->http_auth_cache()); |
| } |
| +#if defined(ENABLE_RLZ) |
| +// Flag file that disables RLZ tracking, when present. |
| +const char kRLZDisabledFlagName[] = FILE_PATH_LITERAL(".rlz_disabled"); |
| + |
| +FilePath GetRlzDisabledFlagPath() { |
| + return file_util::GetHomeDir().Append(kRLZDisabledFlagName); |
| +} |
| +#endif |
| + |
| } // namespace |
| // Used to request a restart to switch to the guest mode. |
| @@ -299,6 +310,7 @@ class LoginUtilsImpl |
| virtual void TransferDefaultAuthCache(Profile* default_profile, |
| Profile* new_profile) OVERRIDE; |
| virtual void StopBackgroundFetchers() OVERRIDE; |
| + virtual void InitRlzDelayed(Profile* user_profile) OVERRIDE; |
| // OAuth1TokenFetcher::Delegate overrides. |
| void OnOAuth1AccessTokenAvailable(const std::string& token, |
| @@ -369,6 +381,9 @@ class LoginUtilsImpl |
| void OnProfileCreated(Profile* profile, |
| Profile::CreateStatus status); |
| + // Initializes RLZ. If |disabled| is true, financial pings are turned off. |
|
Peter Kasting
2012/12/17 20:14:03
Nit: What is a "financial ping"? Do you just mean
Ivan Korotkov
2012/12/20 09:20:42
Financial pings are pings with recorded product ev
|
| + void InitRlz(Profile* user_profile, bool disabled); |
| + |
| std::string password_; |
| bool pending_requests_; |
| bool using_oauth_; |
| @@ -656,13 +671,7 @@ void LoginUtilsImpl::OnProfileCreated( |
| content::NotificationService::AllSources(), |
| content::Details<Profile>(user_profile)); |
| -#if defined(ENABLE_RLZ) |
| - // Init the RLZ library. |
| - int ping_delay = user_profile->GetPrefs()->GetInteger( |
| - first_run::GetPingDelayPrefName().c_str()); |
| - RLZTracker::InitRlzFromProfileDelayed( |
| - user_profile, UserManager::Get()->IsCurrentUserNew(), ping_delay); |
| -#endif |
| + InitRlzDelayed(user_profile); |
| // TODO(altimofeev): This pointer should probably never be NULL, but it looks |
| // like LoginUtilsImpl::OnProfileCreated() may be getting called before |
| @@ -674,6 +683,36 @@ void LoginUtilsImpl::OnProfileCreated( |
| delegate_->OnProfilePrepared(user_profile); |
| } |
| +void LoginUtilsImpl::InitRlzDelayed(Profile* user_profile) { |
| +#if defined(ENABLE_RLZ) |
| + if (!g_browser_process->local_state()->HasPrefPath(prefs::kRLZBrand)) { |
| + // Read brand code asynchronously from an OEM file and repost ourselves. |
| + google_util::chromeos::SetBrandFromFile( |
| + base::Bind(&LoginUtilsImpl::InitRlzDelayed, AsWeakPtr(), user_profile)); |
| + return; |
| + } |
| + base::PostTaskAndReplyWithResult( |
| + base::WorkerPool::GetTaskRunner(false /* task_is_slow */), |
|
Peter Kasting
2012/12/17 20:14:03
Nit: Don't document argument names like this in ge
Ivan Korotkov
2012/12/20 09:20:42
Done.
|
| + FROM_HERE, |
| + base::Bind(&file_util::PathExists, GetRlzDisabledFlagPath()), |
| + base::Bind(&LoginUtilsImpl::InitRlz, AsWeakPtr(), user_profile)); |
| +#endif |
| +} |
| + |
| +void LoginUtilsImpl::InitRlz(Profile* user_profile, bool disabled) { |
| +#if defined(ENABLE_RLZ) |
| + if (disabled) { |
| + // Empty brand code turns financial pings off. |
|
Peter Kasting
2012/12/17 20:14:03
Nit: Again, this phrase that has no context or exp
Ivan Korotkov
2012/12/20 09:20:42
Rephrased.
|
| + google_util::chromeos::ClearBrandForCurrentSession(); |
| + } |
| + // Init the RLZ library. |
| + int ping_delay = user_profile->GetPrefs()->GetInteger( |
| + first_run::GetPingDelayPrefName().c_str()); |
| + RLZTracker::InitRlzFromProfileDelayed( |
| + user_profile, UserManager::Get()->IsCurrentUserNew(), ping_delay); |
| +#endif |
| +} |
| + |
| void LoginUtilsImpl::StartTokenServices(Profile* user_profile) { |
| std::string oauth1_token; |
| std::string oauth1_secret; |