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