| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 if (!IsIdentifier(elements[i])) { | 93 if (!IsIdentifier(elements[i])) { |
| 94 error = kIDBKeyPathParseErrorIdentifier; | 94 error = kIDBKeyPathParseErrorIdentifier; |
| 95 return; | 95 return; |
| 96 } | 96 } |
| 97 } | 97 } |
| 98 error = kIDBKeyPathParseErrorNone; | 98 error = kIDBKeyPathParseErrorNone; |
| 99 } | 99 } |
| 100 | 100 |
| 101 IDBKeyPath::IDBKeyPath(const String& string) | 101 IDBKeyPath::IDBKeyPath(const String& string) |
| 102 : type_(kStringType), string_(string) { | 102 : type_(kStringType), string_(string) { |
| 103 ASSERT(!string_.IsNull()); | 103 DCHECK(!string_.IsNull()); |
| 104 } | 104 } |
| 105 | 105 |
| 106 IDBKeyPath::IDBKeyPath(const Vector<String>& array) | 106 IDBKeyPath::IDBKeyPath(const Vector<String>& array) |
| 107 : type_(kArrayType), array_(array) { | 107 : type_(kArrayType), array_(array) { |
| 108 #if DCHECK_IS_ON() | 108 #if DCHECK_IS_ON() |
| 109 for (size_t i = 0; i < array_.size(); ++i) | 109 for (size_t i = 0; i < array_.size(); ++i) |
| 110 ASSERT(!array_[i].IsNull()); | 110 DCHECK(!array_[i].IsNull()); |
| 111 #endif | 111 #endif |
| 112 } | 112 } |
| 113 | 113 |
| 114 IDBKeyPath::IDBKeyPath(const StringOrStringSequence& key_path) { | 114 IDBKeyPath::IDBKeyPath(const StringOrStringSequence& key_path) { |
| 115 if (key_path.isNull()) { | 115 if (key_path.isNull()) { |
| 116 type_ = kNullType; | 116 type_ = kNullType; |
| 117 } else if (key_path.isString()) { | 117 } else if (key_path.isString()) { |
| 118 type_ = kStringType; | 118 type_ = kStringType; |
| 119 string_ = key_path.getAsString(); | 119 string_ = key_path.getAsString(); |
| 120 ASSERT(!string_.IsNull()); | 120 DCHECK(!string_.IsNull()); |
| 121 } else { | 121 } else { |
| 122 ASSERT(key_path.isStringSequence()); | 122 DCHECK(key_path.isStringSequence()); |
| 123 type_ = kArrayType; | 123 type_ = kArrayType; |
| 124 array_ = key_path.getAsStringSequence(); | 124 array_ = key_path.getAsStringSequence(); |
| 125 #if DCHECK_IS_ON() | 125 #if DCHECK_IS_ON() |
| 126 for (size_t i = 0; i < array_.size(); ++i) | 126 for (size_t i = 0; i < array_.size(); ++i) |
| 127 ASSERT(!array_[i].IsNull()); | 127 DCHECK(!array_[i].IsNull()); |
| 128 #endif | 128 #endif |
| 129 } | 129 } |
| 130 } | 130 } |
| 131 | 131 |
| 132 IDBKeyPath::IDBKeyPath(const WebIDBKeyPath& key_path) { | 132 IDBKeyPath::IDBKeyPath(const WebIDBKeyPath& key_path) { |
| 133 switch (key_path.KeyPathType()) { | 133 switch (key_path.KeyPathType()) { |
| 134 case kWebIDBKeyPathTypeNull: | 134 case kWebIDBKeyPathTypeNull: |
| 135 type_ = kNullType; | 135 type_ = kNullType; |
| 136 return; | 136 return; |
| 137 | 137 |
| 138 case kWebIDBKeyPathTypeString: | 138 case kWebIDBKeyPathTypeString: |
| 139 type_ = kStringType; | 139 type_ = kStringType; |
| 140 string_ = key_path.GetString(); | 140 string_ = key_path.GetString(); |
| 141 return; | 141 return; |
| 142 | 142 |
| 143 case kWebIDBKeyPathTypeArray: | 143 case kWebIDBKeyPathTypeArray: |
| 144 type_ = kArrayType; | 144 type_ = kArrayType; |
| 145 for (size_t i = 0, size = key_path.Array().size(); i < size; ++i) | 145 for (size_t i = 0, size = key_path.Array().size(); i < size; ++i) |
| 146 array_.push_back(key_path.Array()[i]); | 146 array_.push_back(key_path.Array()[i]); |
| 147 return; | 147 return; |
| 148 } | 148 } |
| 149 ASSERT_NOT_REACHED(); | 149 NOTREACHED(); |
| 150 } | 150 } |
| 151 | 151 |
| 152 IDBKeyPath::operator WebIDBKeyPath() const { | 152 IDBKeyPath::operator WebIDBKeyPath() const { |
| 153 switch (type_) { | 153 switch (type_) { |
| 154 case kNullType: | 154 case kNullType: |
| 155 return WebIDBKeyPath(); | 155 return WebIDBKeyPath(); |
| 156 case kStringType: | 156 case kStringType: |
| 157 return WebIDBKeyPath(WebString(string_)); | 157 return WebIDBKeyPath(WebString(string_)); |
| 158 case kArrayType: | 158 case kArrayType: |
| 159 return WebIDBKeyPath(array_); | 159 return WebIDBKeyPath(array_); |
| 160 } | 160 } |
| 161 ASSERT_NOT_REACHED(); | 161 NOTREACHED(); |
| 162 return WebIDBKeyPath(); | 162 return WebIDBKeyPath(); |
| 163 } | 163 } |
| 164 | 164 |
| 165 bool IDBKeyPath::IsValid() const { | 165 bool IDBKeyPath::IsValid() const { |
| 166 switch (type_) { | 166 switch (type_) { |
| 167 case kNullType: | 167 case kNullType: |
| 168 return false; | 168 return false; |
| 169 | 169 |
| 170 case kStringType: | 170 case kStringType: |
| 171 return IDBIsValidKeyPath(string_); | 171 return IDBIsValidKeyPath(string_); |
| 172 | 172 |
| 173 case kArrayType: | 173 case kArrayType: |
| 174 if (array_.IsEmpty()) | 174 if (array_.IsEmpty()) |
| 175 return false; | 175 return false; |
| 176 for (size_t i = 0; i < array_.size(); ++i) { | 176 for (size_t i = 0; i < array_.size(); ++i) { |
| 177 if (!IDBIsValidKeyPath(array_[i])) | 177 if (!IDBIsValidKeyPath(array_[i])) |
| 178 return false; | 178 return false; |
| 179 } | 179 } |
| 180 return true; | 180 return true; |
| 181 } | 181 } |
| 182 ASSERT_NOT_REACHED(); | 182 NOTREACHED(); |
| 183 return false; | 183 return false; |
| 184 } | 184 } |
| 185 | 185 |
| 186 bool IDBKeyPath::operator==(const IDBKeyPath& other) const { | 186 bool IDBKeyPath::operator==(const IDBKeyPath& other) const { |
| 187 if (type_ != other.type_) | 187 if (type_ != other.type_) |
| 188 return false; | 188 return false; |
| 189 | 189 |
| 190 switch (type_) { | 190 switch (type_) { |
| 191 case kNullType: | 191 case kNullType: |
| 192 return true; | 192 return true; |
| 193 case kStringType: | 193 case kStringType: |
| 194 return string_ == other.string_; | 194 return string_ == other.string_; |
| 195 case kArrayType: | 195 case kArrayType: |
| 196 return array_ == other.array_; | 196 return array_ == other.array_; |
| 197 } | 197 } |
| 198 ASSERT_NOT_REACHED(); | 198 NOTREACHED(); |
| 199 return false; | 199 return false; |
| 200 } | 200 } |
| 201 | 201 |
| 202 } // namespace blink | 202 } // namespace blink |
| OLD | NEW |