| Index: extensions/renderer/script_context_set.h
|
| diff --git a/extensions/renderer/script_context_set.h b/extensions/renderer/script_context_set.h
|
| index ac3cb17840934007023ec4dc66017e54a5e73033..aa7b253d57742bbff456be1c06a024a87ce2dcbf 100644
|
| --- a/extensions/renderer/script_context_set.h
|
| +++ b/extensions/renderer/script_context_set.h
|
| @@ -8,12 +8,8 @@
|
| #include <set>
|
| #include <string>
|
|
|
| -#include "base/macros.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "extensions/common/extension.h"
|
| -#include "extensions/common/extension_set.h"
|
| -#include "extensions/common/features/feature.h"
|
| -#include "url/gurl.h"
|
| +#include "base/basictypes.h"
|
| +#include "base/bind.h"
|
| #include "v8/include/v8.h"
|
|
|
| class GURL;
|
| @@ -22,49 +18,38 @@
|
| class ListValue;
|
| }
|
|
|
| -namespace blink {
|
| -class WebLocalFrame;
|
| -class WebSecurityOrigin;
|
| +namespace content {
|
| +class RenderView;
|
| }
|
|
|
| -namespace content {
|
| -class RenderView;
|
| +namespace v8 {
|
| +class Context;
|
| }
|
|
|
| namespace extensions {
|
| class ScriptContext;
|
|
|
| -// A container of ScriptContexts, responsible for both creating and managing
|
| -// them.
|
| -//
|
| -// Since calling JavaScript within a context can cause any number of contexts
|
| -// to be created or destroyed, this has additional smarts to help with the set
|
| -// changing underneath callers.
|
| +// A container of ExtensionBindingsContext. Since calling JavaScript within a
|
| +// context can cause any number of contexts to be created or destroyed, this
|
| +// has additional smarts to help with the set changing underneath callers.
|
| class ScriptContextSet {
|
| public:
|
| - ScriptContextSet(
|
| - ExtensionSet* extensions,
|
| - // Set of the IDs of extensions that are active in this process.
|
| - // Must outlive this. TODO(kalman): Combine this and |extensions|.
|
| - ExtensionIdSet* active_extension_ids);
|
| -
|
| + ScriptContextSet();
|
| ~ScriptContextSet();
|
|
|
| - // Returns the number of contexts being tracked by this set.
|
| - // This may also include invalid contexts. TODO(kalman): Useful?
|
| - size_t size() const { return contexts_.size(); }
|
| + int size() const;
|
|
|
| - // Creates and starts managing a new ScriptContext. Ownership is held.
|
| - // Returns a weak reference to the new ScriptContext.
|
| - ScriptContext* Register(blink::WebLocalFrame* frame,
|
| - const v8::Handle<v8::Context>& v8_context,
|
| - int extension_group,
|
| - int world_id);
|
| + // Takes ownership of |context|.
|
| + void Add(ScriptContext* context);
|
|
|
| // If the specified context is contained in this set, remove it, then delete
|
| // it asynchronously. After this call returns the context object will still
|
| // be valid, but its frame() pointer will be cleared.
|
| void Remove(ScriptContext* context);
|
| +
|
| + // Returns a copy to protect against changes.
|
| + typedef std::set<ScriptContext*> ContextSet;
|
| + ContextSet GetAll() const;
|
|
|
| // Gets the ScriptContext corresponding to v8::Context::GetCurrent(), or
|
| // NULL if no such context exists.
|
| @@ -76,7 +61,7 @@
|
|
|
| // Gets the ScriptContext corresponding to the specified
|
| // v8::Context or NULL if no such context exists.
|
| - ScriptContext* GetByV8Context(const v8::Handle<v8::Context>& context) const;
|
| + ScriptContext* GetByV8Context(v8::Handle<v8::Context> context) const;
|
|
|
| // Synchronously runs |callback| with each ScriptContext that belongs to
|
| // |extension_id| in |render_view|.
|
| @@ -103,39 +88,10 @@
|
| // Returns the set of ScriptContexts that were removed as a result. These
|
| // are safe to interact with until the end of the current event loop, since
|
| // they're deleted asynchronously.
|
| - std::set<ScriptContext*> OnExtensionUnloaded(const std::string& extension_id);
|
| + ContextSet OnExtensionUnloaded(const std::string& extension_id);
|
|
|
| private:
|
| - // Finds the extension for the JavaScript context associated with the
|
| - // specified |frame| and isolated world. If |world_id| is zero, finds the
|
| - // extension ID associated with the main world's JavaScript context. If the
|
| - // JavaScript context isn't from an extension, returns empty string.
|
| - const Extension* GetExtensionFromFrameAndWorld(
|
| - const blink::WebLocalFrame* frame,
|
| - int world_id,
|
| - bool use_effective_url);
|
| -
|
| - // Returns the Feature::Context type of context for a JavaScript context.
|
| - Feature::Context ClassifyJavaScriptContext(
|
| - const Extension* extension,
|
| - int extension_group,
|
| - const GURL& url,
|
| - const blink::WebSecurityOrigin& origin);
|
| -
|
| - // Calls Remove on |context| then appends |context| to |out|.
|
| - // This is a helper designed to be used by OnExtensionUnloaded with ForEach.
|
| - void DispatchOnUnloadEventAndRemove(std::set<ScriptContext*>* out,
|
| - ScriptContext* context);
|
| -
|
| - // Weak reference to all installed Extensions.
|
| - ExtensionSet* extensions_;
|
| -
|
| - // Weak reference to all installed Extensions that are also active in this
|
| - // process.
|
| - ExtensionIdSet* active_extension_ids_;
|
| -
|
| - // The set of all ScriptContexts we own.
|
| - std::set<ScriptContext*> contexts_;
|
| + ContextSet contexts_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ScriptContextSet);
|
| };
|
|
|