// Copyright (c) 2011 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 CHROME_BROWSER_NET_CHROME_COOKIE_POLICY_H_
#define CHROME_BROWSER_NET_CHROME_COOKIE_POLICY_H_
#pragma once
#include <map>
#include <string>
#include <vector>
#include "base/memory/ref_counted.h"
#include "googleurl/src/gurl.h"
#include "net/base/cookie_policy.h"
class HostContentSettingsMap;
// Implements CookiePolicy that uses HostContentSettingsMap and
// net::StaticCookiePolicy to decide if the cookie should be blocked.
class ChromeCookiePolicy : public net::CookiePolicy {
public:
explicit ChromeCookiePolicy(HostContentSettingsMap* map);
virtual ~ChromeCookiePolicy();
// CookiePolicy methods:
virtual int CanGetCookies(const GURL& url, const GURL& first_party) const;
virtual int CanSetCookie(const GURL& url,
const GURL& first_party,
const std::string& cookie_line) const;
private:
int CheckPolicy(const GURL& url) const;
const scoped_refptr<HostContentSettingsMap> host_content_settings_map_;
// True if blocking third-party cookies also applies to reading them.
bool strict_third_party_blocking_;
DISALLOW_COPY_AND_ASSIGN(ChromeCookiePolicy);
};
#endif // CHROME_BROWSER_NET_CHROME_COOKIE_POLICY_H_