summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/exported/web_idb_key.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/exported/web_idb_key.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/exported/web_idb_key.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/modules/exported/web_idb_key.cc b/chromium/third_party/blink/renderer/modules/exported/web_idb_key.cc
index 600bfce5080..2d0dbfd23e6 100644
--- a/chromium/third_party/blink/renderer/modules/exported/web_idb_key.cc
+++ b/chromium/third_party/blink/renderer/modules/exported/web_idb_key.cc
@@ -68,6 +68,23 @@ double WebIDBKeyView::Number() const {
return private_->Number();
}
+size_t WebIDBKeyView::SizeEstimate() const {
+ // TODO(cmp): Ensure |private_| can never be null.
+ //
+ // SizeEstimate() can be called when |private_| is null. That happens if and
+ // only if the |WebIDBKey| instance is created using WebIDBKey::CreateNull().
+ //
+ // Eventually, WebIDBKey::CreateNull() will change so that case will lead to
+ // a non-null |private_|. At that time, this null check can change to a
+ // DCHECK that |private_| is not null and the special null case handling can
+ // be removed.
+ if (this->IsNull()) {
+ return IDBKey::kIDBKeyOverheadSize;
+ }
+
+ return private_->SizeEstimate();
+}
+
WebIDBKey WebIDBKey::CreateArray(WebVector<WebIDBKey> array) {
IDBKey::KeyArray keys;
keys.ReserveCapacity(SafeCast<wtf_size_t>(array.size()));
@@ -105,6 +122,10 @@ WebIDBKey& WebIDBKey::operator=(WebIDBKey&&) noexcept = default;
WebIDBKey::~WebIDBKey() noexcept = default;
+std::unique_ptr<IDBKey> WebIDBKey::ReleaseIdbKey() noexcept {
+ return std::move(private_);
+}
+
WebIDBKey::WebIDBKey(std::unique_ptr<IDBKey> idb_key) noexcept
: private_(std::move(idb_key)) {}
WebIDBKey& WebIDBKey::operator=(std::unique_ptr<IDBKey> idb_key) noexcept {
@@ -112,4 +133,11 @@ WebIDBKey& WebIDBKey::operator=(std::unique_ptr<IDBKey> idb_key) noexcept {
return *this;
}
+WebIDBKey::WebIDBKey(const WebIDBKey& rkey)
+ : private_(IDBKey::Clone(rkey.private_)) {}
+WebIDBKey& WebIDBKey::operator=(const WebIDBKey& rkey) {
+ private_ = IDBKey::Clone(rkey.private_);
+ return *this;
+}
+
} // namespace blink