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

Side by Side Diff: extensions/common/permissions/socket_permission_data.cc

Issue 201203006: Move basic API permissions code out of //chrome (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move moar things Created 6 years, 9 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « extensions/common/permissions/socket_permission_data.h ('k') | extensions/common/permissions/socket_permission_entry.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698