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

Side by Side Diff: net/http/http_auth_cache.cc

Issue 3040016: Net: Convert username and password to string16. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: address comments Created 10 years, 4 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
« no previous file with comments | « net/http/http_auth_cache.h ('k') | net/http/http_auth_cache_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "net/http/http_auth_cache.h" 5 #include "net/http/http_auth_cache.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 9
10 namespace { 10 namespace {
(...skipping 30 matching lines...) Expand all
41 41
42 // Debug helper to check that |origin| arguments are properly formed. 42 // Debug helper to check that |origin| arguments are properly formed.
43 void CheckOriginIsValid(const GURL& origin) { 43 void CheckOriginIsValid(const GURL& origin) {
44 DCHECK(origin.is_valid()); 44 DCHECK(origin.is_valid());
45 DCHECK(origin.SchemeIs("http") || origin.SchemeIs("https")); 45 DCHECK(origin.SchemeIs("http") || origin.SchemeIs("https"));
46 DCHECK(origin.GetOrigin() == origin); 46 DCHECK(origin.GetOrigin() == origin);
47 } 47 }
48 48
49 // Functor used by remove_if. 49 // Functor used by remove_if.
50 struct IsEnclosedBy { 50 struct IsEnclosedBy {
51 IsEnclosedBy(const std::string& path) : path(path) { } 51 explicit IsEnclosedBy(const std::string& path) : path(path) { }
52 bool operator() (const std::string& x) { 52 bool operator() (const std::string& x) {
53 return IsEnclosingPath(path, x); 53 return IsEnclosingPath(path, x);
54 } 54 }
55 const std::string& path; 55 const std::string& path;
56 }; 56 };
57 57
58 } // namespace 58 } // namespace
59 59
60 namespace net { 60 namespace net {
61 61
62 // Performance: O(n), where n is the number of realm entries. 62 // Performance: O(n), where n is the number of realm entries.
63 HttpAuthCache::Entry* HttpAuthCache::Lookup(const GURL& origin, 63 HttpAuthCache::Entry* HttpAuthCache::Lookup(const GURL& origin,
64 const std::string& realm, 64 const std::string& realm,
65 const std::string& scheme) { 65 const std::string& scheme) {
66 CheckOriginIsValid(origin); 66 CheckOriginIsValid(origin);
67 67
68 // Linear scan through the realm entries. 68 // Linear scan through the realm entries.
69 for (EntryList::iterator it = entries_.begin(); it != entries_.end(); ++it) { 69 for (EntryList::iterator it = entries_.begin(); it != entries_.end(); ++it) {
70 if (it->origin() == origin && it->realm() == realm && 70 if (it->origin() == origin && it->realm() == realm &&
71 it->scheme() == scheme) 71 it->scheme() == scheme)
72 return &(*it); 72 return &(*it);
73 } 73 }
74 return NULL; // No realm entry found. 74 return NULL; // No realm entry found.
75 } 75 }
76 76
77 // Performance: O(n*m), where n is the number of realm entries, m is the number 77 // Performance: O(n*m), where n is the number of realm entries, m is the number
78 // of path entries per realm. Both n amd m are expected to be small; m is 78 // of path entries per realm. Both n amd m are expected to be small; m is
79 // kept small because AddPath() only keeps the shallowest entry. 79 // kept small because AddPath() only keeps the shallowest entry.
80 HttpAuthCache::Entry* HttpAuthCache::LookupByPath(const GURL& origin, 80 HttpAuthCache::Entry* HttpAuthCache::LookupByPath(const GURL& origin,
81 const std::string& path) { 81 const std::string& path) {
82 CheckOriginIsValid(origin); 82 CheckOriginIsValid(origin);
83 CheckPathIsValid(path); 83 CheckPathIsValid(path);
84 84
85 // RFC 2617 section 2: 85 // RFC 2617 section 2:
86 // A client SHOULD assume that all paths at or deeper than the depth of 86 // A client SHOULD assume that all paths at or deeper than the depth of
87 // the last symbolic element in the path field of the Request-URI also are 87 // the last symbolic element in the path field of the Request-URI also are
88 // within the protection space ... 88 // within the protection space ...
89 std::string parent_dir = GetParentDirectory(path); 89 std::string parent_dir = GetParentDirectory(path);
90 90
91 // Linear scan through the realm entries. 91 // Linear scan through the realm entries.
92 for (EntryList::iterator it = entries_.begin(); it != entries_.end(); ++it) { 92 for (EntryList::iterator it = entries_.begin(); it != entries_.end(); ++it) {
93 if (it->origin() == origin && it->HasEnclosingPath(parent_dir)) 93 if (it->origin() == origin && it->HasEnclosingPath(parent_dir))
94 return &(*it); 94 return &(*it);
95 } 95 }
96 return NULL; // No entry found. 96 return NULL; // No entry found.
97 } 97 }
98 98
99 HttpAuthCache::Entry* HttpAuthCache::Add(const GURL& origin, 99 HttpAuthCache::Entry* HttpAuthCache::Add(const GURL& origin,
100 const std::string& realm, 100 const std::string& realm,
101 const std::string& scheme, 101 const std::string& scheme,
102 const std::string& auth_challenge, 102 const std::string& auth_challenge,
103 const std::wstring& username, 103 const string16& username,
104 const std::wstring& password, 104 const string16& password,
105 const std::string& path) { 105 const std::string& path) {
106 CheckOriginIsValid(origin); 106 CheckOriginIsValid(origin);
107 CheckPathIsValid(path); 107 CheckPathIsValid(path);
108 108
109 // Check for existing entry (we will re-use it if present). 109 // Check for existing entry (we will re-use it if present).
110 HttpAuthCache::Entry* entry = Lookup(origin, realm, scheme); 110 HttpAuthCache::Entry* entry = Lookup(origin, realm, scheme);
111 if (!entry) { 111 if (!entry) {
112 // Failsafe to prevent unbounded memory growth of the cache. 112 // Failsafe to prevent unbounded memory growth of the cache.
113 if (entries_.size() >= kMaxNumRealmEntries) { 113 if (entries_.size() >= kMaxNumRealmEntries) {
114 LOG(WARNING) << "Num auth cache entries reached limit -- evicting"; 114 LOG(WARNING) << "Num auth cache entries reached limit -- evicting";
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 ++it) { 158 ++it) {
159 if (IsEnclosingPath(*it, dir)) 159 if (IsEnclosingPath(*it, dir))
160 return true; 160 return true;
161 } 161 }
162 return false; 162 return false;
163 } 163 }
164 164
165 bool HttpAuthCache::Remove(const GURL& origin, 165 bool HttpAuthCache::Remove(const GURL& origin,
166 const std::string& realm, 166 const std::string& realm,
167 const std::string& scheme, 167 const std::string& scheme,
168 const std::wstring& username, 168 const string16& username,
169 const std::wstring& password) { 169 const string16& password) {
170 for (EntryList::iterator it = entries_.begin(); it != entries_.end(); ++it) { 170 for (EntryList::iterator it = entries_.begin(); it != entries_.end(); ++it) {
171 if (it->origin() == origin && it->realm() == realm && 171 if (it->origin() == origin && it->realm() == realm &&
172 it->scheme() == scheme) { 172 it->scheme() == scheme) {
173 if (username == it->username() && password == it->password()) { 173 if (username == it->username() && password == it->password()) {
174 entries_.erase(it); 174 entries_.erase(it);
175 return true; 175 return true;
176 } 176 }
177 return false; 177 return false;
178 } 178 }
179 } 179 }
180 return false; 180 return false;
181 } 181 }
182 182
183 } // namespace net 183 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_auth_cache.h ('k') | net/http/http_auth_cache_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698