| Index: services/identity/identity_manager.cc | 
| diff --git a/services/identity/identity_manager.cc b/services/identity/identity_manager.cc | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..8ea9d7250cfebd9e4b73f159a15f07bff6f70bc9 | 
| --- /dev/null | 
| +++ b/services/identity/identity_manager.cc | 
| @@ -0,0 +1,39 @@ | 
| +// Copyright 2017 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#include "services/identity/identity_manager.h" | 
| + | 
| +#include "components/signin/core/account_id/account_id.h" | 
| +#include "components/signin/core/browser/account_info.h" | 
| +#include "components/signin/core/browser/signin_manager_base.h" | 
| +#include "mojo/public/cpp/bindings/strong_binding.h" | 
| + | 
| +namespace identity { | 
| + | 
| +// static | 
| +void IdentityManager::Create(mojom::IdentityManagerRequest request, | 
| +                             SigninManagerBase* signin_manager) { | 
| +  mojo::MakeStrongBinding(base::MakeUnique<IdentityManager>(signin_manager), | 
| +                          std::move(request)); | 
| +} | 
| + | 
| +IdentityManager::IdentityManager(SigninManagerBase* signin_manager) | 
| +    : signin_manager_(signin_manager) {} | 
| + | 
| +IdentityManager::~IdentityManager() {} | 
| + | 
| +void IdentityManager::GetPrimaryAccountId( | 
| +    const GetPrimaryAccountIdCallback& callback) { | 
| +  AccountId account_id = EmptyAccountId(); | 
| + | 
| +  if (signin_manager_->IsAuthenticated()) { | 
| +    AccountInfo account_info = signin_manager_->GetAuthenticatedAccountInfo(); | 
| +    account_id = | 
| +        AccountId::FromUserEmailGaiaId(account_info.email, account_info.gaia); | 
| +  } | 
| + | 
| +  callback.Run(account_id); | 
| +} | 
| + | 
| +}  // namespace identity | 
|  |