summaryrefslogtreecommitdiffstats
path: root/content/common/indexed_db_key.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/common/indexed_db_key.cc')
-rw-r--r--content/common/indexed_db_key.cc71
1 files changed, 71 insertions, 0 deletions
diff --git a/content/common/indexed_db_key.cc b/content/common/indexed_db_key.cc
new file mode 100644
index 0000000..ee02fa1
--- /dev/null
+++ b/content/common/indexed_db_key.cc
@@ -0,0 +1,71 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/common/indexed_db_key.h"
+
+#include "base/logging.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
+
+using WebKit::WebIDBKey;
+
+IndexedDBKey::IndexedDBKey()
+ : type_(WebIDBKey::InvalidType),
+ date_(0),
+ number_(0) {
+}
+
+IndexedDBKey::IndexedDBKey(const WebIDBKey& key) {
+ Set(key);
+}
+
+IndexedDBKey::~IndexedDBKey() {
+}
+
+void IndexedDBKey::SetNull() {
+ type_ = WebIDBKey::NullType;
+}
+
+void IndexedDBKey::SetInvalid() {
+ type_ = WebIDBKey::InvalidType;
+}
+
+void IndexedDBKey::SetString(const string16& string) {
+ type_ = WebIDBKey::StringType;
+ string_ = string;
+}
+
+void IndexedDBKey::SetDate(double date) {
+ type_ = WebIDBKey::DateType;
+ date_ = date;
+}
+
+void IndexedDBKey::SetNumber(double number) {
+ type_ = WebIDBKey::NumberType;
+ number_ = number;
+}
+
+void IndexedDBKey::Set(const WebIDBKey& key) {
+ type_ = key.type();
+ string_ = key.type() == WebIDBKey::StringType ?
+ static_cast<string16>(key.string()) : string16();
+ number_ = key.type() == WebIDBKey::NumberType ? key.number() : 0;
+ date_ = key.type() == WebIDBKey::DateType ? key.date() : 0;
+}
+
+IndexedDBKey::operator WebIDBKey() const {
+ switch (type_) {
+ case WebIDBKey::NullType:
+ return WebIDBKey::createNull();
+ case WebIDBKey::StringType:
+ return WebIDBKey::createString(string_);
+ case WebIDBKey::DateType:
+ return WebIDBKey::createDate(date_);
+ case WebIDBKey::NumberType:
+ return WebIDBKey::createNumber(number_);
+ case WebIDBKey::InvalidType:
+ return WebIDBKey::createInvalid();
+ }
+ NOTREACHED();
+ return WebIDBKey::createInvalid();
+}