15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_COMMON_INDEXED_DB_INDEXED_DB_KEY_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_COMMON_INDEXED_DB_INDEXED_DB_KEY_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/scoped_vector.h" 137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/string16.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h" 15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/WebKit/public/platform/WebIDBTypes.h" 16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink { 18ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass WebIDBKey; 19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT IndexedDBKey { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef std::vector<IndexedDBKey> KeyArray; 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) IndexedDBKey(); // Defaults to blink::WebIDBKeyTypeInvalid. 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) explicit IndexedDBKey(blink::WebIDBKeyType); // must be Null or Invalid 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) explicit IndexedDBKey(const KeyArray& array); 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) explicit IndexedDBKey(const std::string& binary); 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) explicit IndexedDBKey(const base::string16& string); 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IndexedDBKey(double number, 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebIDBKeyType type); // must be date or number 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~IndexedDBKey(); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool IsValid() const; 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool IsLessThan(const IndexedDBKey& other) const; 3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bool Equals(const IndexedDBKey& other) const; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebIDBKeyType type() const { return type_; } 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<IndexedDBKey>& array() const { return array_; } 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::string& binary() const { return binary_; } 44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& string() const { return string_; } 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double date() const { return date_; } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double number() const { return number_; } 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) size_t size_estimate() const { return size_estimate_; } 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int CompareTo(const IndexedDBKey& other) const; 5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebIDBKeyType type_; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<IndexedDBKey> array_; 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::string binary_; 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 string_; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double date_; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double number_; 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) size_t size_estimate_; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_COMMON_INDEXED_DB_INDEXED_DB_KEY_H_ 66