Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Unified Diff: extensions/renderer/script_context_set.h

Issue 1013823003: Revert of Move Extension ScriptContext creation into ScriptContextSet. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/renderer/script_context.cc ('k') | extensions/renderer/script_context_set.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
};
« no previous file with comments | « extensions/renderer/script_context.cc ('k') | extensions/renderer/script_context_set.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698