summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions
diff options
context:
space:
mode:
authorvadimt@chromium.org <vadimt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-26 23:20:04 +0000
committervadimt@chromium.org <vadimt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-26 23:20:04 +0000
commit597910a5e7b7229b9f3a83d66ef342dd18896b3c (patch)
tree359059cbf19934dce01648c06c4a23d10943a067 /chrome/common/extensions
parent86795711515713a04d0f12062a20bfc57dae4271 (diff)
downloadchromium_src-597910a5e7b7229b9f3a83d66ef342dd18896b3c.zip
chromium_src-597910a5e7b7229b9f3a83d66ef342dd18896b3c.tar.gz
chromium_src-597910a5e7b7229b9f3a83d66ef342dd18896b3c.tar.bz2
Incremental changes to chrome.location API.
1. chrome.location.onLocationUpdate event will be called separately for each request. Location param will have not an array of request names, but a single name. 2. Correspondingly, on C++ side, every LocationRequest becomes a geolocation observer. 3. LocationRequests live in IO thread, LocationManager lives in UI thread. 4. LocationManager gets notified when the extension is unloaded and clears extension’s requests. 5. LocationRequest calls GeolocationProvider’s OnPermissionGranted() since “location” permission is required to use the API. BUG=230943 Review URL: https://chromiumcodereview.appspot.com/14287007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@196874 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions')
-rw-r--r--chrome/common/extensions/api/location.idl4
-rw-r--r--chrome/common/extensions/extension_unittest.cc11
-rw-r--r--chrome/common/extensions/permissions/chrome_api_permissions.cc5
-rw-r--r--chrome/common/extensions/permissions/permission_set_unittest.cc3
4 files changed, 17 insertions, 6 deletions
diff --git a/chrome/common/extensions/api/location.idl b/chrome/common/extensions/api/location.idl
index f7ba5f0..9a33ee0 100644
--- a/chrome/common/extensions/api/location.idl
+++ b/chrome/common/extensions/api/location.idl
@@ -40,8 +40,8 @@ namespace location {
// Parameter of onLocationUpdate event's listener.
dictionary Location {
- // Names of all requests that this location update matches.
- DOMString[] requestNames;
+ // Location watch request name.
+ DOMString name;
// Coordinates and their accuracy.
Coordinates coords;
diff --git a/chrome/common/extensions/extension_unittest.cc b/chrome/common/extensions/extension_unittest.cc
index edf24c4..c426c2a 100644
--- a/chrome/common/extensions/extension_unittest.cc
+++ b/chrome/common/extensions/extension_unittest.cc
@@ -427,6 +427,17 @@ TEST_F(ExtensionTest, GetPermissionMessages_ManyApiPermissions) {
UTF16ToUTF8(warnings[5]));
}
+TEST_F(ExtensionTest, GetPermissionMessages_LocationApiPermission) {
+ scoped_refptr<Extension> extension;
+ extension = LoadManifest("permissions",
+ "location-api.json",
+ Manifest::COMPONENT,
+ Extension::NO_FLAGS);
+ std::vector<string16> warnings = extension->GetPermissionMessageStrings();
+ ASSERT_EQ(1u, warnings.size());
+ EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0]));
+}
+
TEST_F(ExtensionTest, GetPermissionMessages_ManyHosts) {
(new ContentScriptsHandler)->Register();
scoped_refptr<Extension> extension;
diff --git a/chrome/common/extensions/permissions/chrome_api_permissions.cc b/chrome/common/extensions/permissions/chrome_api_permissions.cc
index 22d74a6e..3b9fa9d 100644
--- a/chrome/common/extensions/permissions/chrome_api_permissions.cc
+++ b/chrome/common/extensions/permissions/chrome_api_permissions.cc
@@ -86,7 +86,10 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions()
{ APIPermission::kInput, "input", APIPermissionInfo::kFlagNone,
IDS_EXTENSION_PROMPT_WARNING_INPUT,
PermissionMessage::kInput },
- { APIPermission::kLocation, "location" },
+ { APIPermission::kLocation, "location",
+ APIPermissionInfo::kFlagCannotBeOptional,
+ IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION,
+ PermissionMessage::kGeolocation },
{ APIPermission::kManagement, "management", APIPermissionInfo::kFlagNone,
IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT,
PermissionMessage::kManagement },
diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/chrome/common/extensions/permissions/permission_set_unittest.cc
index 130d52b..73cef12 100644
--- a/chrome/common/extensions/permissions/permission_set_unittest.cc
+++ b/chrome/common/extensions/permissions/permission_set_unittest.cc
@@ -683,9 +683,6 @@ TEST_F(PermissionsTest, PermissionMessages) {
// TODO(erikkay) add a string for this permission.
skip.insert(APIPermission::kBackground);
- // TODO(vadimt) Consider adding a string for this permission.
- skip.insert(APIPermission::kLocation);
-
skip.insert(APIPermission::kClipboardWrite);
// The cookie permission does nothing unless you have associated host