ArrayPrototype should start out with a blank indexing type
[WebKit-https.git] / Source / WebCore / loader / blackberry / CookieJarBlackBerry.cpp
1 /*
2  * Copyright (C) 2011, 2012 Research In Motion Limited. All rights reserved.
3  *
4  *  This library is free software; you can redistribute it and/or
5  *  modify it under the terms of the GNU Lesser General Public
6  *  License as published by the Free Software Foundation; either
7  *  version 2 of the License, or (at your option) any later version.
8  *
9  *  This library is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  *  Lesser General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Lesser General Public
15  *  License along with this library; if not, write to the Free Software
16  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17  * Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/
18  * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
19  */
20
21 #include "config.h"
22 #include "CookieJar.h"
23
24 #include "Cookie.h"
25 #include "CookieManager.h"
26 #include "Document.h"
27 #include "Frame.h"
28 #include "FrameLoaderClientBlackBerry.h"
29 #include "KURL.h"
30 #include "NotImplemented.h"
31 #include "Page.h"
32 #include "PageGroupLoadDeferrer.h"
33 #include "Settings.h"
34 #include <wtf/text/CString.h>
35
36 namespace WebCore {
37
38 // FIXME: Unfork. This file is forked because all other platforms use NetworkingContext to access cookie jar, not Document or Frame.
39
40 String cookies(Document const* document, KURL const& url)
41 {
42     Frame* frame = document->frame();
43     Page* page = frame ? frame->page() : 0;
44
45     if (!page)
46         return String();
47
48     if (!(frame && frame->loader() && frame->loader()->client()))
49         return String();
50
51     if (!static_cast<FrameLoaderClientBlackBerry*>(frame->loader()->client())->cookiesEnabled())
52         return String();
53
54     ASSERT(document && url == document->cookieURL());
55     // 'HttpOnly' cookies should no be accessible from scripts, so we filter them out here
56     return cookieManager().getCookie(url, NoHttpOnlyCookie);
57 }
58
59 void setCookies(Document* document, KURL const& url, String const& value)
60 {
61     Frame* frame = document->frame();
62     Page* page = frame ? frame->page() : 0;
63
64     if (!page)
65         return;
66
67     if (!(frame && frame->loader() && frame->loader()->client()))
68         return;
69
70     if (!static_cast<FrameLoaderClientBlackBerry*>(frame->loader()->client())->cookiesEnabled())
71         return;
72
73     ASSERT(document && url == document->cookieURL());
74     cookieManager().setCookies(url, value, NoHttpOnlyCookie);
75 }
76
77 bool cookiesEnabled(Document const*)
78 {
79     // FIXME. Currently cookie is enabled by default, no setting on property page.
80     return true;
81 }
82
83 bool getRawCookies(const Document* document, const KURL& url, Vector<Cookie>& rawCookies)
84 {
85     Vector<ParsedCookie*> result;
86     cookieManager().getRawCookies(result, url, WithHttpOnlyCookies);
87     for (size_t i = 0; i < result.size(); i++)
88         result[i]->appendWebCoreCookie(rawCookies);
89     return true;
90 }
91
92 void deleteCookie(const Document* document, const KURL& url, const String& cookieName)
93 {
94     // Cookies are not bound to the document. Therefore, we don't need to pass
95     // in the document object to find the targeted cookies in cookie manager.
96     cookieManager().removeCookieWithName(url, cookieName);
97 }
98
99 String cookieRequestHeaderFieldValue(const Document* document, const KURL &url)
100 {
101     ASSERT(document);
102
103     if (!(document->frame() && document->frame()->loader() && document->frame()->loader()->client()))
104         return String();
105
106     if (!static_cast<FrameLoaderClientBlackBerry*>(document->frame()->loader()->client())->cookiesEnabled())
107         return String();
108
109     return cookieManager().getCookie(url, WithHttpOnlyCookies);
110 }
111
112 } // namespace WebCore