| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/visitedlink/visitedlink_master.h" | 5 #include "chrome/browser/visitedlink/visitedlink_master.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <windows.h> | 8 #include <windows.h> |
| 9 #include <io.h> | 9 #include <io.h> |
| 10 #include <shlobj.h> | 10 #include <shlobj.h> |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 TableBuilder(VisitedLinkMaster* master, | 140 TableBuilder(VisitedLinkMaster* master, |
| 141 const uint8 salt[LINK_SALT_LENGTH]); | 141 const uint8 salt[LINK_SALT_LENGTH]); |
| 142 | 142 |
| 143 // Called on the main thread when the master is being destroyed. This will | 143 // Called on the main thread when the master is being destroyed. This will |
| 144 // prevent a crash when the query completes and the master is no longer | 144 // prevent a crash when the query completes and the master is no longer |
| 145 // around. We can not actually do anything but mark this fact, since the | 145 // around. We can not actually do anything but mark this fact, since the |
| 146 // table will be being rebuilt simultaneously on the other thread. | 146 // table will be being rebuilt simultaneously on the other thread. |
| 147 void DisownMaster(); | 147 void DisownMaster(); |
| 148 | 148 |
| 149 // HistoryService::URLEnumerator | 149 // HistoryService::URLEnumerator |
| 150 virtual void OnURL(const GURL& url); | 150 virtual void OnURL(const history::URLRow& url_row); |
| 151 virtual void OnComplete(bool succeed); | 151 virtual void OnComplete(bool succeed); |
| 152 | 152 |
| 153 private: | 153 private: |
| 154 friend class base::RefCountedThreadSafe<TableBuilder>; | 154 friend class base::RefCountedThreadSafe<TableBuilder>; |
| 155 | 155 |
| 156 ~TableBuilder() {} | 156 ~TableBuilder() {} |
| 157 | 157 |
| 158 // OnComplete mashals to this function on the main thread to do the | 158 // OnComplete mashals to this function on the main thread to do the |
| 159 // notification. | 159 // notification. |
| 160 void OnCompleteMainThread(); | 160 void OnCompleteMainThread(); |
| (...skipping 785 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 946 fingerprints_.reserve(4096); | 946 fingerprints_.reserve(4096); |
| 947 memcpy(salt_, salt, LINK_SALT_LENGTH * sizeof(uint8)); | 947 memcpy(salt_, salt, LINK_SALT_LENGTH * sizeof(uint8)); |
| 948 } | 948 } |
| 949 | 949 |
| 950 // TODO(brettw): Do we want to try to cancel the request if this happens? It | 950 // TODO(brettw): Do we want to try to cancel the request if this happens? It |
| 951 // could delay shutdown if there are a lot of URLs. | 951 // could delay shutdown if there are a lot of URLs. |
| 952 void VisitedLinkMaster::TableBuilder::DisownMaster() { | 952 void VisitedLinkMaster::TableBuilder::DisownMaster() { |
| 953 master_ = NULL; | 953 master_ = NULL; |
| 954 } | 954 } |
| 955 | 955 |
| 956 void VisitedLinkMaster::TableBuilder::OnURL(const GURL& url) { | 956 void VisitedLinkMaster::TableBuilder::OnURL(const history::URLRow& url_row) { |
| 957 const GURL& url((url_row.url())); |
| 957 if (!url.is_empty()) { | 958 if (!url.is_empty()) { |
| 958 fingerprints_.push_back(VisitedLinkMaster::ComputeURLFingerprint( | 959 fingerprints_.push_back(VisitedLinkMaster::ComputeURLFingerprint( |
| 959 url.spec().data(), url.spec().length(), salt_)); | 960 url.spec().data(), url.spec().length(), salt_)); |
| 960 } | 961 } |
| 961 } | 962 } |
| 962 | 963 |
| 963 void VisitedLinkMaster::TableBuilder::OnComplete(bool success) { | 964 void VisitedLinkMaster::TableBuilder::OnComplete(bool success) { |
| 964 success_ = success; | 965 success_ = success; |
| 965 DLOG_IF(WARNING, !success) << "Unable to rebuild visited links"; | 966 DLOG_IF(WARNING, !success) << "Unable to rebuild visited links"; |
| 966 | 967 |
| 967 // Marshal to the main thread to notify the VisitedLinkMaster that the | 968 // Marshal to the main thread to notify the VisitedLinkMaster that the |
| 968 // rebuild is complete. | 969 // rebuild is complete. |
| 969 BrowserThread::PostTask( | 970 BrowserThread::PostTask( |
| 970 BrowserThread::UI, FROM_HERE, | 971 BrowserThread::UI, FROM_HERE, |
| 971 base::Bind(&TableBuilder::OnCompleteMainThread, this)); | 972 base::Bind(&TableBuilder::OnCompleteMainThread, this)); |
| 972 } | 973 } |
| 973 | 974 |
| 974 void VisitedLinkMaster::TableBuilder::OnCompleteMainThread() { | 975 void VisitedLinkMaster::TableBuilder::OnCompleteMainThread() { |
| 975 if (master_) | 976 if (master_) |
| 976 master_->OnTableRebuildComplete(success_, fingerprints_); | 977 master_->OnTableRebuildComplete(success_, fingerprints_); |
| 977 | 978 |
| 978 // WILL (generally) DELETE THIS! This balances the AddRef in | 979 // WILL (generally) DELETE THIS! This balances the AddRef in |
| 979 // VisitedLinkMaster::RebuildTableFromHistory. | 980 // VisitedLinkMaster::RebuildTableFromHistory. |
| 980 Release(); | 981 Release(); |
| 981 } | 982 } |
| OLD | NEW |