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

Unified Diff: Source/bindings/core/dart/DartInjectedScriptManager.cpp

Issue 1532413002: Added Dartium changes onto 45.0.2454.104 (Closed) Base URL: http://src.chromium.org/blink/branches/chromium/2454
Patch Set: Created 5 years 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
Index: Source/bindings/core/dart/DartInjectedScriptManager.cpp
diff --git a/Source/core/inspector/InjectedScriptManager.cpp b/Source/bindings/core/dart/DartInjectedScriptManager.cpp
similarity index 53%
copy from Source/core/inspector/InjectedScriptManager.cpp
copy to Source/bindings/core/dart/DartInjectedScriptManager.cpp
index c50a7d1d5c7b7b16241ffd23ab88f2b295a559a8..6bced3471e1e9522b29e08d1aec7a75386aaa8bf 100644
--- a/Source/core/inspector/InjectedScriptManager.cpp
+++ b/Source/bindings/core/dart/DartInjectedScriptManager.cpp
@@ -29,12 +29,13 @@
*/
#include "config.h"
-#include "core/inspector/InjectedScriptManager.h"
+#include "bindings/core/dart/DartInjectedScriptManager.h"
-#include "bindings/core/v8/ScriptValue.h"
-#include "core/inspector/InjectedScript.h"
+#include "bindings/common/ScriptValue.h"
+#include "bindings/core/dart/DartInjectedScript.h"
+#include "bindings/core/dart/DartScriptState.h"
#include "core/inspector/InjectedScriptHost.h"
-#include "core/inspector/InjectedScriptNative.h"
+#include "core/inspector/InjectedScriptManager.h"
#include "core/inspector/JSONParser.h"
#include "platform/JSONValues.h"
#include "public/platform/Platform.h"
@@ -43,57 +44,35 @@
namespace blink {
-PassOwnPtrWillBeRawPtr<InjectedScriptManager> InjectedScriptManager::createForPage()
-{
- return adoptPtrWillBeNoop(new InjectedScriptManager(&InjectedScriptManager::canAccessInspectedWindow));
-}
-
-PassOwnPtrWillBeRawPtr<InjectedScriptManager> InjectedScriptManager::createForWorker()
-{
- return adoptPtrWillBeNoop(new InjectedScriptManager(&InjectedScriptManager::canAccessInspectedWorkerGlobalScope));
-}
-
-InjectedScriptManager::InjectedScriptManager(InspectedStateAccessCheck accessCheck)
- : m_nextInjectedScriptId(1)
- , m_injectedScriptHost(InjectedScriptHost::create())
+DartInjectedScriptManager::DartInjectedScriptManager(InspectedStateAccessCheck accessCheck, InjectedScriptManager* javaScriptInjectedScriptManager)
+ : m_nextInjectedScriptId(1000000000) // Elegant design so that Dart and JavaScript ids don't overlap.
, m_inspectedStateAccessCheck(accessCheck)
- , m_customObjectFormatterEnabled(false)
+ , m_javaScriptInjectedScriptManager(javaScriptInjectedScriptManager)
{
}
-InjectedScriptManager::~InjectedScriptManager()
+DartInjectedScriptManager::~DartInjectedScriptManager()
{
}
-DEFINE_TRACE(InjectedScriptManager)
+InjectedScriptHost* DartInjectedScriptManager::injectedScriptHost()
{
- visitor->trace(m_injectedScriptHost);
+ return m_javaScriptInjectedScriptManager->injectedScriptHost();
}
-void InjectedScriptManager::disconnect()
-{
- m_injectedScriptHost->disconnect();
- m_injectedScriptHost.clear();
-}
-
-InjectedScriptHost* InjectedScriptManager::injectedScriptHost()
-{
- return m_injectedScriptHost.get();
-}
-
-InjectedScript InjectedScriptManager::injectedScriptForId(int id)
+DartInjectedScript* DartInjectedScriptManager::injectedScriptForId(int id)
{
IdToInjectedScriptMap::iterator it = m_idToInjectedScript.find(id);
if (it != m_idToInjectedScript.end())
return it->value;
- for (auto& state : m_scriptStateToId) {
- if (state.value == id)
- return injectedScriptFor(state.key.get());
+ for (ScriptStateToId::iterator it = m_scriptStateToId.begin(); it != m_scriptStateToId.end(); ++it) {
+ if (it->value == id)
+ return injectedScriptFor(it->key.get());
}
- return InjectedScript();
+ return 0;
}
-int InjectedScriptManager::injectedScriptIdFor(ScriptState* scriptState)
+int DartInjectedScriptManager::injectedScriptIdFor(ScriptState* scriptState)
{
ScriptStateToId::iterator it = m_scriptStateToId.find(scriptState);
if (it != m_scriptStateToId.end())
@@ -103,68 +82,76 @@ int InjectedScriptManager::injectedScriptIdFor(ScriptState* scriptState)
return id;
}
-InjectedScript InjectedScriptManager::injectedScriptForObjectId(const String& objectId)
+DartInjectedScript* DartInjectedScriptManager::injectedScriptForObjectId(const String& objectId)
{
RefPtr<JSONValue> parsedObjectId = parseJSON(objectId);
if (parsedObjectId && parsedObjectId->type() == JSONValue::TypeObject) {
long injectedScriptId = 0;
bool success = parsedObjectId->asObject()->getNumber("injectedScriptId", &injectedScriptId);
- if (success)
- return m_idToInjectedScript.get(injectedScriptId);
+ if (success) {
+ IdToInjectedScriptMap::iterator s = m_idToInjectedScript.find(injectedScriptId);
+ if (s != m_idToInjectedScript.end())
+ return s->value;
+ }
}
- return InjectedScript();
+ return 0;
}
-void InjectedScriptManager::discardInjectedScripts()
+void DartInjectedScriptManager::discardInjectedScripts()
{
m_idToInjectedScript.clear();
m_scriptStateToId.clear();
}
-void InjectedScriptManager::discardInjectedScriptFor(ScriptState* scriptState)
+void DartInjectedScriptManager::discardInjectedScriptsFor(LocalDOMWindow* window)
{
- ScriptStateToId::iterator it = m_scriptStateToId.find(scriptState);
- if (it == m_scriptStateToId.end())
+ if (m_scriptStateToId.isEmpty())
return;
- m_idToInjectedScript.remove(it->value);
- m_scriptStateToId.remove(it);
+ Vector<long> idsToRemove;
+ IdToInjectedScriptMap::iterator end = m_idToInjectedScript.end();
+ for (IdToInjectedScriptMap::iterator it = m_idToInjectedScript.begin(); it != end; ++it) {
+ ScriptState* scriptState = it->value->scriptState();
+ if (window != scriptState->domWindow())
+ continue;
+ m_scriptStateToId.remove(scriptState);
+ idsToRemove.append(it->key);
+ }
+ for (size_t i = 0; i < idsToRemove.size(); i++)
+ delete m_idToInjectedScript.get(idsToRemove[i]);
+ m_idToInjectedScript.removeAll(idsToRemove);
+
+
+ // Now remove script states that have id but no injected script.
+ Vector<ScriptState*> scriptStatesToRemove;
+ for (ScriptStateToId::iterator it = m_scriptStateToId.begin(); it != m_scriptStateToId.end(); ++it) {
+ ScriptState* scriptState = it->key.get();
+ if (window == scriptState->domWindow())
+ scriptStatesToRemove.append(scriptState);
+ }
+ m_scriptStateToId.removeAll(scriptStatesToRemove);
}
-bool InjectedScriptManager::canAccessInspectedWorkerGlobalScope(ScriptState*)
+bool DartInjectedScriptManager::canAccessInspectedWorkerGlobalScope(ScriptState*)
{
return true;
}
-void InjectedScriptManager::releaseObjectGroup(const String& objectGroup)
+void DartInjectedScriptManager::releaseObjectGroup(const String& objectGroup)
{
Vector<int> keys;
keys.appendRange(m_idToInjectedScript.keys().begin(), m_idToInjectedScript.keys().end());
- for (auto& key : keys) {
- IdToInjectedScriptMap::iterator s = m_idToInjectedScript.find(key);
+ for (Vector<int>::iterator k = keys.begin(); k != keys.end(); ++k) {
+ IdToInjectedScriptMap::iterator s = m_idToInjectedScript.find(*k);
if (s != m_idToInjectedScript.end())
- s->value.releaseObjectGroup(objectGroup); // m_idToInjectedScript may change here.
- }
-}
-
-void InjectedScriptManager::setCustomObjectFormatterEnabled(bool enabled)
-{
- m_customObjectFormatterEnabled = enabled;
- IdToInjectedScriptMap::iterator end = m_idToInjectedScript.end();
- for (IdToInjectedScriptMap::iterator it = m_idToInjectedScript.begin(); it != end; ++it) {
- if (!it->value.isEmpty())
- it->value.setCustomObjectFormatterEnabled(enabled);
+ s->value->releaseObjectGroup(objectGroup); // m_idToInjectedScript may change here.
}
}
-String InjectedScriptManager::injectedScriptSource()
-{
- const WebData& injectedScriptSourceResource = Platform::current()->loadResource("InjectedScriptSource.js");
- return String(injectedScriptSourceResource.data(), injectedScriptSourceResource.size());
-}
-
-InjectedScript InjectedScriptManager::injectedScriptFor(ScriptState* inspectedScriptState)
+DartInjectedScript* DartInjectedScriptManager::injectedScriptFor(ScriptState* inspectedScriptState)
{
+ if (!inspectedScriptState)
+ return 0;
ScriptStateToId::iterator it = m_scriptStateToId.find(inspectedScriptState);
if (it != m_scriptStateToId.end()) {
IdToInjectedScriptMap::iterator it1 = m_idToInjectedScript.find(it->value);
@@ -173,16 +160,16 @@ InjectedScript InjectedScriptManager::injectedScriptFor(ScriptState* inspectedSc
}
if (!m_inspectedStateAccessCheck(inspectedScriptState))
- return InjectedScript();
+ return 0;
int id = injectedScriptIdFor(inspectedScriptState);
- RefPtr<InjectedScriptNative> injectedScriptNative = adoptRef(new InjectedScriptNative(inspectedScriptState->isolate()));
- ScriptValue injectedScriptValue = createInjectedScript(injectedScriptSource(), inspectedScriptState, id, injectedScriptNative.get());
- InjectedScript result(injectedScriptValue, m_inspectedStateAccessCheck, injectedScriptNative.release());
- if (m_customObjectFormatterEnabled)
- result.setCustomObjectFormatterEnabled(m_customObjectFormatterEnabled);
+
+ DartInjectedScript* result;
+ ASSERT(!inspectedScriptState->isJavaScript());
+ result = new DartInjectedScript(static_cast<DartScriptState*>(inspectedScriptState), m_inspectedStateAccessCheck, id, injectedScriptHost(), m_javaScriptInjectedScriptManager);
m_idToInjectedScript.set(id, result);
return result;
}
} // namespace blink
+
« no previous file with comments | « Source/bindings/core/dart/DartInjectedScriptManager.h ('k') | Source/bindings/core/dart/DartInspectorConsoleMessage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698