diff options
Diffstat (limited to 'chrome/browser/extensions/api')
-rw-r--r-- | chrome/browser/extensions/api/identity/identity_api.cc | 9 | ||||
-rw-r--r-- | chrome/browser/extensions/api/identity/identity_apitest.cc | 43 |
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 { |