Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2010 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 "googleurl/src/gurl.h"
      9 #include "net/base/net_errors.h"
     10 #include "net/base/registry_controlled_domain.h"
     11 
     12 namespace net {
     13 
     14 int StaticCookiePolicy::CanGetCookies(const GURL& url,
     15                                       const GURL& first_party_for_cookies,
     16                                       CompletionCallback* callback) {
     17   switch (type_) {
     18     case StaticCookiePolicy::ALLOW_ALL_COOKIES:
     19       return OK;
     20     case StaticCookiePolicy::BLOCK_THIRD_PARTY_COOKIES:
     21       return OK;
     22     case StaticCookiePolicy::BLOCK_ALL_COOKIES:
     23       return ERR_ACCESS_DENIED;
     24     default:
     25       NOTREACHED();
     26       return ERR_ACCESS_DENIED;
     27   }
     28 }
     29 
     30 int StaticCookiePolicy::CanSetCookie(const GURL& url,
     31                                      const GURL& first_party_for_cookies,
     32                                      const std::string& cookie_line,
     33                                      CompletionCallback* callback) {
     34   switch (type_) {
     35     case StaticCookiePolicy::ALLOW_ALL_COOKIES:
     36       return OK;
     37     case StaticCookiePolicy::BLOCK_THIRD_PARTY_COOKIES:
     38       if (first_party_for_cookies.is_empty())
     39         return OK;  // Empty first-party URL indicates a first-party request.
     40       return RegistryControlledDomainService::SameDomainOrHost(
     41           url, first_party_for_cookies) ? OK : ERR_ACCESS_DENIED;
     42     case StaticCookiePolicy::BLOCK_ALL_COOKIES:
     43       return ERR_ACCESS_DENIED;
     44     default:
     45       NOTREACHED();
     46       return ERR_ACCESS_DENIED;
     47   }
     48 }
     49 
     50 }  // namespace net
     51