// Copyright (c) 2010 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. #include "third_party/blink/renderer/core/loader/cookie_jar.h" #include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/platform/instrumentation/histogram.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" namespace blink { CookieJar::CookieJar(blink::Document* document) : document_(document) {} CookieJar::~CookieJar() = default; void CookieJar::SetCookie(const String& value) { KURL cookie_url = document_->CookieURL(); if (cookie_url.IsEmpty()) return; RequestRestrictedCookieManagerIfNeeded(); SCOPED_BLINK_UMA_HISTOGRAM_TIMER("Blink.CookieJar.SyncCookiesSetTime"); backend_->SetCookieFromString(cookie_url, document_->SiteForCookies(), value); } String CookieJar::Cookies() { KURL cookie_url = document_->CookieURL(); if (cookie_url.IsEmpty()) return String(); SCOPED_BLINK_UMA_HISTOGRAM_TIMER("Blink.CookieJar.SyncCookiesTime"); RequestRestrictedCookieManagerIfNeeded(); String value; backend_->GetCookiesString(cookie_url, document_->SiteForCookies(), &value); return value; } bool CookieJar::CookiesEnabled() { KURL cookie_url = document_->CookieURL(); if (cookie_url.IsEmpty()) return false; RequestRestrictedCookieManagerIfNeeded(); bool cookies_enabled = false; backend_->CookiesEnabledFor(cookie_url, document_->SiteForCookies(), &cookies_enabled); return cookies_enabled; } void CookieJar::RequestRestrictedCookieManagerIfNeeded() { if (!backend_.is_bound() || backend_.encountered_error()) { document_->GetInterfaceProvider()->GetInterface( mojo::MakeRequest(&backend_)); } } } // namespace blink