diff options
author | mihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-02 20:17:09 +0000 |
---|---|---|
committer | mihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-02 20:17:09 +0000 |
commit | bebe1d02eb8b14a6e7db2cce1a6d13f556a5390f (patch) | |
tree | acfdaa59f2475940035767d3fd4af4bd037bfebb /chrome | |
parent | 3b174e0dfd07d720e5a6cfaa46333c28b47fff62 (diff) | |
download | chromium_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')
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/"] +} |