1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/base/static_cookie_policy.h" 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/logging.h" 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "googleurl/src/gurl.h" 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/base/net_errors.h" 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/base/registry_controlled_domain.h" 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace net { 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenint StaticCookiePolicy::CanGetCookies( 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const GURL& url, 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const GURL& first_party_for_cookies) const { 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott switch (type_) { 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case StaticCookiePolicy::ALLOW_ALL_COOKIES: 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen case StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES: 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return OK; 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen case StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES: 2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen if (first_party_for_cookies.is_empty()) 2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen return OK; // Empty first-party URL indicates a first-party request. 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen return RegistryControlledDomainService::SameDomainOrHost( 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen url, first_party_for_cookies) ? OK : ERR_ACCESS_DENIED; 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case StaticCookiePolicy::BLOCK_ALL_COOKIES: 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return ERR_ACCESS_DENIED; 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott default: 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott NOTREACHED(); 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return ERR_ACCESS_DENIED; 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottint StaticCookiePolicy::CanSetCookie(const GURL& url, 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const GURL& first_party_for_cookies, 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string& cookie_line) const { 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott switch (type_) { 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case StaticCookiePolicy::ALLOW_ALL_COOKIES: 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return OK; 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen case StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES: 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen case StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES: 42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (first_party_for_cookies.is_empty()) 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return OK; // Empty first-party URL indicates a first-party request. 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return RegistryControlledDomainService::SameDomainOrHost( 45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott url, first_party_for_cookies) ? OK : ERR_ACCESS_DENIED; 46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case StaticCookiePolicy::BLOCK_ALL_COOKIES: 47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return ERR_ACCESS_DENIED; 48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott default: 49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott NOTREACHED(); 50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return ERR_ACCESS_DENIED; 51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace net 55