Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / net / ftp / ftp_auth_cache.cc
blob370cee57379a3e00fc591c47b30523bec95abfc7
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "net/ftp/ftp_auth_cache.h"
7 #include "base/logging.h"
8 #include "url/gurl.h"
10 namespace net {
12 // static
13 const size_t FtpAuthCache::kMaxEntries = 10;
15 FtpAuthCache::Entry::Entry(const GURL& origin,
16 const AuthCredentials& credentials)
17 : origin(origin),
18 credentials(credentials) {
21 FtpAuthCache::Entry::~Entry() {}
23 FtpAuthCache::FtpAuthCache() {}
25 FtpAuthCache::~FtpAuthCache() {}
27 FtpAuthCache::Entry* FtpAuthCache::Lookup(const GURL& origin) {
28 for (EntryList::iterator it = entries_.begin(); it != entries_.end(); ++it) {
29 if (it->origin == origin)
30 return &(*it);
32 return NULL;
35 void FtpAuthCache::Add(const GURL& origin, const AuthCredentials& credentials) {
36 DCHECK(origin.SchemeIs("ftp"));
37 DCHECK_EQ(origin.GetOrigin(), origin);
39 Entry* entry = Lookup(origin);
40 if (entry) {
41 entry->credentials = credentials;
42 } else {
43 entries_.push_front(Entry(origin, credentials));
45 // Prevent unbound memory growth of the cache.
46 if (entries_.size() > kMaxEntries)
47 entries_.pop_back();
51 void FtpAuthCache::Remove(const GURL& origin,
52 const AuthCredentials& credentials) {
53 for (EntryList::iterator it = entries_.begin(); it != entries_.end(); ++it) {
54 if (it->origin == origin && it->credentials.Equals(credentials)) {
55 entries_.erase(it);
56 DCHECK(!Lookup(origin));
57 return;
62 } // namespace net