summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/api
diff options
context:
space:
mode:
authorcourage@chromium.org <courage@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-20 23:44:44 +0000
committercourage@chromium.org <courage@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-20 23:44:44 +0000
commit9332044293a666d077a214b735a31ba9f3debed7 (patch)
tree6e25d3d4700c186199e80fd28745e445e0341f01 /chrome/browser/extensions/api
parent6a09bfd7e92ee13cc52d7e63860d92c73aa308eb (diff)
downloadchromium_src-9332044293a666d077a214b735a31ba9f3debed7.zip
chromium_src-9332044293a666d077a214b735a31ba9f3debed7.tar.gz
chromium_src-9332044293a666d077a214b735a31ba9f3debed7.tar.bz2
Enable identity.email permission and chrome.identity.getProfileUserInfo API in stable
This change makes some small tweaks to identity.email and getProfileUserInfo based on apps-dev feedback, and enables them in stable. The UI string for identity.email now reads "Know your email address". chrome.identity.getProfileUserInfo can be called without the email permission (in which case it returns an ID only). BUG=368343 Review URL: https://codereview.chromium.org/337423002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278867 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/api')
-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 {