// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <set>
#include "chrome/browser/webdata/autofill_entry.h"
#include "base/utf_string_conversions.h"
AutofillKey::AutofillKey() {}
AutofillKey::AutofillKey(const string16& name, const string16& value)
: name_(name),
value_(value) {
}
AutofillKey::AutofillKey(const char* name, const char* value)
: name_(UTF8ToUTF16(name)),
value_(UTF8ToUTF16(value)) {
}
AutofillKey::AutofillKey(const AutofillKey& key)
: name_(key.name()),
value_(key.value()) {
}
AutofillKey::~AutofillKey() {}
bool AutofillKey::operator==(const AutofillKey& key) const {
return name_ == key.name() && value_ == key.value();
}
bool AutofillKey::operator<(const AutofillKey& key) const {
int diff = name_.compare(key.name());
if (diff < 0) {
return true;
} else if (diff == 0) {
return value_.compare(key.value()) < 0;
} else {
return false;
}
}
AutofillEntry::AutofillEntry(const AutofillKey& key,
const std::vector<base::Time>& timestamps)
: key_(key),
timestamps_(timestamps) {
}
AutofillEntry::~AutofillEntry() {}
bool AutofillEntry::operator==(const AutofillEntry& entry) const {
if (!(key_ == entry.key()))
return false;
if (timestamps_.size() != entry.timestamps().size())
return false;
std::set<base::Time> other_timestamps(entry.timestamps().begin(),
entry.timestamps().end());
for (size_t i = 0; i < timestamps_.size(); i++) {
if (other_timestamps.count(timestamps_[i]) == 0)
return false;
}
return true;
}
bool AutofillEntry::operator<(const AutofillEntry& entry) const {
return key_ < entry.key();
}