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

Side by Side Diff: Source/WebCore/bindings/v8/ScriptController.cpp

Issue 8806015: Changes to support a second VM. (Closed) Base URL: svn://svn.chromium.org/dash/experimental/chrome/src/webkit-full
Patch Set: . Created 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved.
3 * Copyright (C) 2009 Apple Inc. All rights reserved. 3 * Copyright (C) 2009 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 15 matching lines...) Expand all
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32 #include "config.h" 32 #include "config.h"
33 #include "ScriptController.h" 33 #include "ScriptController.h"
34 34
35 #include "PlatformSupport.h" 35 #include "PlatformSupport.h"
36 #include "DartController.h"
vsm 2011/12/05 17:20:28 We should refactor ScriptController to bindings/pu
36 #include "Document.h" 37 #include "Document.h"
37 #include "ScriptCallStack.h" 38 #include "ScriptCallStack.h"
38 #include "ScriptCallStackFactory.h" 39 #include "ScriptCallStackFactory.h"
39 #include "ScriptableDocumentParser.h" 40 #include "ScriptableDocumentParser.h"
40 #include "DOMWindow.h" 41 #include "DOMWindow.h"
41 #include "Event.h" 42 #include "Event.h"
42 #include "EventListener.h" 43 #include "EventListener.h"
43 #include "EventNames.h" 44 #include "EventNames.h"
44 #include "Frame.h" 45 #include "Frame.h"
45 #include "FrameLoaderClient.h" 46 #include "FrameLoaderClient.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 ScriptController::ScriptController(Frame* frame) 111 ScriptController::ScriptController(Frame* frame)
111 : m_frame(frame) 112 : m_frame(frame)
112 , m_sourceURL(0) 113 , m_sourceURL(0)
113 , m_inExecuteScript(false) 114 , m_inExecuteScript(false)
114 , m_paused(false) 115 , m_paused(false)
115 , m_proxy(adoptPtr(new V8Proxy(frame))) 116 , m_proxy(adoptPtr(new V8Proxy(frame)))
116 #if ENABLE(NETSCAPE_PLUGIN_API) 117 #if ENABLE(NETSCAPE_PLUGIN_API)
117 , m_wrappedWindowScriptNPObject(0) 118 , m_wrappedWindowScriptNPObject(0)
118 #endif 119 #endif
119 { 120 {
121 // FIXME: should be set from outside.
122 m_controllers.set("dart", DartController::create(frame));
120 } 123 }
121 124
122 ScriptController::~ScriptController() 125 ScriptController::~ScriptController()
123 { 126 {
124 } 127 }
125 128
126 void ScriptController::clearScriptObjects() 129 void ScriptController::clearScriptObjects()
127 { 130 {
128 PluginObjectMap::iterator it = m_pluginObjects.begin(); 131 PluginObjectMap::iterator it = m_pluginObjects.begin();
129 for (; it != m_pluginObjects.end(); ++it) { 132 for (; it != m_pluginObjects.end(); ++it) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 } 181 }
179 182
180 void ScriptController::setIsolatedWorldSecurityOrigin(int worldID, PassRefPtr<Se curityOrigin> securityOrigin) 183 void ScriptController::setIsolatedWorldSecurityOrigin(int worldID, PassRefPtr<Se curityOrigin> securityOrigin)
181 { 184 {
182 m_proxy->setIsolatedWorldSecurityOrigin(worldID, securityOrigin); 185 m_proxy->setIsolatedWorldSecurityOrigin(worldID, securityOrigin);
183 } 186 }
184 187
185 // Evaluate a script file in the environment of this proxy. 188 // Evaluate a script file in the environment of this proxy.
186 ScriptValue ScriptController::evaluate(const ScriptSourceCode& sourceCode) 189 ScriptValue ScriptController::evaluate(const ScriptSourceCode& sourceCode)
187 { 190 {
191 if (!sourceCode.mimeType().isEmpty()) {
192 for (ControllerMap::iterator it = m_controllers.begin(); it != m_control lers.end(); ++it) {
193 if (it->second->isScriptTypeSupported(sourceCode.mimeType())) {
194 it->second->evaluate(sourceCode);
195 return ScriptValue();
196 }
197 }
198 }
199
188 String sourceURL = sourceCode.url(); 200 String sourceURL = sourceCode.url();
189 const String* savedSourceURL = m_sourceURL; 201 const String* savedSourceURL = m_sourceURL;
190 m_sourceURL = &sourceURL; 202 m_sourceURL = &sourceURL;
191 203
192 v8::HandleScope handleScope; 204 v8::HandleScope handleScope;
193 v8::Handle<v8::Context> v8Context = V8Proxy::mainWorldContext(m_proxy->frame ()); 205 v8::Handle<v8::Context> v8Context = V8Proxy::mainWorldContext(m_proxy->frame ());
194 if (v8Context.IsEmpty()) 206 if (v8Context.IsEmpty())
195 return ScriptValue(); 207 return ScriptValue();
196 208
197 v8::Context::Scope scope(v8Context); 209 v8::Context::Scope scope(v8Context);
(...skipping 19 matching lines...) Expand all
217 } 229 }
218 230
219 void ScriptController::finishedWithEvent(Event* event) 231 void ScriptController::finishedWithEvent(Event* event)
220 { 232 {
221 m_proxy->finishedWithEvent(event); 233 m_proxy->finishedWithEvent(event);
222 } 234 }
223 235
224 // Create a V8 object with an interceptor of NPObjectPropertyGetter. 236 // Create a V8 object with an interceptor of NPObjectPropertyGetter.
225 void ScriptController::bindToWindowObject(Frame* frame, const String& key, NPObj ect* object) 237 void ScriptController::bindToWindowObject(Frame* frame, const String& key, NPObj ect* object)
226 { 238 {
239 for (ControllerMap::iterator it = m_controllers.begin(); it != m_controllers .end(); ++it)
240 it->second->bindToWindowObject(frame, key, object);
241
227 v8::HandleScope handleScope; 242 v8::HandleScope handleScope;
228 243
229 v8::Handle<v8::Context> v8Context = V8Proxy::mainWorldContext(frame); 244 v8::Handle<v8::Context> v8Context = V8Proxy::mainWorldContext(frame);
230 if (v8Context.IsEmpty()) 245 if (v8Context.IsEmpty())
231 return; 246 return;
232 247
233 v8::Context::Scope scope(v8Context); 248 v8::Context::Scope scope(v8Context);
234 249
235 v8::Handle<v8::Object> value = createV8ObjectForNPObject(object, 0); 250 v8::Handle<v8::Object> value = createV8ObjectForNPObject(object, 0);
236 251
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 void ScriptController::namedItemAdded(HTMLDocument* doc, const AtomicString& nam e) 454 void ScriptController::namedItemAdded(HTMLDocument* doc, const AtomicString& nam e)
440 { 455 {
441 m_proxy->windowShell()->namedItemAdded(doc, name); 456 m_proxy->windowShell()->namedItemAdded(doc, name);
442 } 457 }
443 458
444 void ScriptController::namedItemRemoved(HTMLDocument* doc, const AtomicString& n ame) 459 void ScriptController::namedItemRemoved(HTMLDocument* doc, const AtomicString& n ame)
445 { 460 {
446 m_proxy->windowShell()->namedItemRemoved(doc, name); 461 m_proxy->windowShell()->namedItemRemoved(doc, name);
447 } 462 }
448 463
464 bool ScriptController::isScriptTypeSupported(const String& mimeType)
465 {
466 if (mimeType.isEmpty())
467 return false;
468 for (ControllerMap::iterator it = m_controllers.begin(); it != m_controllers .end(); ++it) {
469 if (it->second->isScriptTypeSupported(mimeType))
470 return true;
471 }
472 return false;
473 }
474
475 AbstractController* ScriptController::controller(const String& name)
476 {
477 return m_controllers.get(name).get();
478 }
479
449 } // namespace WebCore 480 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/bindings/v8/ScriptController.h ('k') | Source/WebCore/bindings/v8/ScriptSourceCode.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698