| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/android/history_report/delta_file_commons.h" | 5 #include "chrome/browser/android/history_report/delta_file_commons.h" |
| 6 | 6 |
| 7 #include <stddef.h> |
| 8 |
| 7 #include <iomanip> | 9 #include <iomanip> |
| 8 | 10 |
| 9 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
| 11 #include "crypto/sha2.h" | 13 #include "crypto/sha2.h" |
| 12 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 14 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
| 13 | 15 |
| 14 using bookmarks::BookmarkModel; | 16 using bookmarks::BookmarkModel; |
| 15 using net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES; | 17 using net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES; |
| 16 using net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES; | 18 using net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 45 | 47 |
| 46 namespace history_report { | 48 namespace history_report { |
| 47 | 49 |
| 48 DeltaFileEntryWithData::DeltaFileEntryWithData(DeltaFileEntry entry) | 50 DeltaFileEntryWithData::DeltaFileEntryWithData(DeltaFileEntry entry) |
| 49 : entry_(entry), | 51 : entry_(entry), |
| 50 data_set_(false), | 52 data_set_(false), |
| 51 is_bookmark_(false) {} | 53 is_bookmark_(false) {} |
| 52 | 54 |
| 53 DeltaFileEntryWithData::~DeltaFileEntryWithData() {} | 55 DeltaFileEntryWithData::~DeltaFileEntryWithData() {} |
| 54 | 56 |
| 55 int64 DeltaFileEntryWithData::SeqNo() const { | 57 int64_t DeltaFileEntryWithData::SeqNo() const { |
| 56 return entry_.seq_no(); | 58 return entry_.seq_no(); |
| 57 } | 59 } |
| 58 | 60 |
| 59 std::string DeltaFileEntryWithData::Type() const { | 61 std::string DeltaFileEntryWithData::Type() const { |
| 60 // If deletion entry has data then it's not a real deletion entry | 62 // If deletion entry has data then it's not a real deletion entry |
| 61 // but an update entry. Real deletion entry never has data. | 63 // but an update entry. Real deletion entry never has data. |
| 62 if (data_set_) return "add"; | 64 if (data_set_) return "add"; |
| 63 return entry_.type(); | 65 return entry_.type(); |
| 64 } | 66 } |
| 65 | 67 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 79 if (IsValidId(url)) { | 81 if (IsValidId(url)) { |
| 80 return url; | 82 return url; |
| 81 } | 83 } |
| 82 | 84 |
| 83 std::stringstream id; | 85 std::stringstream id; |
| 84 | 86 |
| 85 // 1. Zero-padded URL length to width |kUrlLengthWidth|. | 87 // 1. Zero-padded URL length to width |kUrlLengthWidth|. |
| 86 id << std::setfill('0') << std::setw(kUrlLengthWidth) << url.size(); | 88 id << std::setfill('0') << std::setw(kUrlLengthWidth) << url.size(); |
| 87 | 89 |
| 88 // 2. SHA-256 of URL. | 90 // 2. SHA-256 of URL. |
| 89 uint8 hash[kSHA256ByteSize]; | 91 uint8_t hash[kSHA256ByteSize]; |
| 90 crypto::SHA256HashString(url, hash, sizeof(hash)); | 92 crypto::SHA256HashString(url, hash, sizeof(hash)); |
| 91 id << base::HexEncode(hash, sizeof(hash)); | 93 id << base::HexEncode(hash, sizeof(hash)); |
| 92 | 94 |
| 93 // 3. Prefix of URL to fill rest of the space. | 95 // 3. Prefix of URL to fill rest of the space. |
| 94 id << url.substr(0, kIdLengthLimit - 2 * kSHA256ByteSize - kUrlLengthWidth); | 96 id << url.substr(0, kIdLengthLimit - 2 * kSHA256ByteSize - kUrlLengthWidth); |
| 95 | 97 |
| 96 return id.str(); | 98 return id.str(); |
| 97 } | 99 } |
| 98 | 100 |
| 99 // ID which identifies URL of this entry. | 101 // ID which identifies URL of this entry. |
| 100 std::string DeltaFileEntryWithData::Id() const { | 102 std::string DeltaFileEntryWithData::Id() const { |
| 101 return UrlToId(entry_.url()); | 103 return UrlToId(entry_.url()); |
| 102 } | 104 } |
| 103 | 105 |
| 104 std::string DeltaFileEntryWithData::Url() const { | 106 std::string DeltaFileEntryWithData::Url() const { |
| 105 return entry_.url(); | 107 return entry_.url(); |
| 106 } | 108 } |
| 107 | 109 |
| 108 base::string16 DeltaFileEntryWithData::Title() const { | 110 base::string16 DeltaFileEntryWithData::Title() const { |
| 109 if (!Valid()) return base::UTF8ToUTF16(""); | 111 if (!Valid()) return base::UTF8ToUTF16(""); |
| 110 if (is_bookmark_ && !bookmark_title_.empty()) return bookmark_title_; | 112 if (is_bookmark_ && !bookmark_title_.empty()) return bookmark_title_; |
| 111 if (data_.title().empty()) return base::UTF8ToUTF16(data_.url().host()); | 113 if (data_.title().empty()) return base::UTF8ToUTF16(data_.url().host()); |
| 112 return data_.title(); | 114 return data_.title(); |
| 113 } | 115 } |
| 114 | 116 |
| 115 int32 DeltaFileEntryWithData::Score() const { | 117 int32_t DeltaFileEntryWithData::Score() const { |
| 116 if (!Valid()) return 0; | 118 if (!Valid()) return 0; |
| 117 int32 score = data_.visit_count() + data_.typed_count(); | 119 int32_t score = data_.visit_count() + data_.typed_count(); |
| 118 if (is_bookmark_) score = (score + 1) * kBookmarkScoreBonusMultiplier; | 120 if (is_bookmark_) score = (score + 1) * kBookmarkScoreBonusMultiplier; |
| 119 return score; | 121 return score; |
| 120 } | 122 } |
| 121 | 123 |
| 122 std::string DeltaFileEntryWithData::IndexedUrl() const { | 124 std::string DeltaFileEntryWithData::IndexedUrl() const { |
| 123 if (!Valid()) return ""; | 125 if (!Valid()) return ""; |
| 124 std::string indexed_url = data_.url().host(); | 126 std::string indexed_url = data_.url().host(); |
| 125 StripTopLevelDomain(&indexed_url); | 127 StripTopLevelDomain(&indexed_url); |
| 126 StripCommonSubDomains(&indexed_url); | 128 StripCommonSubDomains(&indexed_url); |
| 127 return indexed_url; | 129 return indexed_url; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 142 is_bookmark_ = true; | 144 is_bookmark_ = true; |
| 143 bookmark_title_ = bookmark.title; | 145 bookmark_title_ = bookmark.title; |
| 144 } | 146 } |
| 145 | 147 |
| 146 // static | 148 // static |
| 147 bool DeltaFileEntryWithData::IsValidId(const std::string& url) { | 149 bool DeltaFileEntryWithData::IsValidId(const std::string& url) { |
| 148 return url.size() <= kIdLengthLimit; | 150 return url.size() <= kIdLengthLimit; |
| 149 } | 151 } |
| 150 | 152 |
| 151 } // namespace history_report | 153 } // namespace history_report |
| OLD | NEW |