1231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block/* 2231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2009 Joseph Pecoraro. All rights reserved. 3231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 4231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Redistribution and use in source and binary forms, with or without 5231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * modification, are permitted provided that the following conditions 6231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * are met: 7231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 1. Redistributions of source code must retain the above copyright 8231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * notice, this list of conditions and the following disclaimer. 9231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 2. Redistributions in binary form must reproduce the above copyright 10231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * notice, this list of conditions and the following disclaimer in the 11231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * documentation and/or other materials provided with the distribution. 12231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 13231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block */ 25231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 26231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#ifndef Cookie_h 27231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#define Cookie_h 28231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 29231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "PlatformString.h" 30f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/text/StringHash.h> 31231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 32231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blocknamespace WebCore { 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 34231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // This struct is currently only used to provide more cookies information 35231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // to the Web Inspector. 36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block struct Cookie { 38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block Cookie(const String& name, const String& value, const String& domain, 39231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block const String& path, double expires, bool httpOnly, bool secure, 40231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool session) 41231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block : name(name) 42231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , value(value) 43231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , domain(domain) 44231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , path(path) 45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , expires(expires) 46231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , httpOnly(httpOnly) 47231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , secure(secure) 48231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , session(session) 49231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block { 50231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 51231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 52231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block String name; 53231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block String value; 54231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block String domain; 55231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block String path; 56231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block double expires; 57231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool httpOnly; 58231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool secure; 59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool session; 60231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block }; 61231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 62231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block struct CookieHash { 63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block static unsigned hash(Cookie key) 64231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block { 65231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return StringHash::hash(key.name) + StringHash::hash(key.domain) + StringHash::hash(key.path) + key.secure; 66231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 67231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 68231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block static bool equal(Cookie a, Cookie b) 69231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block { 70231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return a.name == b.name && a.domain == b.domain && a.path == b.path && a.secure == b.secure; 71231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 72231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block }; 73231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 74231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 75231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blocknamespace WTF { 76231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block template<typename T> struct DefaultHash; 77231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block template<> struct DefaultHash<WebCore::Cookie> { 78231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block typedef WebCore::CookieHash Hash; 79231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block }; 80231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 81231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 82231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 83