| Index: extensions/renderer/renderer_extension_registry.cc
|
| diff --git a/extensions/renderer/renderer_extension_registry.cc b/extensions/renderer/renderer_extension_registry.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ddc3a1b89f31f89dc6174b7de27b756acb79c293
|
| --- /dev/null
|
| +++ b/extensions/renderer/renderer_extension_registry.cc
|
| @@ -0,0 +1,105 @@
|
| +// Copyright 2015 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 "extensions/renderer/renderer_extension_registry.h"
|
| +
|
| +#include "base/lazy_instance.h"
|
| +#include "base/logging.h"
|
| +#include "content/public/renderer/render_thread.h"
|
| +
|
| +namespace extensions {
|
| +
|
| +namespace {
|
| +
|
| +base::LazyInstance<RendererExtensionRegistry> g_renderer_extension_registry =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +} // namespace
|
| +
|
| +RendererExtensionRegistry::RendererExtensionRegistry() {}
|
| +
|
| +RendererExtensionRegistry::~RendererExtensionRegistry() {}
|
| +
|
| +// static
|
| +RendererExtensionRegistry* RendererExtensionRegistry::Get() {
|
| + return g_renderer_extension_registry.Pointer();
|
| +}
|
| +
|
| +const ExtensionSet* RendererExtensionRegistry::GetMainThreadExtensionSet()
|
| + const {
|
| + // This can only be modified on the RenderThread, because
|
| + // GetMainThreadExtensionSet is inherently thread unsafe.
|
| + // Enforcing single-thread modification at least mitigates this.
|
| + // TODO(annekao): Remove this restriction once GetMainThreadExtensionSet is
|
| + // fixed.
|
| + DCHECK(content::RenderThread::Get());
|
| + base::AutoLock lock(lock_);
|
| + return &extensions_;
|
| +}
|
| +
|
| +size_t RendererExtensionRegistry::size() const {
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.size();
|
| +}
|
| +
|
| +bool RendererExtensionRegistry::is_empty() const {
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.is_empty();
|
| +}
|
| +
|
| +bool RendererExtensionRegistry::Contains(
|
| + const std::string& extension_id) const {
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.Contains(extension_id);
|
| +}
|
| +
|
| +bool RendererExtensionRegistry::Insert(
|
| + const scoped_refptr<const Extension>& extension) {
|
| + DCHECK(content::RenderThread::Get());
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.Insert(extension);
|
| +}
|
| +
|
| +bool RendererExtensionRegistry::Remove(const std::string& id) {
|
| + DCHECK(content::RenderThread::Get());
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.Remove(id);
|
| +}
|
| +
|
| +std::string RendererExtensionRegistry::GetExtensionOrAppIDByURL(
|
| + const GURL& url) const {
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.GetExtensionOrAppIDByURL(url);
|
| +}
|
| +
|
| +const Extension* RendererExtensionRegistry::GetExtensionOrAppByURL(
|
| + const GURL& url) const {
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.GetExtensionOrAppByURL(url);
|
| +}
|
| +
|
| +const Extension* RendererExtensionRegistry::GetHostedAppByURL(
|
| + const GURL& url) const {
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.GetHostedAppByURL(url);
|
| +}
|
| +
|
| +const Extension* RendererExtensionRegistry::GetByID(
|
| + const std::string& id) const {
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.GetByID(id);
|
| +}
|
| +
|
| +ExtensionIdSet RendererExtensionRegistry::GetIDs() const {
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.GetIDs();
|
| +}
|
| +
|
| +bool RendererExtensionRegistry::ExtensionBindingsAllowed(
|
| + const GURL& url) const {
|
| + base::AutoLock lock(lock_);
|
| + return extensions_.ExtensionBindingsAllowed(url);
|
| +}
|
| +
|
| +} // namespace extensions
|
|
|