| Index: chrome/browser/extensions/api/identity/identity_get_profile_user_info_function.cc
|
| diff --git a/chrome/browser/extensions/api/identity/identity_get_profile_user_info_function.cc b/chrome/browser/extensions/api/identity/identity_get_profile_user_info_function.cc
|
| index 0940586623b4d09a5a3d803c6aa7f49d128616ac..84a1253fb719917256a5710a56f02c9fd0d64ab5 100644
|
| --- a/chrome/browser/extensions/api/identity/identity_get_profile_user_info_function.cc
|
| +++ b/chrome/browser/extensions/api/identity/identity_get_profile_user_info_function.cc
|
| @@ -6,11 +6,12 @@
|
|
|
| #include "chrome/browser/extensions/api/identity/identity_constants.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/signin/signin_manager_factory.h"
|
| #include "chrome/common/extensions/api/identity.h"
|
| -#include "components/signin/core/browser/signin_manager.h"
|
| +#include "content/public/common/service_manager_connection.h"
|
| #include "extensions/common/extension.h"
|
| #include "extensions/common/permissions/permissions_data.h"
|
| +#include "services/identity/public/interfaces/constants.mojom.h"
|
| +#include "services/service_manager/public/cpp/connector.h"
|
|
|
| namespace extensions {
|
|
|
| @@ -25,16 +26,35 @@ ExtensionFunction::ResponseAction IdentityGetProfileUserInfoFunction::Run() {
|
| return RespondNow(Error(identity_constants::kOffTheRecord));
|
| }
|
|
|
| - AccountInfo account = SigninManagerFactory::GetForProfile(
|
| - GetProfile())->GetAuthenticatedAccountInfo();
|
| - api::identity::ProfileUserInfo profile_user_info;
|
| - if (extension()->permissions_data()->HasAPIPermission(
|
| + if (!extension()->permissions_data()->HasAPIPermission(
|
| APIPermission::kIdentityEmail)) {
|
| - profile_user_info.email = account.email;
|
| - profile_user_info.id = account.gaia;
|
| + api::identity::ProfileUserInfo profile_user_info;
|
| + return RespondNow(OneArgument(profile_user_info.ToValue()));
|
| + }
|
| +
|
| + content::BrowserContext::GetConnectorFor(GetProfile())
|
| + ->BindInterface(identity::mojom::kServiceName,
|
| + mojo::MakeRequest(&identity_manager_));
|
| +
|
| + identity_manager_->GetPrimaryAccountId(base::Bind(
|
| + &IdentityGetProfileUserInfoFunction::OnReceivedPrimaryAccountId, this));
|
| +
|
| + return RespondLater();
|
| +}
|
| +
|
| +void IdentityGetProfileUserInfoFunction::OnReceivedPrimaryAccountId(
|
| + const base::Optional<AccountId>& account_id) {
|
| + DCHECK(extension()->permissions_data()->HasAPIPermission(
|
| + APIPermission::kIdentityEmail));
|
| +
|
| + api::identity::ProfileUserInfo profile_user_info;
|
| +
|
| + if (account_id) {
|
| + profile_user_info.email = account_id->GetUserEmail();
|
| + profile_user_info.id = account_id->GetGaiaId();
|
| }
|
|
|
| - return RespondNow(OneArgument(profile_user_info.ToValue()));
|
| + Respond(OneArgument(profile_user_info.ToValue()));
|
| }
|
|
|
| } // namespace extensions
|
|
|