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); |
}; |