summaryrefslogtreecommitdiff
path: root/chromium/sql/statement.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/sql/statement.cc')
-rw-r--r--chromium/sql/statement.cc37
1 files changed, 31 insertions, 6 deletions
diff --git a/chromium/sql/statement.cc b/chromium/sql/statement.cc
index c3a2a70be0e..87c2b120796 100644
--- a/chromium/sql/statement.cc
+++ b/chromium/sql/statement.cc
@@ -13,6 +13,7 @@
#include "base/strings/string_piece_forward.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/time/time.h"
#include "build/build_config.h" // TODO(crbug.com/866218): Remove this include.
#include "third_party/sqlite/sqlite3.h"
@@ -182,6 +183,17 @@ bool Statement::BindDouble(int col, double val) {
return is_valid() && CheckOk(sqlite3_bind_double(ref_->stmt(), col + 1, val));
}
+bool Statement::BindTime(int col, base::Time val) {
+#if !defined(OS_ANDROID) // TODO(crbug.com/866218): Remove this conditional
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+#endif // OS_ANDROID
+ DCHECK(!stepped_);
+
+ int64_t int_value = val.ToDeltaSinceWindowsEpoch().InMicroseconds();
+ return is_valid() &&
+ CheckOk(sqlite3_bind_int64(ref_->stmt(), col + 1, int_value));
+}
+
bool Statement::BindCString(int col, const char* val) {
#if !defined(OS_ANDROID) // TODO(crbug.com/866218): Remove this conditional
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -290,6 +302,19 @@ double Statement::ColumnDouble(int col) const {
return sqlite3_column_double(ref_->stmt(), col);
}
+base::Time Statement::ColumnTime(int col) const {
+#if !defined(OS_ANDROID) // TODO(crbug.com/866218): Remove this conditional
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+#endif // OS_ANDROID
+
+ if (!CheckValid())
+ return base::Time();
+
+ int64_t int_value = sqlite3_column_int64(ref_->stmt(), col);
+ return base::Time::FromDeltaSinceWindowsEpoch(
+ base::TimeDelta::FromMicroseconds(int_value));
+}
+
std::string Statement::ColumnString(int col) const {
#if !defined(OS_ANDROID) // TODO(crbug.com/866218): Remove this conditional
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -308,16 +333,16 @@ std::string Statement::ColumnString(int col) const {
return result;
}
-base::string16 Statement::ColumnString16(int col) const {
+std::u16string Statement::ColumnString16(int col) const {
#if !defined(OS_ANDROID) // TODO(crbug.com/866218): Remove this conditional
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
#endif // OS_ANDROID
if (!CheckValid())
- return base::string16();
+ return std::u16string();
std::string s = ColumnString(col);
- return !s.empty() ? base::UTF8ToUTF16(s) : base::string16();
+ return !s.empty() ? base::UTF8ToUTF16(s) : std::u16string();
}
int Statement::ColumnByteLength(int col) const {
@@ -359,7 +384,7 @@ bool Statement::ColumnBlobAsString(int col, std::string* blob) const {
return true;
}
-bool Statement::ColumnBlobAsString16(int col, base::string16* val) const {
+bool Statement::ColumnBlobAsString16(int col, std::u16string* val) const {
#if !defined(OS_ANDROID) // TODO(crbug.com/866218): Remove this conditional
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
#endif // OS_ANDROID
@@ -368,11 +393,11 @@ bool Statement::ColumnBlobAsString16(int col, base::string16* val) const {
return false;
const void* data = ColumnBlob(col);
- size_t len = ColumnByteLength(col) / sizeof(base::char16);
+ size_t len = ColumnByteLength(col) / sizeof(char16_t);
val->resize(len);
if (val->size() != len)
return false;
- val->assign(reinterpret_cast<const base::char16*>(data), len);
+ val->assign(reinterpret_cast<const char16_t*>(data), len);
return true;
}