• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2011 Google Inc. All rights reserved.
3   *
4   * Redistribution and use in source and binary forms, with or without
5   * modification, are permitted provided that the following conditions
6   * are met:
7   *
8   * 1.  Redistributions of source code must retain the above copyright
9   *     notice, this list of conditions and the following disclaimer.
10   * 2.  Redistributions in binary form must reproduce the above copyright
11   *     notice, this list of conditions and the following disclaimer in the
12   *     documentation and/or other materials provided with the distribution.
13   *
14   * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15   * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17   * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18   * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24   */
25  
26  #include "config.h"
27  #include "public/platform/WebIDBKeyPath.h"
28  
29  #include "modules/indexeddb/IDBKeyPath.h"
30  #include "public/platform/WebString.h"
31  #include "public/platform/WebVector.h"
32  #include "wtf/Vector.h"
33  
34  namespace blink {
35  
create(const WebString & keyPath)36  WebIDBKeyPath WebIDBKeyPath::create(const WebString& keyPath)
37  {
38      return WebIDBKeyPath(IDBKeyPath(keyPath));
39  }
40  
create(const WebVector<WebString> & keyPath)41  WebIDBKeyPath WebIDBKeyPath::create(const WebVector<WebString>& keyPath)
42  {
43      Vector<String> strings;
44      for (size_t i = 0; i < keyPath.size(); ++i)
45          strings.append(keyPath[i]);
46      return WebIDBKeyPath(IDBKeyPath(strings));
47  }
48  
createNull()49  WebIDBKeyPath WebIDBKeyPath::createNull()
50  {
51      return WebIDBKeyPath(IDBKeyPath());
52  }
53  
assign(const WebIDBKeyPath & keyPath)54  void WebIDBKeyPath::assign(const WebIDBKeyPath& keyPath)
55  {
56      ASSERT(keyPath.m_private.get());
57      m_private.reset(new IDBKeyPath(keyPath));
58  }
59  
reset()60  void WebIDBKeyPath::reset()
61  {
62      m_private.reset(0);
63  }
64  
isValid() const65  bool WebIDBKeyPath::isValid() const
66  {
67      ASSERT(m_private.get());
68      return m_private->isValid();
69  }
70  
keyPathType() const71  WebIDBKeyPathType WebIDBKeyPath::keyPathType() const
72  {
73      ASSERT(m_private.get());
74      return static_cast<WebIDBKeyPathType>(m_private->type());
75  }
76  
array() const77  WebVector<WebString> WebIDBKeyPath::array() const
78  {
79      ASSERT(m_private.get());
80      ASSERT(m_private->type() == IDBKeyPath::ArrayType);
81      return m_private->array();
82  }
83  
string() const84  WebString WebIDBKeyPath::string() const
85  {
86      ASSERT(m_private.get());
87      ASSERT(m_private->type() == IDBKeyPath::StringType);
88      return m_private->string();
89  }
90  
WebIDBKeyPath(const IDBKeyPath & value)91  WebIDBKeyPath::WebIDBKeyPath(const IDBKeyPath& value)
92      : m_private(new IDBKeyPath(value))
93  {
94      ASSERT(m_private.get());
95  }
96  
operator =(const IDBKeyPath & value)97  WebIDBKeyPath& WebIDBKeyPath::operator=(const IDBKeyPath& value)
98  {
99      ASSERT(m_private.get());
100      m_private.reset(new IDBKeyPath(value));
101      return *this;
102  }
103  
operator const IDBKeyPath&() const104  WebIDBKeyPath::operator const IDBKeyPath&() const
105  {
106      ASSERT(m_private.get());
107      return *(m_private.get());
108  }
109  
110  } // namespace blink
111