OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/common/extensions/permissions/socket_permission_data.h" | 5 #include "extensions/common/permissions/socket_permission_data.h" |
6 | 6 |
7 #include <cstdlib> | 7 #include <cstdlib> |
8 #include <sstream> | 8 #include <sstream> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
13 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
14 #include "base/strings/string_split.h" | 14 #include "base/strings/string_split.h" |
15 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
16 #include "chrome/common/extensions/permissions/socket_permission.h" | |
17 #include "extensions/common/permissions/api_permission.h" | 16 #include "extensions/common/permissions/api_permission.h" |
| 17 #include "extensions/common/permissions/socket_permission.h" |
18 #include "url/url_canon.h" | 18 #include "url/url_canon.h" |
19 | 19 |
20 namespace { | 20 namespace { |
21 | 21 |
22 using content::SocketPermissionRequest; | 22 using content::SocketPermissionRequest; |
23 using extensions::SocketPermissionData; | 23 using extensions::SocketPermissionData; |
24 | 24 |
25 const char kColon = ':'; | 25 const char kColon = ':'; |
26 const char kInvalid[] = "invalid"; | 26 const char kInvalid[] = "invalid"; |
27 const char kTCPConnect[] = "tcp-connect"; | 27 const char kTCPConnect[] = "tcp-connect"; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 return kNetworkState; | 73 return kNetworkState; |
74 default: | 74 default: |
75 return kInvalid; | 75 return kInvalid; |
76 } | 76 } |
77 } | 77 } |
78 | 78 |
79 } // namespace | 79 } // namespace |
80 | 80 |
81 namespace extensions { | 81 namespace extensions { |
82 | 82 |
83 SocketPermissionData::SocketPermissionData() { } | 83 SocketPermissionData::SocketPermissionData() {} |
84 | 84 |
85 SocketPermissionData::~SocketPermissionData() { } | 85 SocketPermissionData::~SocketPermissionData() {} |
86 | 86 |
87 bool SocketPermissionData::operator<(const SocketPermissionData& rhs) const { | 87 bool SocketPermissionData::operator<(const SocketPermissionData& rhs) const { |
88 return entry_ < rhs.entry_; | 88 return entry_ < rhs.entry_; |
89 } | 89 } |
90 | 90 |
91 bool SocketPermissionData::operator==(const SocketPermissionData& rhs) const { | 91 bool SocketPermissionData::operator==(const SocketPermissionData& rhs) const { |
92 return entry_ == rhs.entry_; | 92 return entry_ == rhs.entry_; |
93 } | 93 } |
94 | 94 |
95 bool SocketPermissionData::Check( | 95 bool SocketPermissionData::Check(const APIPermission::CheckParam* param) const { |
96 const APIPermission::CheckParam* param) const { | |
97 if (!param) | 96 if (!param) |
98 return false; | 97 return false; |
99 const SocketPermission::CheckParam& specific_param = | 98 const SocketPermission::CheckParam& specific_param = |
100 *static_cast<const SocketPermission::CheckParam*>(param); | 99 *static_cast<const SocketPermission::CheckParam*>(param); |
101 const SocketPermissionRequest &request = specific_param.request; | 100 const SocketPermissionRequest& request = specific_param.request; |
102 | 101 |
103 return entry_.Check(request); | 102 return entry_.Check(request); |
104 } | 103 } |
105 | 104 |
106 scoped_ptr<base::Value> SocketPermissionData::ToValue() const { | 105 scoped_ptr<base::Value> SocketPermissionData::ToValue() const { |
107 return scoped_ptr<base::Value>(new base::StringValue(GetAsString())); | 106 return scoped_ptr<base::Value>(new base::StringValue(GetAsString())); |
108 } | 107 } |
109 | 108 |
110 bool SocketPermissionData::FromValue(const base::Value* value) { | 109 bool SocketPermissionData::FromValue(const base::Value* value) { |
111 std::string spec; | 110 std::string spec; |
112 if (!value->GetAsString(&spec)) | 111 if (!value->GetAsString(&spec)) |
113 return false; | 112 return false; |
114 | 113 |
115 return Parse(spec); | 114 return Parse(spec); |
116 } | 115 } |
117 | 116 |
118 SocketPermissionEntry& SocketPermissionData::entry() { | 117 SocketPermissionEntry& SocketPermissionData::entry() { |
119 // Clear the spec because the caller could mutate |this|. | 118 // Clear the spec because the caller could mutate |this|. |
120 spec_.clear(); | 119 spec_.clear(); |
121 return entry_; | 120 return entry_; |
122 } | 121 } |
123 | 122 |
124 // TODO(ikarienator): Rewrite this method to support IPv6. | 123 // TODO(ikarienator): Rewrite this method to support IPv6. |
125 bool SocketPermissionData::Parse(const std::string& permission) { | 124 bool SocketPermissionData::Parse(const std::string& permission) { |
126 Reset(); | 125 Reset(); |
127 | 126 |
128 std::vector<std::string> tokens; | 127 std::vector<std::string> tokens; |
129 base::SplitStringDontTrim(permission, kColon, &tokens); | 128 base::SplitStringDontTrim(permission, kColon, &tokens); |
130 if (tokens.empty()) | 129 if (tokens.empty()) |
(...skipping 19 matching lines...) Expand all Loading... |
150 } | 149 } |
151 return spec_; | 150 return spec_; |
152 } | 151 } |
153 | 152 |
154 void SocketPermissionData::Reset() { | 153 void SocketPermissionData::Reset() { |
155 entry_ = SocketPermissionEntry(); | 154 entry_ = SocketPermissionEntry(); |
156 spec_.clear(); | 155 spec_.clear(); |
157 } | 156 } |
158 | 157 |
159 } // namespace extensions | 158 } // namespace extensions |
OLD | NEW |