blob: 15ba2afcee15c5f22dabaa0e1986d42857c08abd [file] [log] [blame]
// Copyright 2017 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/modules/cookie_store/service_worker_global_scope_cookie_store.h"
#include <utility>
#include "services/network/public/mojom/restricted_cookie_manager.mojom-blink.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/workers/worker_thread.h"
#include "third_party/blink/renderer/modules/cookie_store/cookie_store.h"
#include "third_party/blink/renderer/modules/cookie_store/global_cookie_store_impl.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h"
namespace blink {
template <>
CookieStore* GlobalCookieStoreImpl<WorkerGlobalScope>::BuildCookieStore(
ExecutionContext* execution_context,
service_manager::InterfaceProvider* interface_provider) {
mojo::Remote<network::mojom::blink::RestrictedCookieManager>
cookie_manager_remote;
interface_provider->GetInterface(
cookie_manager_remote.BindNewPipeAndPassReceiver(
execution_context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
mojo::Remote<blink::mojom::blink::CookieStore> cookie_store_remote;
execution_context->GetBrowserInterfaceBroker().GetInterface(
cookie_store_remote.BindNewPipeAndPassReceiver(
execution_context->GetTaskRunner(TaskType::kMiscPlatformAPI)));
return MakeGarbageCollected<CookieStore>(execution_context,
std::move(cookie_manager_remote),
std::move(cookie_store_remote));
}
CookieStore* ServiceWorkerGlobalScopeCookieStore::cookieStore(
ServiceWorkerGlobalScope& worker) {
// ServiceWorkerGlobalScope is Supplementable<WorkerGlobalScope>, not
// Supplementable<ServiceWorkerGlobalScope>.
return GlobalCookieStoreImpl<WorkerGlobalScope>::From(worker).GetCookieStore(
worker);
}
} // namespace blink