| 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 |