static_cookie_policy.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "net/base/static_cookie_policy.h" 6 7#include "base/logging.h" 8#include "net/base/net_errors.h" 9#include "net/base/registry_controlled_domains/registry_controlled_domain.h" 10#include "url/gurl.h" 11 12namespace net { 13 14int StaticCookiePolicy::CanGetCookies( 15 const GURL& url, 16 const GURL& first_party_for_cookies) const { 17 switch (type_) { 18 case StaticCookiePolicy::ALLOW_ALL_COOKIES: 19 return OK; 20 case StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES: 21 if (first_party_for_cookies.is_empty()) 22 return OK; // Empty first-party URL indicates a first-party request. 23 return registry_controlled_domains::SameDomainOrHost( 24 url, 25 first_party_for_cookies, 26 registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES) ? 27 OK : ERR_ACCESS_DENIED; 28 case StaticCookiePolicy::BLOCK_ALL_COOKIES: 29 return ERR_ACCESS_DENIED; 30 default: 31 NOTREACHED(); 32 return ERR_ACCESS_DENIED; 33 } 34} 35 36int StaticCookiePolicy::CanSetCookie( 37 const GURL& url, 38 const GURL& first_party_for_cookies) const { 39 switch (type_) { 40 case StaticCookiePolicy::ALLOW_ALL_COOKIES: 41 return OK; 42 case StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES: 43 if (first_party_for_cookies.is_empty()) 44 return OK; // Empty first-party URL indicates a first-party request. 45 return registry_controlled_domains::SameDomainOrHost( 46 url, 47 first_party_for_cookies, 48 registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES) ? 49 OK : ERR_ACCESS_DENIED; 50 case StaticCookiePolicy::BLOCK_ALL_COOKIES: 51 return ERR_ACCESS_DENIED; 52 default: 53 NOTREACHED(); 54 return ERR_ACCESS_DENIED; 55 } 56} 57 58} // namespace net 59