diff options
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.cc | 28 |
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 |