18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 22daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * Copyright (C) 2011 Google Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 9f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 12f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 26f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "config.h" 27f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "WebIDBKeyPath.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 29f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#if ENABLE(INDEXED_DATABASE) 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 31f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "IDBKeyPath.h" 32f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "WebString.h" 33f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "WebVector.h" 34f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/Vector.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 36f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickusing namespace WebCore; 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 38f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merricknamespace WebKit { 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 40f486d19d62f1bc33246748b14b14a9dfa617b57fIain MerrickWebIDBKeyPath WebIDBKeyPath::create(const WebString& keyPath) 41f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 42f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick WTF::Vector<IDBKeyPathElement> idbElements; 43f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick IDBKeyPathParseError idbError; 44f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick IDBParseKeyPath(keyPath, idbElements, idbError); 45f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return WebIDBKeyPath(idbElements, static_cast<int>(idbError)); 46f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 47f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 48f486d19d62f1bc33246748b14b14a9dfa617b57fIain MerrickWebIDBKeyPath::WebIDBKeyPath(const WTF::Vector<IDBKeyPathElement>& elements, int parseError) 49f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick : m_private(new WTF::Vector<IDBKeyPathElement>(elements)) 50f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick , m_parseError(parseError) 51f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 52f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 54f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickint WebIDBKeyPath::parseError() const 55f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 56f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return m_parseError; 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 59f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickvoid WebIDBKeyPath::assign(const WebIDBKeyPath& keyPath) 60f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 61f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick m_parseError = keyPath.m_parseError; 62f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick m_private.reset(new WTF::Vector<IDBKeyPathElement>(keyPath)); 63f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 65f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickvoid WebIDBKeyPath::reset() 66f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 67f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick m_private.reset(0); 68f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochWebIDBKeyPath::operator const WTF::Vector<IDBKeyPathElement, 0>&() const 71f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 72f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return *m_private.get(); 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 75f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} // namespace WebKit 76f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 77f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#endif // ENABLE(INDEXED_DATABASE) 78