blob: 1da5ff82e527d44033042983efe2ac8e12cf5caa [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 "modules/serviceworkers/ServiceWorkerContentSettingsProxy.h"
#include <memory>
#include <string>
namespace blink {
ServiceWorkerContentSettingsProxy::ServiceWorkerContentSettingsProxy(
mojom::blink::WorkerContentSettingsProxyPtrInfo host_info)
: host_info_(std::move(host_info)) {}
ServiceWorkerContentSettingsProxy::~ServiceWorkerContentSettingsProxy() =
default;
bool ServiceWorkerContentSettingsProxy::RequestFileSystemAccessSync() {
NOTREACHED();
return false;
}
bool ServiceWorkerContentSettingsProxy::AllowIndexedDB(
const blink::WebString& name,
const blink::WebSecurityOrigin&) {
bool result = false;
GetService()->AllowIndexedDB(name, &result);
return result;
}
// Use ThreadSpecific to ensure that |content_settings_instance_host| is
// destructed on worker thread.
// Each worker has a dedicated thread so this is safe.
mojom::blink::WorkerContentSettingsProxyPtr&
ServiceWorkerContentSettingsProxy::GetService() {
DEFINE_THREAD_SAFE_STATIC_LOCAL(
ThreadSpecific<mojom::blink::WorkerContentSettingsProxyPtr>,
content_settings_instance_host, ());
if (!content_settings_instance_host.IsSet()) {
DCHECK(host_info_.is_valid());
content_settings_instance_host->Bind(std::move(host_info_));
}
return *content_settings_instance_host;
}
} // namespace blink