Chromium Code Reviews| Index: extensions/renderer/renderer_extension_registry.h |
| diff --git a/extensions/renderer/renderer_extension_registry.h b/extensions/renderer/renderer_extension_registry.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4802875fd5ffcc82760cb79968116752b1a4318a |
| --- /dev/null |
| +++ b/extensions/renderer/renderer_extension_registry.h |
| @@ -0,0 +1,82 @@ |
| +// 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. |
| + |
| +#ifndef EXTENSIONS_RENDERER_RENDERER_EXTENSION_REGISTRY_H_ |
| +#define EXTENSIONS_RENDERER_RENDERER_EXTENSION_REGISTRY_H_ |
| + |
| +#include <iterator> |
| +#include <string> |
| + |
| +#include "base/synchronization/lock.h" |
| +#include "extensions/common/extension.h" |
| +#include "extensions/common/extension_set.h" |
| +#include "url/gurl.h" |
| + |
| +namespace extensions { |
| + |
| +// Thread safe container for all loaded extensions in this process, |
| +// essentially the renderer counterpart to ExtensionRegistry. |
| +class RendererExtensionRegistry { |
| + public: |
| + RendererExtensionRegistry(); |
| + ~RendererExtensionRegistry(); |
| + |
| + static RendererExtensionRegistry* Get(); |
| + |
| + const ExtensionSet* GetMainThreadExtensionSet() const; |
|
Devlin
2015/08/18 15:40:55
This should definitely have a comment, and probabl
annekao
2015/08/18 17:43:31
Done.
|
| + |
| + size_t size() const; |
| + bool is_empty() const; |
| + |
| + // Iteration support. |
| + ExtensionSet::const_iterator begin() const { return extensions_.begin(); } |
|
Devlin
2015/08/18 15:40:55
This is thread-unsafe. If the main thread acquire
annekao
2015/08/18 17:43:31
Done. Used in IsRuntimeAvailableToConnect() and U
|
| + ExtensionSet::const_iterator end() const { return extensions_.end(); } |
| + |
| + // Returns true if the set contains the specified extension. |
| + bool Contains(const std::string& id) const; |
|
Devlin
2015/08/18 15:40:55
I think for these you can (and probably should) ju
annekao
2015/08/18 17:43:31
Done.
|
| + |
| + // Adds the specified extension to the set. The set becomes an owner. Any |
| + // previous extension with the same ID is removed. |
| + // Returns true if there is no previous extension. |
| + bool Insert(const scoped_refptr<const Extension>& extension); |
| + |
| + // Removes the specified extension. |
| + // Returns true if the set contained the specified extnesion. |
| + bool Remove(const std::string& id); |
| + |
| + // Returns the extension ID, or empty if none. This includes web URLs that |
| + // are part of an extension's web extent. |
| + std::string GetExtensionOrAppIDByURL(const GURL& url) const; |
| + |
| + // Returns the Extension, or NULL if none. This includes web URLs that are |
| + // part of an extension's web extent. |
| + // NOTE: This can return NULL if called before UpdateExtensions receives |
| + // bulk extension data (e.g. if called from |
| + // EventBindings::HandleContextCreated) |
| + const Extension* GetExtensionOrAppByURL(const GURL& url) const; |
| + |
| + const Extension* GetHostedAppByURL(const GURL& url) const; |
| + |
| + // Look up an Extension object by id. |
| + const Extension* GetByID(const std::string& id) const; |
| + |
| + // Gets the IDs of all extensions in the set. |
| + ExtensionIdSet GetIDs() const; |
| + |
| + // Returns true if |info| should get extension api bindings and be permitted |
| + // to make api calls. Note that this is independent of what extension |
| + // permissions the given extension has been granted. |
| + bool ExtensionBindingsAllowed(const GURL& url) const; |
| + |
| + private: |
| + ExtensionSet extensions_; |
| + |
| + mutable base::Lock lock_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(RendererExtensionRegistry); |
| +}; |
| + |
| +} // namespace extensions |
| + |
| +#endif // EXTENSIONS_RENDERER_RENDERER_EXTENSION_REGISTRY_H_ |