Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Unified Diff: extensions/common/permissions/socket_permission.cc

Issue 794063002: Removed duplicate code from Socket permission messages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permissions_patch_2
Patch Set: Test namespace fix Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/common/api/sockets/sockets_manifest_permission_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/common/permissions/socket_permission.cc
diff --git a/extensions/common/permissions/socket_permission.cc b/extensions/common/permissions/socket_permission.cc
index f457248e0007504d4c7b0e78f9b9e3be263a3d60..e5fac9d5626de0aaa211fee75918be09ef862029 100644
--- a/extensions/common/permissions/socket_permission.cc
+++ b/extensions/common/permissions/socket_permission.cc
@@ -9,6 +9,7 @@
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/strings/utf_string_conversions.h"
+#include "extensions/common/api/sockets/sockets_manifest_permission.h"
#include "extensions/common/permissions/permissions_info.h"
#include "extensions/common/permissions/set_disjunction_permission.h"
#include "grit/extensions_strings.h"
@@ -16,115 +17,40 @@
namespace extensions {
+namespace {
+
+// Extracts the SocketPermissionEntry fields from a set of SocketPermissionData,
+// and places them in their own set. Useful for converting the
+// std::set<SocketPermissionEntry> field from SocketPermission into a parameter
+// that can be passed to SocketsManifestPermission::AddSocketHostPermissions().
+SocketPermissionEntrySet ExtractSocketEntries(
+ const std::set<SocketPermissionData>& data_set) {
+ SocketPermissionEntrySet entries;
+ for (const auto& data : data_set)
+ entries.insert(data.entry());
+ return entries;
+}
+
+} // namespace
+
SocketPermission::SocketPermission(const APIPermissionInfo* info)
: SetDisjunctionPermission<SocketPermissionData, SocketPermission>(info) {}
SocketPermission::~SocketPermission() {}
PermissionIDSet SocketPermission::GetPermissions() const {
- PermissionMessages messages;
PermissionIDSet ids;
- AddAllHostMessages(messages, ids);
+ SocketPermissionEntrySet entries = ExtractSocketEntries(data_set_);
+ SocketsManifestPermission::AddSocketHostPermissions(entries, &ids, NULL);
return ids;
}
PermissionMessages SocketPermission::GetMessages() const {
DCHECK(HasMessages());
PermissionMessages messages;
- PermissionIDSet ids;
- AddAllHostMessages(messages, ids);
+ SocketPermissionEntrySet entries = ExtractSocketEntries(data_set_);
+ SocketsManifestPermission::AddSocketHostPermissions(entries, NULL, &messages);
return messages;
}
-void SocketPermission::AddAllHostMessages(PermissionMessages& messages,
- PermissionIDSet& ids) const {
- // TODO(rpaquay): This function and callees is (almost) a copy/paste from
- // extensions::SocketsManifestPermission.
- if (!AddAnyHostMessage(messages, ids)) {
- AddSpecificHostMessage(messages, ids);
- AddSubdomainHostMessage(messages, ids);
- }
- AddNetworkListMessage(messages, ids);
-}
-
-bool SocketPermission::AddAnyHostMessage(PermissionMessages& messages,
- PermissionIDSet& ids) const {
- std::set<SocketPermissionData>::const_iterator i;
- for (i = data_set_.begin(); i != data_set_.end(); ++i) {
- if (i->entry().IsAddressBoundType() &&
- i->entry().GetHostType() == SocketPermissionEntry::ANY_HOST) {
- messages.push_back(
- PermissionMessage(PermissionMessage::kSocketAnyHost,
- l10n_util::GetStringUTF16(
- IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST)));
- ids.insert(APIPermission::kSocketAnyHost);
- return true;
- }
- }
- return false;
-}
-
-void SocketPermission::AddSubdomainHostMessage(PermissionMessages& messages,
- PermissionIDSet& ids) const {
- std::set<base::string16> domains;
- std::set<SocketPermissionData>::const_iterator i;
- for (i = data_set_.begin(); i != data_set_.end(); ++i) {
- if (i->entry().GetHostType() == SocketPermissionEntry::HOSTS_IN_DOMAINS)
- domains.insert(base::UTF8ToUTF16(i->entry().pattern().host));
- }
- if (!domains.empty()) {
- int id = (domains.size() == 1)
- ? IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN
- : IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS;
- messages.push_back(PermissionMessage(
- PermissionMessage::kSocketDomainHosts,
- l10n_util::GetStringFUTF16(
- id,
- JoinString(
- std::vector<base::string16>(domains.begin(), domains.end()),
- ' '))));
- for (const auto& domain : domains)
- ids.insert(APIPermission::kSocketDomainHosts, domain);
- }
-}
-
-void SocketPermission::AddSpecificHostMessage(PermissionMessages& messages,
- PermissionIDSet& ids) const {
- std::set<base::string16> hostnames;
- std::set<SocketPermissionData>::const_iterator i;
- for (i = data_set_.begin(); i != data_set_.end(); ++i) {
- if (i->entry().GetHostType() == SocketPermissionEntry::SPECIFIC_HOSTS)
- hostnames.insert(base::UTF8ToUTF16(i->entry().pattern().host));
- }
- if (!hostnames.empty()) {
- int id = (hostnames.size() == 1)
- ? IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST
- : IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS;
- messages.push_back(PermissionMessage(
- PermissionMessage::kSocketSpecificHosts,
- l10n_util::GetStringFUTF16(
- id,
- JoinString(
- std::vector<base::string16>(hostnames.begin(), hostnames.end()),
- ' '))));
- for (const auto& hostname : hostnames)
- ids.insert(APIPermission::kSocketSpecificHosts, hostname);
- }
-}
-
-void SocketPermission::AddNetworkListMessage(PermissionMessages& messages,
- PermissionIDSet& ids) const {
- std::set<SocketPermissionData>::const_iterator i;
- for (i = data_set_.begin(); i != data_set_.end(); ++i) {
- if (i->entry().pattern().type ==
- content::SocketPermissionRequest::NETWORK_STATE) {
- messages.push_back(
- PermissionMessage(PermissionMessage::kNetworkState,
- l10n_util::GetStringUTF16(
- IDS_EXTENSION_PROMPT_WARNING_NETWORK_STATE)));
- ids.insert(APIPermission::kNetworkState);
- }
- }
-}
-
} // namespace extensions
« no previous file with comments | « extensions/common/api/sockets/sockets_manifest_permission_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698