Index: chrome/browser/extensions/api/identity/identity_get_accounts_function.cc |
diff --git a/chrome/browser/extensions/api/identity/identity_get_accounts_function.cc b/chrome/browser/extensions/api/identity/identity_get_accounts_function.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..90ca80e3566d441afcc3bbe024817a40079c43bf |
--- /dev/null |
+++ b/chrome/browser/extensions/api/identity/identity_get_accounts_function.cc |
@@ -0,0 +1,43 @@ |
+// 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 "chrome/browser/extensions/api/identity/identity_get_accounts_function.h" |
+ |
+#include "chrome/browser/extensions/api/identity/identity_api.h" |
+#include "chrome/browser/extensions/api/identity/identity_constants.h" |
+#include "chrome/browser/profiles/profile.h" |
+#include "chrome/common/extensions/api/identity.h" |
+#include "components/signin/core/common/profile_management_switches.h" |
+ |
+namespace extensions { |
+ |
+IdentityGetAccountsFunction::IdentityGetAccountsFunction() { |
+} |
+ |
+IdentityGetAccountsFunction::~IdentityGetAccountsFunction() { |
+} |
+ |
+ExtensionFunction::ResponseAction IdentityGetAccountsFunction::Run() { |
+ if (GetProfile()->IsOffTheRecord()) { |
+ return RespondNow(Error(identity_constants::kOffTheRecord)); |
+ } |
+ |
+ std::vector<std::string> gaia_ids = |
+ IdentityAPI::GetFactoryInstance()->Get(GetProfile())->GetAccounts(); |
+ DCHECK(gaia_ids.size() < 2 || switches::IsExtensionsMultiAccount()); |
+ |
+ std::unique_ptr<base::ListValue> infos(new base::ListValue()); |
+ |
+ for (std::vector<std::string>::const_iterator it = gaia_ids.begin(); |
+ it != gaia_ids.end(); |
+ ++it) { |
+ api::identity::AccountInfo account_info; |
+ account_info.id = *it; |
+ infos->Append(account_info.ToValue()); |
+ } |
+ |
+ return RespondNow(OneArgument(std::move(infos))); |
+} |
+ |
+} // namespace extensions |