| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 2011 Google Inc. All rights reserved. | 2  * Copyright (C) 2011 Google Inc. All rights reserved. | 
| 3  * | 3  * | 
| 4  * Redistribution and use in source and binary forms, with or without | 4  * Redistribution and use in source and binary forms, with or without | 
| 5  * modification, are permitted provided that the following conditions | 5  * modification, are permitted provided that the following conditions | 
| 6  * are met: | 6  * are met: | 
| 7  * | 7  * | 
| 8  * 1.  Redistributions of source code must retain the above copyright | 8  * 1.  Redistributions of source code must retain the above copyright | 
| 9  *     notice, this list of conditions and the following disclaimer. | 9  *     notice, this list of conditions and the following disclaimer. | 
| 10  * 2.  Redistributions in binary form must reproduce the above copyright | 10  * 2.  Redistributions in binary form must reproduce the above copyright | 
| 11  *     notice, this list of conditions and the following disclaimer in the | 11  *     notice, this list of conditions and the following disclaimer in the | 
| 12  *     documentation and/or other materials provided with the distribution. | 12  *     documentation and/or other materials provided with the distribution. | 
| 13  * | 13  * | 
| 14  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY | 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 | 15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 
| 16  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 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 | 17  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY | 
| 18  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 18  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 
| 19  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 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 | 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 | 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 | 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. | 23  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 24  */ | 24  */ | 
| 25 | 25 | 
| 26 #include "modules/indexeddb/IDBKey.h" | 26 #include "modules/indexeddb/IDBKey.h" | 
| 27 | 27 | 
|  | 28 #include <algorithm> | 
|  | 29 | 
| 28 namespace blink { | 30 namespace blink { | 
| 29 | 31 | 
| 30 IDBKey::~IDBKey() {} | 32 IDBKey::~IDBKey() {} | 
| 31 | 33 | 
| 32 DEFINE_TRACE(IDBKey) { | 34 DEFINE_TRACE(IDBKey) { | 
| 33   visitor->trace(m_array); | 35   visitor->trace(m_array); | 
| 34 } | 36 } | 
| 35 | 37 | 
| 36 bool IDBKey::isValid() const { | 38 bool IDBKey::isValid() const { | 
| 37   if (m_type == InvalidType) | 39   if (m_type == InvalidType) | 
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 95   return compare(other) == -1; | 97   return compare(other) == -1; | 
| 96 } | 98 } | 
| 97 | 99 | 
| 98 bool IDBKey::isEqual(const IDBKey* other) const { | 100 bool IDBKey::isEqual(const IDBKey* other) const { | 
| 99   if (!other) | 101   if (!other) | 
| 100     return false; | 102     return false; | 
| 101 | 103 | 
| 102   return !compare(other); | 104   return !compare(other); | 
| 103 } | 105 } | 
| 104 | 106 | 
|  | 107 IDBKey::KeyArray IDBKey::toMultiEntryArray() const { | 
|  | 108   DCHECK_EQ(m_type, ArrayType); | 
|  | 109   KeyArray result; | 
|  | 110   result.reserveCapacity(m_array.size()); | 
|  | 111   std::copy_if(m_array.begin(), m_array.end(), std::back_inserter(result), | 
|  | 112                [](const Member<IDBKey> key) { return key->isValid(); }); | 
|  | 113 | 
|  | 114   // Remove duplicates using std::sort/std::unique rather than a hashtable to | 
|  | 115   // avoid the complexity of implementing DefaultHash<IDBKey>. | 
|  | 116   std::sort(result.begin(), result.end(), | 
|  | 117             [](const Member<IDBKey> a, const Member<IDBKey> b) { | 
|  | 118               return a->isLessThan(b); | 
|  | 119             }); | 
|  | 120   const auto end = std::unique(result.begin(), result.end()); | 
|  | 121   DCHECK_LE(static_cast<size_t>(end - result.begin()), result.size()); | 
|  | 122   result.resize(end - result.begin()); | 
|  | 123   return result; | 
|  | 124 } | 
|  | 125 | 
| 105 }  // namespace blink | 126 }  // namespace blink | 
| OLD | NEW | 
|---|