summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authormihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-02 20:17:09 +0000
committermihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-02 20:17:09 +0000
commitbebe1d02eb8b14a6e7db2cce1a6d13f556a5390f (patch)
treeacfdaa59f2475940035767d3fd4af4bd037bfebb /chrome
parent3b174e0dfd07d720e5a6cfaa46333c28b47fff62 (diff)
downloadchromium_src-bebe1d02eb8b14a6e7db2cce1a6d13f556a5390f.zip
chromium_src-bebe1d02eb8b14a6e7db2cce1a6d13f556a5390f.tar.gz
chromium_src-bebe1d02eb8b14a6e7db2cce1a6d13f556a5390f.tar.bz2
Don't show host permission warnings for platform apps.
Since platform apps always use isolated storage, they can't (silently) access user data on other domains, so there's no need to prompt. BUG=130680 R=aa@chromium.org TBR=phajdan.jr@chromium.org,atwilson@chromium.org Review URL: https://chromiumcodereview.appspot.com/10837060 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149688 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/automation/testing_automation_provider.cc1
-rw-r--r--chrome/browser/background/background_application_list_model.cc1
-rw-r--r--chrome/browser/background/background_application_list_model_unittest.cc1
-rw-r--r--chrome/browser/background/background_mode_manager.cc1
-rw-r--r--chrome/browser/chromeos/extensions/file_handler_util.h1
-rw-r--r--chrome/browser/extensions/api/permissions/permissions_api.cc5
-rw-r--r--chrome/browser/extensions/bundle_installer.cc1
-rw-r--r--chrome/browser/extensions/convert_web_app_browsertest.cc1
-rw-r--r--chrome/browser/extensions/convert_web_app_unittest.cc3
-rw-r--r--chrome/browser/extensions/extension_install_prompt.cc7
-rw-r--r--chrome/browser/extensions/extension_management_api.cc1
-rw-r--r--chrome/browser/extensions/extension_prefs.cc1
-rw-r--r--chrome/browser/extensions/extension_service_unittest.cc1
-rw-r--r--chrome/browser/extensions/installed_loader.cc1
-rw-r--r--chrome/browser/extensions/unpacked_installer.cc1
-rw-r--r--chrome/common/extensions/api/extension_api.cc1
-rw-r--r--chrome/common/extensions/extension.cc11
-rw-r--r--chrome/common/extensions/extension.h4
-rw-r--r--chrome/common/extensions/extension_unittest.cc2
-rw-r--r--chrome/common/extensions/permissions/permission_set.cc29
-rw-r--r--chrome/common/extensions/permissions/permission_set.h31
-rw-r--r--chrome/common/extensions/permissions/permission_set_unittest.cc29
-rw-r--r--chrome/test/data/extensions/permissions/platform_app_all_urls.json11
-rw-r--r--chrome/test/data/extensions/permissions/platform_app_hosts.json11
24 files changed, 115 insertions, 41 deletions
diff --git a/chrome/browser/automation/testing_automation_provider.cc b/chrome/browser/automation/testing_automation_provider.cc
index 09221ae..6c52b92 100644
--- a/chrome/browser/automation/testing_automation_provider.cc
+++ b/chrome/browser/automation/testing_automation_provider.cc
@@ -132,6 +132,7 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_action.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/extensions/url_pattern.h"
#include "chrome/common/extensions/url_pattern_set.h"
#include "chrome/common/pref_names.h"
diff --git a/chrome/browser/background/background_application_list_model.cc b/chrome/browser/background/background_application_list_model.cc
index 4e939353..3cbb114 100644
--- a/chrome/browser/background/background_application_list_model.cc
+++ b/chrome/browser/background/background_application_list_model.cc
@@ -22,6 +22,7 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_icon_set.h"
#include "chrome/common/extensions/extension_resource.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
#include "ui/base/l10n/l10n_util_collator.h"
diff --git a/chrome/browser/background/background_application_list_model_unittest.cc b/chrome/browser/background/background_application_list_model_unittest.cc
index d6ce1d6..289bec8 100644
--- a/chrome/browser/background/background_application_list_model_unittest.cc
+++ b/chrome/browser/background/background_application_list_model_unittest.cc
@@ -20,6 +20,7 @@
#include "chrome/browser/extensions/permissions_updater.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_types.h"
diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
index 6411635..ea3133a 100644
--- a/chrome/browser/background/background_mode_manager.cc
+++ b/chrome/browser/background/background_mode_manager.cc
@@ -34,6 +34,7 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_constants.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/pref_names.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_types.h"
diff --git a/chrome/browser/chromeos/extensions/file_handler_util.h b/chrome/browser/chromeos/extensions/file_handler_util.h
index c0489fe..6fb8d25 100644
--- a/chrome/browser/chromeos/extensions/file_handler_util.h
+++ b/chrome/browser/chromeos/extensions/file_handler_util.h
@@ -7,6 +7,7 @@
#include <vector>
+#include "base/callback.h"
#include "base/platform_file.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/url_pattern_set.h"
diff --git a/chrome/browser/extensions/api/permissions/permissions_api.cc b/chrome/browser/extensions/api/permissions/permissions_api.cc
index e5e6555..79bccac 100644
--- a/chrome/browser/extensions/api/permissions/permissions_api.cc
+++ b/chrome/browser/extensions/api/permissions/permissions_api.cc
@@ -201,8 +201,9 @@ bool RequestPermissionsFunction::RunImpl() {
// We don't need to show the prompt if there are no new warnings, or if
// we're skipping the confirmation UI. All extension types but INTERNAL
// are allowed to silently increase their permission level.
- if (auto_confirm_for_tests == PROCEED ||
- requested_permissions_->GetWarningMessages().size() == 0) {
+ bool has_no_warnings = requested_permissions_->GetWarningMessages(
+ GetExtension()->GetType()).size() == 0;
+ if (auto_confirm_for_tests == PROCEED || has_no_warnings) {
InstallUIProceed();
} else if (auto_confirm_for_tests == ABORT) {
// Pretend the user clicked cancel.
diff --git a/chrome/browser/extensions/bundle_installer.cc b/chrome/browser/extensions/bundle_installer.cc
index 43fdd63..c3ad798 100644
--- a/chrome/browser/extensions/bundle_installer.cc
+++ b/chrome/browser/extensions/bundle_installer.cc
@@ -21,6 +21,7 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/web_contents.h"
diff --git a/chrome/browser/extensions/convert_web_app_browsertest.cc b/chrome/browser/extensions/convert_web_app_browsertest.cc
index 8c20e9c..858c69e 100644
--- a/chrome/browser/extensions/convert_web_app_browsertest.cc
+++ b/chrome/browser/extensions/convert_web_app_browsertest.cc
@@ -10,6 +10,7 @@
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/notification_details.h"
diff --git a/chrome/browser/extensions/convert_web_app_unittest.cc b/chrome/browser/extensions/convert_web_app_unittest.cc
index 4a8b257..f869ee0 100644
--- a/chrome/browser/extensions/convert_web_app_unittest.cc
+++ b/chrome/browser/extensions/convert_web_app_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -19,6 +19,7 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_icon_set.h"
#include "chrome/common/extensions/extension_resource.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/extensions/url_pattern.h"
#include "chrome/common/web_apps.h"
#include "googleurl/src/gurl.h"
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index b65f132..a47f415 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -28,6 +28,7 @@
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/extension_resource.h"
#include "chrome/common/extensions/extension_switch_utils.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/extensions/url_pattern.h"
#include "content/public/browser/page_navigator.h"
#include "grit/chromium_strings.h"
@@ -468,8 +469,10 @@ void ExtensionInstallPrompt::OnMintTokenFailure(
void ExtensionInstallPrompt::ShowConfirmation() {
prompt_.set_type(prompt_type_);
- if (permissions_)
- prompt_.SetPermissions(permissions_->GetWarningMessages());
+ if (permissions_) {
+ prompt_.SetPermissions(
+ permissions_->GetWarningMessages(extension_->GetType()));
+ }
switch (prompt_type_) {
case PERMISSIONS_PROMPT:
diff --git a/chrome/browser/extensions/extension_management_api.cc b/chrome/browser/extensions/extension_management_api.cc
index 291e3dd..928881a 100644
--- a/chrome/browser/extensions/extension_management_api.cc
+++ b/chrome/browser/extensions/extension_management_api.cc
@@ -29,6 +29,7 @@
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_error_utils.h"
#include "chrome/common/extensions/extension_icon_set.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/extensions/url_pattern.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index 3437643a..e2ed4ea 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -17,6 +17,7 @@
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/extension_switch_utils.h"
#include "chrome/common/extensions/manifest.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/extensions/permissions/permissions_info.h"
#include "chrome/common/extensions/url_pattern.h"
#include "chrome/common/pref_names.h"
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 3475aa7..dc8904e 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -61,6 +61,7 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/extension_resource.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/extensions/url_pattern.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/string_ordinal.h"
diff --git a/chrome/browser/extensions/installed_loader.cc b/chrome/browser/extensions/installed_loader.cc
index 83617a4..e5292c7 100644
--- a/chrome/browser/extensions/installed_loader.cc
+++ b/chrome/browser/extensions/installed_loader.cc
@@ -7,6 +7,7 @@
#include "base/file_path.h"
#include "base/metrics/histogram.h"
#include "base/stringprintf.h"
+#include "base/threading/thread_restrictions.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/extensions/extension_prefs.h"
diff --git a/chrome/browser/extensions/unpacked_installer.cc b/chrome/browser/extensions/unpacked_installer.cc
index 9ea11a1..f314c4b 100644
--- a/chrome/browser/extensions/unpacked_installer.cc
+++ b/chrome/browser/extensions/unpacked_installer.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/callback.h"
#include "base/file_util.h"
+#include "base/threading/thread_restrictions.h"
#include "chrome/browser/extensions/extension_install_prompt.h"
#include "chrome/browser/extensions/extension_install_ui.h"
#include "chrome/browser/extensions/extension_prefs.h"
diff --git a/chrome/common/extensions/api/extension_api.cc b/chrome/common/extensions/api/extension_api.cc
index 8f5e927..3399bf8 100644
--- a/chrome/common/extensions/api/extension_api.cc
+++ b/chrome/common/extensions/api/extension_api.cc
@@ -19,6 +19,7 @@
#include "chrome/common/extensions/api/generated_schemas.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/features/simple_feature_provider.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "googleurl/src/gurl.h"
#include "grit/common_resources.h"
#include "grit/extensions_api_resources.h"
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
index 712e65c..2427b8d 100644
--- a/chrome/common/extensions/extension.cc
+++ b/chrome/common/extensions/extension.cc
@@ -38,6 +38,7 @@
#include "chrome/common/extensions/file_browser_handler.h"
#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/permissions/permissions_info.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/extensions/url_pattern_set.h"
#include "chrome/common/extensions/user_script.h"
#include "chrome/common/url_constants.h"
@@ -3519,10 +3520,12 @@ bool Extension::HasFullPermissions() const {
PermissionMessages Extension::GetPermissionMessages() const {
base::AutoLock auto_lock(runtime_data_lock_);
- if (IsTrustedId(id()))
+ if (IsTrustedId(id())) {
return PermissionMessages();
- else
- return runtime_data_.GetActivePermissions()->GetPermissionMessages();
+ } else {
+ return runtime_data_.GetActivePermissions()->GetPermissionMessages(
+ GetType());
+ }
}
std::vector<string16> Extension::GetPermissionMessageStrings() const {
@@ -3530,7 +3533,7 @@ std::vector<string16> Extension::GetPermissionMessageStrings() const {
if (IsTrustedId(id()))
return std::vector<string16>();
else
- return runtime_data_.GetActivePermissions()->GetWarningMessages();
+ return runtime_data_.GetActivePermissions()->GetWarningMessages(GetType());
}
void Extension::SetActivePermissions(
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h
index d3c3bcb..8c9f83b 100644
--- a/chrome/common/extensions/extension.h
+++ b/chrome/common/extensions/extension.h
@@ -24,7 +24,8 @@
#include "chrome/common/extensions/extension_action.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
-#include "chrome/common/extensions/permissions/permission_set.h"
+#include "chrome/common/extensions/permissions/api_permission.h"
+#include "chrome/common/extensions/permissions/permission_message.h"
#include "chrome/common/extensions/user_script.h"
#include "chrome/common/extensions/url_pattern.h"
#include "chrome/common/extensions/url_pattern_set.h"
@@ -51,6 +52,7 @@ FORWARD_DECLARE_TEST(TabStripModelTest, Apps);
namespace extensions {
class Manifest;
+class PermissionSet;
typedef std::set<std::string> OAuth2Scopes;
diff --git a/chrome/common/extensions/extension_unittest.cc b/chrome/common/extensions/extension_unittest.cc
index 8d6e961..6ffccba 100644
--- a/chrome/common/extensions/extension_unittest.cc
+++ b/chrome/common/extensions/extension_unittest.cc
@@ -19,8 +19,8 @@
#include "chrome/common/extensions/extension_file_util.h"
#include "chrome/common/extensions/extension_manifest_constants.h"
#include "chrome/common/extensions/extension_resource.h"
-#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/extensions/permissions/api_permission.h"
+#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/url_constants.h"
#include "googleurl/src/gurl.h"
#include "net/base/mime_sniffer.h"
diff --git a/chrome/common/extensions/permissions/permission_set.cc b/chrome/common/extensions/permissions/permission_set.cc
index 5b51616..fde8fee 100644
--- a/chrome/common/extensions/permissions/permission_set.cc
+++ b/chrome/common/extensions/permissions/permission_set.cc
@@ -264,8 +264,8 @@ std::set<std::string>
return GetDistinctHosts(effective_hosts_, true, true);
}
-PermissionMessages
- PermissionSet::GetPermissionMessages() const {
+PermissionMessages PermissionSet::GetPermissionMessages(
+ Extension::Type extension_type) const {
PermissionMessages messages;
if (HasEffectiveFullAccess()) {
@@ -275,14 +275,18 @@ PermissionMessages
return messages;
}
- if (HasEffectiveAccessToAllHosts()) {
- messages.push_back(PermissionMessage(
- PermissionMessage::kHostsAll,
- l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS)));
- } else {
- std::set<std::string> hosts = GetDistinctHostsForDisplay();
- if (!hosts.empty())
- messages.push_back(PermissionMessage::CreateFromHostList(hosts));
+ // Since platform apps always use isolated storage, they can't (silently)
+ // access user data on other domains, so there's no need to prompt.
+ if (extension_type != Extension::TYPE_PLATFORM_APP) {
+ if (HasEffectiveAccessToAllHosts()) {
+ messages.push_back(PermissionMessage(
+ PermissionMessage::kHostsAll,
+ l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS)));
+ } else {
+ std::set<std::string> hosts = GetDistinctHostsForDisplay();
+ if (!hosts.empty())
+ messages.push_back(PermissionMessage::CreateFromHostList(hosts));
+ }
}
std::set<PermissionMessage> simple_msgs =
@@ -292,9 +296,10 @@ PermissionMessages
return messages;
}
-std::vector<string16> PermissionSet::GetWarningMessages() const {
+std::vector<string16> PermissionSet::GetWarningMessages(
+ Extension::Type extension_type) const {
std::vector<string16> messages;
- PermissionMessages permissions = GetPermissionMessages();
+ PermissionMessages permissions = GetPermissionMessages(extension_type);
bool audio_capture = false;
bool video_capture = false;
diff --git a/chrome/common/extensions/permissions/permission_set.h b/chrome/common/extensions/permissions/permission_set.h
index 76d6521..85475fe 100644
--- a/chrome/common/extensions/permissions/permission_set.h
+++ b/chrome/common/extensions/permissions/permission_set.h
@@ -14,14 +14,13 @@
#include "base/memory/ref_counted.h"
#include "base/memory/singleton.h"
#include "base/string16.h"
+#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/permissions/api_permission.h"
#include "chrome/common/extensions/permissions/permission_message.h"
#include "chrome/common/extensions/url_pattern_set.h"
namespace extensions {
-class Extension;
-
// The PermissionSet is an immutable class that encapsulates an
// extension's permissions. The class exposes set operations for combining and
// manipulating the permissions.
@@ -78,17 +77,15 @@ class PermissionSet
// HasAnyAPIPermission("tabs") will return true.
bool HasAnyAccessToAPI(const std::string& api_name) const;
- // Gets a list of the distinct hosts for displaying to the user.
- // NOTE: do not use this for comparing permissions, since this disgards some
- // information.
- std::set<std::string> GetDistinctHostsForDisplay() const;
-
// Gets the localized permission messages that represent this set.
- PermissionMessages GetPermissionMessages() const;
+ // The set of permission messages shown varies by extension type.
+ PermissionMessages GetPermissionMessages(Extension::Type extension_type)
+ const;
// Gets the localized permission messages that represent this set (represented
- // as strings).
- std::vector<string16> GetWarningMessages() const;
+ // as strings). The set of permission messages shown varies by extension type.
+ std::vector<string16> GetWarningMessages(Extension::Type extension_type)
+ const;
// Returns true if this is an empty set (e.g., the default permission set).
bool IsEmpty() const;
@@ -132,6 +129,15 @@ class PermissionSet
private:
FRIEND_TEST_ALL_PREFIXES(PermissionsTest, HasLessHostPrivilegesThan);
FRIEND_TEST_ALL_PREFIXES(PermissionsTest, GetWarningMessages_AudioVideo);
+ FRIEND_TEST_ALL_PREFIXES(PermissionsTest, GetDistinctHostsForDisplay);
+ FRIEND_TEST_ALL_PREFIXES(PermissionsTest,
+ GetDistinctHostsForDisplay_ComIsBestRcd);
+ FRIEND_TEST_ALL_PREFIXES(PermissionsTest,
+ GetDistinctHostsForDisplay_NetIs2ndBestRcd);
+ FRIEND_TEST_ALL_PREFIXES(PermissionsTest,
+ GetDistinctHostsForDisplay_OrgIs3rdBestRcd);
+ FRIEND_TEST_ALL_PREFIXES(PermissionsTest,
+ GetDistinctHostsForDisplay_FirstInListIs4thBestRcd);
friend class base::RefCountedThreadSafe<PermissionSet>;
~PermissionSet();
@@ -163,6 +169,11 @@ class PermissionSet
bool HasLessHostPrivilegesThan(
const PermissionSet* permissions) const;
+ // Gets a list of the distinct hosts for displaying to the user.
+ // NOTE: do not use this for comparing permissions, since this disgards some
+ // information.
+ std::set<std::string> GetDistinctHostsForDisplay() const;
+
// The api list is used when deciding if an extension can access certain
// extension APIs and features.
APIPermissionSet apis_;
diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/chrome/common/extensions/permissions/permission_set_unittest.cc
index fb1db92..17f7cca 100644
--- a/chrome/common/extensions/permissions/permission_set_unittest.cc
+++ b/chrome/common/extensions/permissions/permission_set_unittest.cc
@@ -665,7 +665,7 @@ TEST(PermissionsTest, DefaultFunctionAccess) {
}
// Tests the default permissions (empty API permission set).
-TEST(PermissionSetTest, DefaultAnyAPIAccess) {
+TEST(PermissionsTest, DefaultAnyAPIAccess) {
const struct {
const char* api_name;
bool expect_success;
@@ -700,8 +700,7 @@ TEST(PermissionsTest, GetWarningMessages_ManyHosts) {
scoped_refptr<Extension> extension;
extension = LoadManifest("permissions", "many-hosts.json");
- std::vector<string16> warnings =
- extension->GetActivePermissions()->GetWarningMessages();
+ std::vector<string16> warnings = extension->GetPermissionMessageStrings();
ASSERT_EQ(1u, warnings.size());
EXPECT_EQ("Access your data on encrypted.google.com and www.google.com",
UTF16ToUTF8(warnings[0]));
@@ -712,8 +711,7 @@ TEST(PermissionsTest, GetWarningMessages_Plugins) {
scoped_refptr<PermissionSet> permissions;
extension = LoadManifest("permissions", "plugins.json");
- std::vector<string16> warnings =
- extension->GetActivePermissions()->GetWarningMessages();
+ std::vector<string16> warnings = extension->GetPermissionMessageStrings();
// We don't parse the plugins key on Chrome OS, so it should not ask for any
// permissions.
#if defined(OS_CHROMEOS)
@@ -732,7 +730,8 @@ TEST(PermissionsTest, GetWarningMessages_AudioVideo) {
PermissionSet* set =
const_cast<PermissionSet*>(
extension->GetActivePermissions().get());
- std::vector<string16> warnings = set->GetWarningMessages();
+ std::vector<string16> warnings =
+ set->GetWarningMessages(extension->GetType());
EXPECT_FALSE(Contains(warnings, "Use your microphone"));
EXPECT_FALSE(Contains(warnings, "Use your camera"));
EXPECT_TRUE(Contains(warnings, "Use your microphone and camera"));
@@ -741,7 +740,7 @@ TEST(PermissionsTest, GetWarningMessages_AudioVideo) {
// Just audio present.
set->apis_.erase(APIPermission::kVideoCapture);
- warnings = set->GetWarningMessages();
+ warnings = set->GetWarningMessages(extension->GetType());
EXPECT_EQ(combined_size, warnings.size());
EXPECT_EQ(combined_index, IndexOf(warnings, "Use your microphone"));
EXPECT_FALSE(Contains(warnings, "Use your camera"));
@@ -750,13 +749,27 @@ TEST(PermissionsTest, GetWarningMessages_AudioVideo) {
// Just video present.
set->apis_.erase(APIPermission::kAudioCapture);
set->apis_.insert(APIPermission::kVideoCapture);
- warnings = set->GetWarningMessages();
+ warnings = set->GetWarningMessages(extension->GetType());
EXPECT_EQ(combined_size, warnings.size());
EXPECT_FALSE(Contains(warnings, "Use your microphone"));
EXPECT_FALSE(Contains(warnings, "Use your microphone and camera"));
EXPECT_TRUE(Contains(warnings, "Use your camera"));
}
+TEST(PermissionsTest, GetWarningMessages_PlatformApppHosts) {
+ scoped_refptr<Extension> extension;
+
+ extension = LoadManifest("permissions", "platform_app_hosts.json");
+ EXPECT_TRUE(extension->is_platform_app());
+ std::vector<string16> warnings = extension->GetPermissionMessageStrings();
+ ASSERT_EQ(0u, warnings.size());
+
+ extension = LoadManifest("permissions", "platform_app_all_urls.json");
+ EXPECT_TRUE(extension->is_platform_app());
+ warnings = extension->GetPermissionMessageStrings();
+ ASSERT_EQ(0u, warnings.size());
+}
+
TEST(PermissionsTest, GetDistinctHostsForDisplay) {
scoped_refptr<PermissionSet> perm_set;
APIPermissionSet empty_perms;
diff --git a/chrome/test/data/extensions/permissions/platform_app_all_urls.json b/chrome/test/data/extensions/permissions/platform_app_all_urls.json
new file mode 100644
index 0000000..4bb59ec
--- /dev/null
+++ b/chrome/test/data/extensions/permissions/platform_app_all_urls.json
@@ -0,0 +1,11 @@
+{
+ "name": "Platform app <all_urls>",
+ "version": "1.0",
+ "manifest_version": 2,
+ "app": {
+ "background": {
+ "scripts": ["doesnt_exist.js"]
+ }
+ },
+ "permissions": ["<all_urls>"]
+}
diff --git a/chrome/test/data/extensions/permissions/platform_app_hosts.json b/chrome/test/data/extensions/permissions/platform_app_hosts.json
new file mode 100644
index 0000000..1b08d3b
--- /dev/null
+++ b/chrome/test/data/extensions/permissions/platform_app_hosts.json
@@ -0,0 +1,11 @@
+{
+ "name": "Platform app hosts",
+ "version": "1.0",
+ "manifest_version": 2,
+ "app": {
+ "background": {
+ "scripts": ["doesnt_exist.js"]
+ }
+ },
+ "permissions": ["http://google.com/"]
+}