summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r--chrome/browser/extensions/api/identity/identity_api.cc9
-rw-r--r--chrome/browser/extensions/api/identity/identity_apitest.cc43
2 files changed, 48 insertions, 4 deletions
diff --git a/chrome/browser/extensions/api/identity/identity_api.cc b/chrome/browser/extensions/api/identity/identity_api.cc
index 320a944..710678e 100644
--- a/chrome/browser/extensions/api/identity/identity_api.cc
+++ b/chrome/browser/extensions/api/identity/identity_api.cc
@@ -31,6 +31,8 @@
#include "extensions/browser/event_router.h"
#include "extensions/browser/extension_function_dispatcher.h"
#include "extensions/common/extension.h"
+#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "google_apis/gaia/gaia_urls.h"
#include "url/gurl.h"
@@ -768,8 +770,11 @@ ExtensionFunction::ResponseAction IdentityGetProfileUserInfoFunction::Run() {
}
api::identity::ProfileUserInfo profile_user_info;
- profile_user_info.email =
- GetProfile()->GetPrefs()->GetString(prefs::kGoogleServicesUsername);
+ if (GetExtension()->permissions_data()->HasAPIPermission(
+ APIPermission::kIdentityEmail)) {
+ profile_user_info.email =
+ GetProfile()->GetPrefs()->GetString(prefs::kGoogleServicesUsername);
+ }
profile_user_info.id =
GetProfile()->GetPrefs()->GetString(prefs::kGoogleServicesUserAccountId);
diff --git a/chrome/browser/extensions/api/identity/identity_apitest.cc b/chrome/browser/extensions/api/identity/identity_apitest.cc
index 7cc798f..737b330 100644
--- a/chrome/browser/extensions/api/identity/identity_apitest.cc
+++ b/chrome/browser/extensions/api/identity/identity_apitest.cc
@@ -595,10 +595,29 @@ class IdentityGetProfileUserInfoFunctionTest : public ExtensionBrowserTest {
utils::RunFunctionAndReturnSingleResult(func.get(), "[]", browser()));
return api::identity::ProfileUserInfo::FromValue(*value.get());
}
+
+ scoped_ptr<api::identity::ProfileUserInfo> RunGetProfileUserInfoWithEmail() {
+ scoped_refptr<IdentityGetProfileUserInfoFunction> func(
+ new IdentityGetProfileUserInfoFunction);
+ func->set_extension(CreateExtensionWithEmailPermission());
+ scoped_ptr<base::Value> value(
+ utils::RunFunctionAndReturnSingleResult(func.get(), "[]", browser()));
+ return api::identity::ProfileUserInfo::FromValue(*value.get());
+ }
+
+ private:
+ scoped_refptr<Extension> CreateExtensionWithEmailPermission() {
+ scoped_ptr<base::DictionaryValue> test_extension_value(
+ utils::ParseDictionary(
+ "{\"name\": \"Test\", \"version\": \"1.0\", "
+ "\"permissions\": [\"identity.email\"]}"));
+ return utils::CreateExtension(test_extension_value.get());
+ }
};
IN_PROC_BROWSER_TEST_F(IdentityGetProfileUserInfoFunctionTest, NotSignedIn) {
- scoped_ptr<api::identity::ProfileUserInfo> info = RunGetProfileUserInfo();
+ scoped_ptr<api::identity::ProfileUserInfo> info =
+ RunGetProfileUserInfoWithEmail();
EXPECT_TRUE(info->email.empty());
EXPECT_TRUE(info->id.empty());
}
@@ -609,11 +628,31 @@ IN_PROC_BROWSER_TEST_F(IdentityGetProfileUserInfoFunctionTest, SignedIn) {
profile()->GetPrefs()
->SetString(prefs::kGoogleServicesUserAccountId, "12345");
- scoped_ptr<api::identity::ProfileUserInfo> info = RunGetProfileUserInfo();
+ scoped_ptr<api::identity::ProfileUserInfo> info =
+ RunGetProfileUserInfoWithEmail();
EXPECT_EQ("president@example.com", info->email);
EXPECT_EQ("12345", info->id);
}
+IN_PROC_BROWSER_TEST_F(IdentityGetProfileUserInfoFunctionTest,
+ NotSignedInNoEmail) {
+ scoped_ptr<api::identity::ProfileUserInfo> info = RunGetProfileUserInfo();
+ EXPECT_TRUE(info->email.empty());
+ EXPECT_TRUE(info->id.empty());
+}
+
+IN_PROC_BROWSER_TEST_F(IdentityGetProfileUserInfoFunctionTest,
+ SignedInNoEmail) {
+ profile()->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
+ "president@example.com");
+ profile()->GetPrefs()->SetString(prefs::kGoogleServicesUserAccountId,
+ "12345");
+
+ scoped_ptr<api::identity::ProfileUserInfo> info = RunGetProfileUserInfo();
+ EXPECT_TRUE(info->email.empty());
+ EXPECT_EQ("12345", info->id);
+}
+
class GetAuthTokenFunctionTest : public AsyncExtensionBrowserTest {
public:
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {