Chromium Code Reviews| Index: Source/WebCore/bindings/v8/ScriptController.cpp |
| diff --git a/Source/WebCore/bindings/v8/ScriptController.cpp b/Source/WebCore/bindings/v8/ScriptController.cpp |
| index 9643960ba906f6a8cbc89597e13674f0d2ac73d6..54c3d16d164bda238abe535f23d2bb51066d0e98 100644 |
| --- a/Source/WebCore/bindings/v8/ScriptController.cpp |
| +++ b/Source/WebCore/bindings/v8/ScriptController.cpp |
| @@ -33,6 +33,7 @@ |
| #include "ScriptController.h" |
| #include "PlatformSupport.h" |
| +#include "DartController.h" |
|
vsm
2011/12/05 17:20:28
We should refactor ScriptController to bindings/pu
|
| #include "Document.h" |
| #include "ScriptCallStack.h" |
| #include "ScriptCallStackFactory.h" |
| @@ -117,6 +118,8 @@ ScriptController::ScriptController(Frame* frame) |
| , m_wrappedWindowScriptNPObject(0) |
| #endif |
| { |
| + // FIXME: should be set from outside. |
| + m_controllers.set("dart", DartController::create(frame)); |
| } |
| ScriptController::~ScriptController() |
| @@ -185,6 +188,15 @@ void ScriptController::setIsolatedWorldSecurityOrigin(int worldID, PassRefPtr<Se |
| // Evaluate a script file in the environment of this proxy. |
| ScriptValue ScriptController::evaluate(const ScriptSourceCode& sourceCode) |
| { |
| + if (!sourceCode.mimeType().isEmpty()) { |
| + for (ControllerMap::iterator it = m_controllers.begin(); it != m_controllers.end(); ++it) { |
| + if (it->second->isScriptTypeSupported(sourceCode.mimeType())) { |
| + it->second->evaluate(sourceCode); |
| + return ScriptValue(); |
| + } |
| + } |
| + } |
| + |
| String sourceURL = sourceCode.url(); |
| const String* savedSourceURL = m_sourceURL; |
| m_sourceURL = &sourceURL; |
| @@ -224,6 +236,9 @@ void ScriptController::finishedWithEvent(Event* event) |
| // Create a V8 object with an interceptor of NPObjectPropertyGetter. |
| void ScriptController::bindToWindowObject(Frame* frame, const String& key, NPObject* object) |
| { |
| + for (ControllerMap::iterator it = m_controllers.begin(); it != m_controllers.end(); ++it) |
| + it->second->bindToWindowObject(frame, key, object); |
| + |
| v8::HandleScope handleScope; |
| v8::Handle<v8::Context> v8Context = V8Proxy::mainWorldContext(frame); |
| @@ -446,4 +461,20 @@ void ScriptController::namedItemRemoved(HTMLDocument* doc, const AtomicString& n |
| m_proxy->windowShell()->namedItemRemoved(doc, name); |
| } |
| +bool ScriptController::isScriptTypeSupported(const String& mimeType) |
| +{ |
| + if (mimeType.isEmpty()) |
| + return false; |
| + for (ControllerMap::iterator it = m_controllers.begin(); it != m_controllers.end(); ++it) { |
| + if (it->second->isScriptTypeSupported(mimeType)) |
| + return true; |
| + } |
| + return false; |
| +} |
| + |
| +AbstractController* ScriptController::controller(const String& name) |
| +{ |
| + return m_controllers.get(name).get(); |
| +} |
| + |
| } // namespace WebCore |