OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "ios/chrome/browser/ui/webui/history/browsing_history_handler.h" | 5 #include "ios/chrome/browser/ui/webui/history/browsing_history_handler.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 void GetDeviceNameAndType(const ProfileSyncService* sync_service, | 103 void GetDeviceNameAndType(const ProfileSyncService* sync_service, |
104 const std::string& client_id, | 104 const std::string& client_id, |
105 std::string* name, | 105 std::string* name, |
106 std::string* type) { | 106 std::string* type) { |
107 // DeviceInfoTracker must be syncing in order for remote history entries to | 107 // DeviceInfoTracker must be syncing in order for remote history entries to |
108 // be available. | 108 // be available. |
109 DCHECK(sync_service); | 109 DCHECK(sync_service); |
110 DCHECK(sync_service->GetDeviceInfoTracker()); | 110 DCHECK(sync_service->GetDeviceInfoTracker()); |
111 DCHECK(sync_service->GetDeviceInfoTracker()->IsSyncing()); | 111 DCHECK(sync_service->GetDeviceInfoTracker()->IsSyncing()); |
112 | 112 |
113 scoped_ptr<sync_driver::DeviceInfo> device_info = | 113 std::unique_ptr<sync_driver::DeviceInfo> device_info = |
114 sync_service->GetDeviceInfoTracker()->GetDeviceInfo(client_id); | 114 sync_service->GetDeviceInfoTracker()->GetDeviceInfo(client_id); |
115 if (device_info.get()) { | 115 if (device_info.get()) { |
116 *name = device_info->client_name(); | 116 *name = device_info->client_name(); |
117 switch (device_info->device_type()) { | 117 switch (device_info->device_type()) { |
118 case sync_pb::SyncEnums::TYPE_PHONE: | 118 case sync_pb::SyncEnums::TYPE_PHONE: |
119 *type = kDeviceTypePhone; | 119 *type = kDeviceTypePhone; |
120 break; | 120 break; |
121 case sync_pb::SyncEnums::TYPE_TABLET: | 121 case sync_pb::SyncEnums::TYPE_TABLET: |
122 *type = kDeviceTypeTablet; | 122 *type = kDeviceTypeTablet; |
123 break; | 123 break; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 // left to right strings. | 175 // left to right strings. |
176 if (base::i18n::IsRTL()) { | 176 if (base::i18n::IsRTL()) { |
177 if (using_url_as_the_title) | 177 if (using_url_as_the_title) |
178 base::i18n::WrapStringWithLTRFormatting(&title_to_set); | 178 base::i18n::WrapStringWithLTRFormatting(&title_to_set); |
179 else | 179 else |
180 base::i18n::AdjustStringForLocaleDirection(&title_to_set); | 180 base::i18n::AdjustStringForLocaleDirection(&title_to_set); |
181 } | 181 } |
182 result->SetString("title", title_to_set); | 182 result->SetString("title", title_to_set); |
183 } | 183 } |
184 | 184 |
185 scoped_ptr<base::DictionaryValue> BrowsingHistoryHandler::HistoryEntry::ToValue( | 185 std::unique_ptr<base::DictionaryValue> |
| 186 BrowsingHistoryHandler::HistoryEntry::ToValue( |
186 BookmarkModel* bookmark_model, | 187 BookmarkModel* bookmark_model, |
187 SupervisedUserService* supervised_user_service, | 188 SupervisedUserService* supervised_user_service, |
188 const ProfileSyncService* sync_service) const { | 189 const ProfileSyncService* sync_service) const { |
189 scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue()); | 190 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); |
190 SetUrlAndTitle(result.get()); | 191 SetUrlAndTitle(result.get()); |
191 | 192 |
192 base::string16 domain = url_formatter::IDNToUnicode(url.host()); | 193 base::string16 domain = url_formatter::IDNToUnicode(url.host()); |
193 // When the domain is empty, use the scheme instead. This allows for a | 194 // When the domain is empty, use the scheme instead. This allows for a |
194 // sensible treatment of e.g. file: URLs when group by domain is on. | 195 // sensible treatment of e.g. file: URLs when group by domain is on. |
195 if (domain.empty()) | 196 if (domain.empty()) |
196 domain = base::UTF8ToUTF16(url.scheme() + ":"); | 197 domain = base::UTF8ToUTF16(url.scheme() + ":"); |
197 | 198 |
198 // The items which are to be written into result are also described in | 199 // The items which are to be written into result are also described in |
199 // chrome/browser/resources/history/history.js in @typedef for | 200 // chrome/browser/resources/history/history.js in @typedef for |
200 // HistoryEntry. Please update it whenever you add or remove | 201 // HistoryEntry. Please update it whenever you add or remove |
201 // any keys in result. | 202 // any keys in result. |
202 result->SetString("domain", domain); | 203 result->SetString("domain", domain); |
203 result->SetDouble("time", time.ToJsTime()); | 204 result->SetDouble("time", time.ToJsTime()); |
204 | 205 |
205 // Pass the timestamps in a list. | 206 // Pass the timestamps in a list. |
206 scoped_ptr<base::ListValue> timestamps(new base::ListValue); | 207 std::unique_ptr<base::ListValue> timestamps(new base::ListValue); |
207 for (int64_t timestamp : all_timestamps) { | 208 for (int64_t timestamp : all_timestamps) { |
208 timestamps->AppendDouble( | 209 timestamps->AppendDouble( |
209 base::Time::FromInternalValue(timestamp).ToJsTime()); | 210 base::Time::FromInternalValue(timestamp).ToJsTime()); |
210 } | 211 } |
211 result->Set("allTimestamps", timestamps.release()); | 212 result->Set("allTimestamps", timestamps.release()); |
212 | 213 |
213 // Always pass the short date since it is needed both in the search and in | 214 // Always pass the short date since it is needed both in the search and in |
214 // the monthly view. | 215 // the monthly view. |
215 result->SetString("dateShort", base::TimeFormatShortDate(time)); | 216 result->SetString("dateShort", base::TimeFormatShortDate(time)); |
216 | 217 |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
582 int missing_count = std::count_if( | 583 int missing_count = std::count_if( |
583 query_results_.begin(), query_results_.end(), IsLocalOnlyResult); | 584 query_results_.begin(), query_results_.end(), IsLocalOnlyResult); |
584 UMA_HISTOGRAM_PERCENTAGE("WebHistory.LocalResultMissingOnServer", | 585 UMA_HISTOGRAM_PERCENTAGE("WebHistory.LocalResultMissingOnServer", |
585 missing_count * 100.0 / local_result_count); | 586 missing_count * 100.0 / local_result_count); |
586 } | 587 } |
587 } | 588 } |
588 | 589 |
589 // Convert the result vector into a ListValue. | 590 // Convert the result vector into a ListValue. |
590 base::ListValue results_value; | 591 base::ListValue results_value; |
591 for (const BrowsingHistoryHandler::HistoryEntry& entry : query_results_) { | 592 for (const BrowsingHistoryHandler::HistoryEntry& entry : query_results_) { |
592 scoped_ptr<base::Value> value( | 593 std::unique_ptr<base::Value> value( |
593 entry.ToValue(bookmark_model, nullptr, sync_service)); | 594 entry.ToValue(bookmark_model, nullptr, sync_service)); |
594 results_value.Append(value.release()); | 595 results_value.Append(value.release()); |
595 } | 596 } |
596 | 597 |
597 web_ui()->CallJavascriptFunction("historyResult", results_info_value_, | 598 web_ui()->CallJavascriptFunction("historyResult", results_info_value_, |
598 results_value); | 599 results_value); |
599 results_info_value_.Clear(); | 600 results_info_value_.Clear(); |
600 query_results_.clear(); | 601 query_results_.clear(); |
601 web_history_query_results_.clear(); | 602 web_history_query_results_.clear(); |
602 } | 603 } |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
798 | 799 |
799 void BrowsingHistoryHandler::OnURLsDeleted( | 800 void BrowsingHistoryHandler::OnURLsDeleted( |
800 history::HistoryService* history_service, | 801 history::HistoryService* history_service, |
801 bool all_history, | 802 bool all_history, |
802 bool expired, | 803 bool expired, |
803 const history::URLRows& deleted_rows, | 804 const history::URLRows& deleted_rows, |
804 const std::set<GURL>& favicon_urls) { | 805 const std::set<GURL>& favicon_urls) { |
805 if (all_history || DeletionsDiffer(deleted_rows, urls_to_be_deleted_)) | 806 if (all_history || DeletionsDiffer(deleted_rows, urls_to_be_deleted_)) |
806 web_ui()->CallJavascriptFunction("historyDeleted"); | 807 web_ui()->CallJavascriptFunction("historyDeleted"); |
807 } | 808 } |
OLD | NEW |