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)#include "content/common/indexed_db/indexed_db_param_traits.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include <string> 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include <vector> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/indexed_db/indexed_db_key.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/indexed_db/indexed_db_key_path.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/indexed_db/indexed_db_key_range.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_message_utils.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::IndexedDBKey; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::IndexedDBKeyPath; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::IndexedDBKeyRange; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyPathTypeArray; 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyPathTypeNull; 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyPathTypeString; 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyType; 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyTypeArray; 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyTypeBinary; 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyTypeDate; 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyTypeInvalid; 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyTypeMin; 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyTypeNull; 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyTypeNumber; 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebIDBKeyTypeString; 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace IPC { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void ParamTraits<IndexedDBKey>::Write(Message* m, const param_type& p) { 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) WriteParam(m, static_cast<int>(p.type())); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (p.type()) { 36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeArray: 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.array()); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case WebIDBKeyTypeBinary: 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) WriteParam(m, p.binary()); 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return; 42ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeString: 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.string()); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeDate: 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.date()); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 48ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeNumber: 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.number()); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 51ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeInvalid: 52ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeNull: 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return; 54ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeMin: 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) default: 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) NOTREACHED(); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ParamTraits<IndexedDBKey>::Read(const Message* m, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PickleIterator* iter, 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) param_type* r) { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int type; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &type)) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebIDBKeyType web_type = static_cast<WebIDBKeyType>(type); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) switch (web_type) { 70ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeArray: { 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<IndexedDBKey> array; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &array)) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) *r = IndexedDBKey(array); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case WebIDBKeyTypeBinary: { 78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::string binary; 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!ReadParam(m, iter, &binary)) 80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return false; 81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) *r = IndexedDBKey(binary); 82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return true; 83f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 84ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeString: { 85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 string; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &string)) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 8890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) *r = IndexedDBKey(string); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 91ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeDate: 92ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeNumber: { 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double number; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &number)) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 9690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) *r = IndexedDBKey(number, web_type); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 99ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeInvalid: 100ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeNull: 10190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) *r = IndexedDBKey(web_type); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 103ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyTypeMin: 1044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) default: 10590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) NOTREACHED(); 10690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return false; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void ParamTraits<IndexedDBKey>::Log(const param_type& p, std::string* l) { 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append("<IndexedDBKey>("); 112868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) LogParam(static_cast<int>(p.type()), l); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", "); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append("["); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<IndexedDBKey>::const_iterator it = p.array().begin(); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (it != p.array().end()) { 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Log(*it, l); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++it; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it != p.array().end()) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", "); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append("], "); 123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) LogParam(p.binary(), l); 124f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) l->append(", "); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LogParam(p.string(), l); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", "); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LogParam(p.date(), l); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", "); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LogParam(p.number(), l); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(")"); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void ParamTraits<IndexedDBKeyPath>::Write(Message* m, const param_type& p) { 134868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) WriteParam(m, static_cast<int>(p.type())); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (p.type()) { 136ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyPathTypeArray: 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.array()); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 139ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyPathTypeString: 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.string()); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 142ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyPathTypeNull: 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 14423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) default: 14523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) NOTREACHED(); 14623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ParamTraits<IndexedDBKeyPath>::Read(const Message* m, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PickleIterator* iter, 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) param_type* r) { 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int type; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &type)) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (type) { 158ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyPathTypeArray: { 159a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) std::vector<base::string16> array; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &array)) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 16290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) *r = IndexedDBKeyPath(array); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 165ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyPathTypeString: { 166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 string; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &string)) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 16990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) *r = IndexedDBKeyPath(string); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 172ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch case WebIDBKeyPathTypeNull: 17390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) *r = IndexedDBKeyPath(); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 17523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) default: 17623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) NOTREACHED(); 17723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return false; 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void ParamTraits<IndexedDBKeyPath>::Log(const param_type& p, std::string* l) { 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append("<IndexedDBKeyPath>("); 183868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) LogParam(static_cast<int>(p.type()), l); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", "); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LogParam(p.string(), l); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", "); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append("["); 188a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) std::vector<base::string16>::const_iterator it = p.array().begin(); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (it != p.array().end()) { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LogParam(*it, l); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++it; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it != p.array().end()) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", "); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append("])"); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void ParamTraits<IndexedDBKeyRange>::Write(Message* m, const param_type& p) { 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.lower()); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.upper()); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.lowerOpen()); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WriteParam(m, p.upperOpen()); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ParamTraits<IndexedDBKeyRange>::Read(const Message* m, 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PickleIterator* iter, 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) param_type* r) { 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IndexedDBKey lower; 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &lower)) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IndexedDBKey upper; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &upper)) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool lower_open; 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &lower_open)) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool upper_open; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ReadParam(m, iter, &upper_open)) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) *r = IndexedDBKeyRange(lower, upper, lower_open, upper_open); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void ParamTraits<IndexedDBKeyRange>::Log(const param_type& p, std::string* l) { 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append("<IndexedDBKeyRange>(lower="); 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LogParam(p.lower(), l); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", upper="); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LogParam(p.upper(), l); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", lower_open="); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LogParam(p.lowerOpen(), l); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(", upper_open="); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LogParam(p.upperOpen(), l); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l->append(")"); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace IPC 241