diff options
Diffstat (limited to 'android_webview/browser/aw_cookie_access_policy.h')
-rw-r--r-- | android_webview/browser/aw_cookie_access_policy.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/android_webview/browser/aw_cookie_access_policy.h b/android_webview/browser/aw_cookie_access_policy.h new file mode 100644 index 0000000..b25e4f6 --- /dev/null +++ b/android_webview/browser/aw_cookie_access_policy.h @@ -0,0 +1,73 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ANDROID_WEBVIEW_BROWSER_AW_COOKIE_ACCESS_POLICY_H_ +#define ANDROID_WEBVIEW_BROWSER_AW_COOKIE_ACCESS_POLICY_H_ + +#include "base/basictypes.h" +#include "base/lazy_instance.h" +#include "base/synchronization/lock.h" +#include "net/cookies/canonical_cookie.h" + +namespace content { +class ResourceContext; +} + +namespace net { +class CookieOptions; +class URLRequest; +} + +class GURL; + +namespace android_webview { + +// Manages the cookie access (both setting and getting) policy for WebView. +class AwCookieAccessPolicy { + public: + static AwCookieAccessPolicy* GetInstance(); + + // These manage the global access state shared across requests regardless of + // source (i.e. network or JavaScript). + bool GetGlobalAllowAccess(); + void SetGlobalAllowAccess(bool allow); + + // These are the functions called when operating over cookies from the + // network. See NetworkDelegate for further descriptions. + bool OnCanGetCookies(const net::URLRequest& request, + const net::CookieList& cookie_list); + bool OnCanSetCookie(const net::URLRequest& request, + const std::string& cookie_line, + net::CookieOptions* options); + + // These are the functions called when operating over cookies from the + // renderer. See ContentBrowserClient for further descriptions. + bool AllowGetCookie(const GURL& url, + const GURL& first_party, + const net::CookieList& cookie_list, + content::ResourceContext* context, + int render_process_id, + int render_view_id); + bool AllowSetCookie(const GURL& url, + const GURL& first_party, + const std::string& cookie_line, + content::ResourceContext* context, + int render_process_id, + int render_view_id, + net::CookieOptions* options); + + private: + friend struct base::DefaultLazyInstanceTraits<AwCookieAccessPolicy>; + + AwCookieAccessPolicy(); + ~AwCookieAccessPolicy(); + bool allow_access_; + base::Lock lock_; + + DISALLOW_COPY_AND_ASSIGN(AwCookieAccessPolicy); +}; + +} // namespace android_webview + +#endif // ANDROID_WEBVIEW_BROWSER_AW_COOKIE_ACCESS_POLICY_H_ |