Index: chrome/renderer/extensions/chrome_v8_context_set.cc |
diff --git a/chrome/renderer/extensions/chrome_v8_context_set.cc b/chrome/renderer/extensions/chrome_v8_context_set.cc |
deleted file mode 100644 |
index 74a0a6d21e7cb47f3055b47e4a3daa81ff085a9f..0000000000000000000000000000000000000000 |
--- a/chrome/renderer/extensions/chrome_v8_context_set.cc |
+++ /dev/null |
@@ -1,138 +0,0 @@ |
-// Copyright (c) 2012 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 "chrome/renderer/extensions/chrome_v8_context_set.h" |
- |
-#include "base/logging.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/tracked_objects.h" |
-#include "base/values.h" |
-#include "chrome/common/url_constants.h" |
-#include "chrome/renderer/extensions/chrome_v8_context.h" |
-#include "content/public/renderer/render_thread.h" |
-#include "content/public/renderer/render_view.h" |
-#include "extensions/common/constants.h" |
-#include "extensions/common/extension.h" |
-#include "third_party/WebKit/public/platform/WebURL.h" |
-#include "third_party/WebKit/public/platform/WebURLRequest.h" |
-#include "third_party/WebKit/public/web/WebDocument.h" |
-#include "third_party/WebKit/public/web/WebFrame.h" |
-#include "third_party/WebKit/public/web/WebView.h" |
-#include "v8/include/v8.h" |
- |
-using content::RenderThread; |
- |
-namespace extensions { |
- |
-ChromeV8ContextSet::ChromeV8ContextSet() { |
-} |
-ChromeV8ContextSet::~ChromeV8ContextSet() { |
-} |
- |
-int ChromeV8ContextSet::size() const { |
- return static_cast<int>(contexts_.size()); |
-} |
- |
-void ChromeV8ContextSet::Add(ChromeV8Context* context) { |
-#if DCHECK_IS_ON |
- // It's OK to insert the same context twice, but we should only ever have |
- // one ChromeV8Context per v8::Context. |
- for (ContextSet::iterator iter = contexts_.begin(); iter != contexts_.end(); |
- ++iter) { |
- ChromeV8Context* candidate = *iter; |
- if (candidate != context) |
- DCHECK(candidate->v8_context() != context->v8_context()); |
- } |
-#endif |
- contexts_.insert(context); |
-} |
- |
-void ChromeV8ContextSet::Remove(ChromeV8Context* context) { |
- if (contexts_.erase(context)) { |
- context->Invalidate(); |
- base::MessageLoop::current()->DeleteSoon(FROM_HERE, context); |
- } |
-} |
- |
-ChromeV8ContextSet::ContextSet ChromeV8ContextSet::GetAll() const { |
- return contexts_; |
-} |
- |
-ChromeV8Context* ChromeV8ContextSet::GetCurrent() const { |
- v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
- return isolate->InContext() ? GetByV8Context(isolate->GetCurrentContext()) |
- : NULL; |
-} |
- |
-ChromeV8Context* ChromeV8ContextSet::GetCalling() const { |
- v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
- v8::Local<v8::Context> calling = isolate->GetCallingContext(); |
- return calling.IsEmpty() ? NULL : GetByV8Context(calling); |
-} |
- |
-ChromeV8Context* ChromeV8ContextSet::GetByV8Context( |
- v8::Handle<v8::Context> v8_context) const { |
- for (ContextSet::const_iterator iter = contexts_.begin(); |
- iter != contexts_.end(); ++iter) { |
- if ((*iter)->v8_context() == v8_context) |
- return *iter; |
- } |
- |
- return NULL; |
-} |
- |
-void ChromeV8ContextSet::ForEach( |
- const std::string& extension_id, |
- content::RenderView* render_view, |
- const base::Callback<void(ChromeV8Context*)>& callback) const { |
- // We copy the context list, because calling into javascript may modify it |
- // out from under us. |
- ContextSet contexts = GetAll(); |
- |
- for (ContextSet::iterator it = contexts.begin(); it != contexts.end(); |
- ++it) { |
- ChromeV8Context* context = *it; |
- |
- // For the same reason as above, contexts may become invalid while we run. |
- if (!context->is_valid()) |
- continue; |
- |
- if (!extension_id.empty()) { |
- const Extension* extension = context->extension(); |
- if (!extension || (extension_id != extension->id())) |
- continue; |
- } |
- |
- content::RenderView* context_render_view = context->GetRenderView(); |
- if (!context_render_view) |
- continue; |
- |
- if (render_view && render_view != context_render_view) |
- continue; |
- |
- callback.Run(context); |
- } |
-} |
- |
-ChromeV8ContextSet::ContextSet ChromeV8ContextSet::OnExtensionUnloaded( |
- const std::string& extension_id) { |
- ContextSet contexts = GetAll(); |
- ContextSet removed; |
- |
- // Clean up contexts belonging to the unloaded extension. This is done so |
- // that content scripts (which remain injected into the page) don't continue |
- // receiving events and sending messages. |
- for (ContextSet::iterator it = contexts.begin(); it != contexts.end(); |
- ++it) { |
- if ((*it)->extension() && (*it)->extension()->id() == extension_id) { |
- (*it)->DispatchOnUnloadEvent(); |
- removed.insert(*it); |
- Remove(*it); |
- } |
- } |
- |
- return removed; |
-} |
- |
-} // namespace extensions |