1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/history/core/browser/url_row.h" 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <algorithm> 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace history { 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 11116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLRow::URLRow() { 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Initialize(); 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLRow::URLRow(const GURL& url) : url_(url) { 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Initialize will not set the URL, so our initialization above will stay. 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Initialize(); 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 20116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLRow::URLRow(const GURL& url, URLID id) : url_(url) { 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Initialize will not set the URL, so our initialization above will stay. 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Initialize(); 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Initialize will zero the id_, so set it here. 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch id_ = id; 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 27116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLRow::~URLRow() { 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 30116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLRow& URLRow::operator=(const URLRow& other) { 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch id_ = other.id_; 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch url_ = other.url_; 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch title_ = other.title_; 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch visit_count_ = other.visit_count_; 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch typed_count_ = other.typed_count_; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch last_visit_ = other.last_visit_; 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch hidden_ = other.hidden_; 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return *this; 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid URLRow::Swap(URLRow* other) { 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::swap(id_, other->id_); 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch url_.Swap(&other->url_); 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch title_.swap(other->title_); 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::swap(visit_count_, other->visit_count_); 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::swap(typed_count_, other->typed_count_); 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::swap(last_visit_, other->last_visit_); 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::swap(hidden_, other->hidden_); 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid URLRow::Initialize() { 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch id_ = 0; 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch visit_count_ = 0; 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch typed_count_ = 0; 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch last_visit_ = base::Time(); 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch hidden_ = false; 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 60116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLResult::URLResult() 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : blocked_visit_(false) { 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 64116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLResult::URLResult(const GURL& url, base::Time visit_time) 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : URLRow(url), 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch visit_time_(visit_time), 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch blocked_visit_(false) { 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 70116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLResult::URLResult(const GURL& url, 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const query_parser::Snippet::MatchPositions& title_matches) 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : URLRow(url) { 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch title_match_positions_ = title_matches; 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 75116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLResult::URLResult(const URLRow& url_row) 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : URLRow(url_row), 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch blocked_visit_(false) { 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 80116680a4aac90f2aa7413d9095a592090648e557Ben MurdochURLResult::~URLResult() { 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid URLResult::SwapResult(URLResult* other) { 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch URLRow::Swap(other); 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::swap(visit_time_, other->visit_time_); 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch snippet_.Swap(&other->snippet_); 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch title_match_positions_.swap(other->title_match_positions_); 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::swap(blocked_visit_, other->blocked_visit_); 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// static 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool URLResult::CompareVisitTime(const URLResult& lhs, const URLResult& rhs) { 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return lhs.visit_time() > rhs.visit_time(); 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace history 97