OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/extensions/extension_history_api.h" | 5 #include "chrome/browser/extensions/extension_history_api.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 | 24 |
25 double MilliSecondsFromTime(const base::Time& time) { | 25 double MilliSecondsFromTime(const base::Time& time) { |
26 return 1000 * time.ToDoubleT(); | 26 return 1000 * time.ToDoubleT(); |
27 } | 27 } |
28 | 28 |
29 void GetHistoryItemDictionary(const history::URLRow& row, | 29 void GetHistoryItemDictionary(const history::URLRow& row, |
30 DictionaryValue* value) { | 30 DictionaryValue* value) { |
31 value->SetString(keys::kIdKey, base::Int64ToString(row.id())); | 31 value->SetString(keys::kIdKey, base::Int64ToString(row.id())); |
32 value->SetString(keys::kUrlKey, row.url().spec()); | 32 value->SetString(keys::kUrlKey, row.url().spec()); |
33 value->SetString(keys::kTitleKey, row.title()); | 33 value->SetString(keys::kTitleKey, row.title()); |
34 value->SetReal(keys::kLastVisitdKey, MilliSecondsFromTime(row.last_visit())); | 34 value->SetDouble(keys::kLastVisitdKey, |
| 35 MilliSecondsFromTime(row.last_visit())); |
35 value->SetInteger(keys::kTypedCountKey, row.typed_count()); | 36 value->SetInteger(keys::kTypedCountKey, row.typed_count()); |
36 value->SetInteger(keys::kVisitCountKey, row.visit_count()); | 37 value->SetInteger(keys::kVisitCountKey, row.visit_count()); |
37 } | 38 } |
38 | 39 |
39 void AddHistoryNode(const history::URLRow& row, ListValue* list) { | 40 void AddHistoryNode(const history::URLRow& row, ListValue* list) { |
40 DictionaryValue* dict = new DictionaryValue(); | 41 DictionaryValue* dict = new DictionaryValue(); |
41 GetHistoryItemDictionary(row, dict); | 42 GetHistoryItemDictionary(row, dict); |
42 list->Append(dict); | 43 list->Append(dict); |
43 } | 44 } |
44 | 45 |
45 void GetVisitInfoDictionary(const history::VisitRow& row, | 46 void GetVisitInfoDictionary(const history::VisitRow& row, |
46 DictionaryValue* value) { | 47 DictionaryValue* value) { |
47 value->SetString(keys::kIdKey, base::Int64ToString(row.url_id)); | 48 value->SetString(keys::kIdKey, base::Int64ToString(row.url_id)); |
48 value->SetString(keys::kVisitId, base::Int64ToString(row.visit_id)); | 49 value->SetString(keys::kVisitId, base::Int64ToString(row.visit_id)); |
49 value->SetReal(keys::kVisitTime, MilliSecondsFromTime(row.visit_time)); | 50 value->SetDouble(keys::kVisitTime, MilliSecondsFromTime(row.visit_time)); |
50 value->SetString(keys::kReferringVisitId, | 51 value->SetString(keys::kReferringVisitId, |
51 base::Int64ToString(row.referring_visit)); | 52 base::Int64ToString(row.referring_visit)); |
52 | 53 |
53 const char* trans = PageTransition::CoreTransitionString(row.transition); | 54 const char* trans = PageTransition::CoreTransitionString(row.transition); |
54 DCHECK(trans) << "Invalid transition."; | 55 DCHECK(trans) << "Invalid transition."; |
55 value->SetString(keys::kTransition, trans); | 56 value->SetString(keys::kTransition, trans); |
56 } | 57 } |
57 | 58 |
58 void AddVisitNode(const history::VisitRow& row, ListValue* list) { | 59 void AddVisitNode(const history::VisitRow& row, ListValue* list) { |
59 DictionaryValue* dict = new DictionaryValue(); | 60 DictionaryValue* dict = new DictionaryValue(); |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 if (!temp_url.is_valid()) { | 169 if (!temp_url.is_valid()) { |
169 error_ = keys::kInvalidUrlError; | 170 error_ = keys::kInvalidUrlError; |
170 return false; | 171 return false; |
171 } | 172 } |
172 url->Swap(&temp_url); | 173 url->Swap(&temp_url); |
173 return true; | 174 return true; |
174 } | 175 } |
175 | 176 |
176 bool HistoryFunction::GetTimeFromValue(Value* value, base::Time* time) { | 177 bool HistoryFunction::GetTimeFromValue(Value* value, base::Time* time) { |
177 double ms_from_epoch = 0.0; | 178 double ms_from_epoch = 0.0; |
178 if (!value->GetAsReal(&ms_from_epoch)) { | 179 if (!value->GetAsDouble(&ms_from_epoch)) { |
179 int ms_from_epoch_as_int = 0; | 180 int ms_from_epoch_as_int = 0; |
180 if (!value->GetAsInteger(&ms_from_epoch_as_int)) | 181 if (!value->GetAsInteger(&ms_from_epoch_as_int)) |
181 return false; | 182 return false; |
182 ms_from_epoch = static_cast<double>(ms_from_epoch_as_int); | 183 ms_from_epoch = static_cast<double>(ms_from_epoch_as_int); |
183 } | 184 } |
184 // The history service has seconds resolution, while javascript Date() has | 185 // The history service has seconds resolution, while javascript Date() has |
185 // milliseconds resolution. | 186 // milliseconds resolution. |
186 double seconds_from_epoch = ms_from_epoch / 1000.0; | 187 double seconds_from_epoch = ms_from_epoch / 1000.0; |
187 // Time::FromDoubleT converts double time 0 to empty Time object. So we need | 188 // Time::FromDoubleT converts double time 0 to empty Time object. So we need |
188 // to do special handling here. | 189 // to do special handling here. |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 base::Time::Now(), // To the current time. | 380 base::Time::Now(), // To the current time. |
380 &cancelable_consumer_, | 381 &cancelable_consumer_, |
381 NewCallback(this, &DeleteAllHistoryFunction::DeleteComplete)); | 382 NewCallback(this, &DeleteAllHistoryFunction::DeleteComplete)); |
382 | 383 |
383 return true; | 384 return true; |
384 } | 385 } |
385 | 386 |
386 void DeleteAllHistoryFunction::DeleteComplete() { | 387 void DeleteAllHistoryFunction::DeleteComplete() { |
387 SendAsyncResponse(); | 388 SendAsyncResponse(); |
388 } | 389 } |
OLD | NEW |