// 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(); bool allow_access_; base::Lock lock_; DISALLOW_COPY_AND_ASSIGN(AwCookieAccessPolicy); }; } // namespace android_webview #endif // ANDROID_WEBVIEW_BROWSER_AW_COOKIE_ACCESS_POLICY_H_