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

Side by Side Diff: Source/bindings/core/v8/PageScriptDebugServer.cpp

Issue 847803002: Make ScriptStreamer and dependents Oilpan friendly. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add ScriptSourceCode::isNull() comment Created 5 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 Google Inc. All rights reserved. 2 * Copyright (c) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 15 matching lines...) Expand all
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "bindings/core/v8/PageScriptDebugServer.h" 32 #include "bindings/core/v8/PageScriptDebugServer.h"
33 33
34 #include "bindings/core/v8/DOMWrapperWorld.h" 34 #include "bindings/core/v8/DOMWrapperWorld.h"
35 #include "bindings/core/v8/ScriptController.h" 35 #include "bindings/core/v8/ScriptController.h"
36 #include "bindings/core/v8/ScriptPreprocessor.h"
36 #include "bindings/core/v8/ScriptSourceCode.h" 37 #include "bindings/core/v8/ScriptSourceCode.h"
37 #include "bindings/core/v8/V8Binding.h" 38 #include "bindings/core/v8/V8Binding.h"
38 #include "bindings/core/v8/V8ScriptRunner.h" 39 #include "bindings/core/v8/V8ScriptRunner.h"
39 #include "bindings/core/v8/V8Window.h" 40 #include "bindings/core/v8/V8Window.h"
40 #include "bindings/core/v8/WindowProxy.h" 41 #include "bindings/core/v8/WindowProxy.h"
41 #include "core/frame/FrameConsole.h" 42 #include "core/frame/FrameConsole.h"
42 #include "core/frame/FrameHost.h" 43 #include "core/frame/FrameHost.h"
43 #include "core/frame/LocalFrame.h" 44 #include "core/frame/LocalFrame.h"
44 #include "core/frame/UseCounter.h" 45 #include "core/frame/UseCounter.h"
45 #include "core/inspector/InspectorInstrumentation.h" 46 #include "core/inspector/InspectorInstrumentation.h"
(...skipping 24 matching lines...) Expand all
70 v8::Handle<v8::Value> global = V8Window::findInstanceInPrototypeChain(contex t->Global(), context->GetIsolate()); 71 v8::Handle<v8::Value> global = V8Window::findInstanceInPrototypeChain(contex t->Global(), context->GetIsolate());
71 if (global.IsEmpty()) 72 if (global.IsEmpty())
72 return 0; 73 return 0;
73 74
74 return toFrameIfNotDetached(context); 75 return toFrameIfNotDetached(context);
75 } 76 }
76 77
77 void PageScriptDebugServer::setPreprocessorSource(const String& preprocessorSour ce) 78 void PageScriptDebugServer::setPreprocessorSource(const String& preprocessorSour ce)
78 { 79 {
79 if (preprocessorSource.isEmpty()) 80 if (preprocessorSource.isEmpty())
80 m_preprocessorSourceCode.clear(); 81 m_preprocessorSourceCode = ScriptSourceCode();
81 else 82 else
82 m_preprocessorSourceCode = adoptPtr(new ScriptSourceCode(preprocessorSou rce)); 83 m_preprocessorSourceCode = ScriptSourceCode(preprocessorSource);
83 m_scriptPreprocessor.clear(); 84 m_scriptPreprocessor.clear();
84 } 85 }
85 86
86 PageScriptDebugServer& PageScriptDebugServer::shared() 87 PageScriptDebugServer& PageScriptDebugServer::shared()
87 { 88 {
88 DEFINE_STATIC_LOCAL(PageScriptDebugServer, server, ()); 89 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<PageScriptDebugServer>, server, ( adoptPtrWillBeNoop(new PageScriptDebugServer())));
89 return server; 90 return *server;
90 } 91 }
91 92
92 v8::Isolate* PageScriptDebugServer::s_mainThreadIsolate = 0; 93 v8::Isolate* PageScriptDebugServer::s_mainThreadIsolate = 0;
93 94
94 void PageScriptDebugServer::setMainThreadIsolate(v8::Isolate* isolate) 95 void PageScriptDebugServer::setMainThreadIsolate(v8::Isolate* isolate)
95 { 96 {
96 s_mainThreadIsolate = isolate; 97 s_mainThreadIsolate = isolate;
97 } 98 }
98 99
99 PageScriptDebugServer::PageScriptDebugServer() 100 PageScriptDebugServer::PageScriptDebugServer()
100 : ScriptDebugServer(s_mainThreadIsolate) 101 : ScriptDebugServer(s_mainThreadIsolate)
101 , m_pausedPage(0) 102 , m_pausedPage(nullptr)
103 , m_preprocessorSourceCode()
102 { 104 {
103 } 105 }
104 106
105 PageScriptDebugServer::~PageScriptDebugServer() 107 PageScriptDebugServer::~PageScriptDebugServer()
106 { 108 {
107 } 109 }
108 110
111 void PageScriptDebugServer::trace(Visitor* visitor)
112 {
113 #if ENABLE(OILPAN)
114 visitor->trace(m_listenersMap);
115 visitor->trace(m_pausedPage);
116 visitor->trace(m_preprocessorSourceCode);
117 #endif
118 ScriptDebugServer::trace(visitor);
119 }
120
109 void PageScriptDebugServer::addListener(ScriptDebugListener* listener, Page* pag e) 121 void PageScriptDebugServer::addListener(ScriptDebugListener* listener, Page* pag e)
110 { 122 {
111 ScriptController& scriptController = page->deprecatedLocalMainFrame()->scrip t(); 123 ScriptController& scriptController = page->deprecatedLocalMainFrame()->scrip t();
112 if (!scriptController.canExecuteScripts(NotAboutToExecuteScript)) 124 if (!scriptController.canExecuteScripts(NotAboutToExecuteScript))
113 return; 125 return;
114 126
115 v8::HandleScope scope(m_isolate); 127 v8::HandleScope scope(m_isolate);
116 128
117 if (!m_listenersMap.size()) { 129 if (!m_listenersMap.size()) {
118 v8::Debug::SetDebugEventListener(&PageScriptDebugServer::v8DebugEventCal lback, v8::External::New(m_isolate, this)); 130 v8::Debug::SetDebugEventListener(&PageScriptDebugServer::v8DebugEventCal lback, v8::External::New(m_isolate, this));
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 v8::Handle<v8::Value> argvPreprocessedScript[] = { eventData, v8String(debug Context->GetIsolate(), preprocessedSource) }; 275 v8::Handle<v8::Value> argvPreprocessedScript[] = { eventData, v8String(debug Context->GetIsolate(), preprocessedSource) };
264 callDebuggerMethod("setScriptSource", WTF_ARRAY_LENGTH(argvPreprocessedScrip t), argvPreprocessedScript); 276 callDebuggerMethod("setScriptSource", WTF_ARRAY_LENGTH(argvPreprocessedScrip t), argvPreprocessedScript);
265 } 277 }
266 278
267 static bool isCreatingPreprocessor = false; 279 static bool isCreatingPreprocessor = false;
268 280
269 bool PageScriptDebugServer::canPreprocess(LocalFrame* frame) 281 bool PageScriptDebugServer::canPreprocess(LocalFrame* frame)
270 { 282 {
271 ASSERT(frame); 283 ASSERT(frame);
272 284
273 if (!m_preprocessorSourceCode || !frame->page() || isCreatingPreprocessor) 285 if (m_preprocessorSourceCode.isNull() || !frame->page() || isCreatingPreproc essor)
274 return false; 286 return false;
275 287
276 // We delay the creation of the preprocessor until just before the first JS from the 288 // We delay the creation of the preprocessor until just before the first JS from the
277 // Web page to ensure that the debugger's console initialization code has co mpleted. 289 // Web page to ensure that the debugger's console initialization code has co mpleted.
278 if (!m_scriptPreprocessor) { 290 if (!m_scriptPreprocessor) {
279 TemporaryChange<bool> isPreprocessing(isCreatingPreprocessor, true); 291 TemporaryChange<bool> isPreprocessing(isCreatingPreprocessor, true);
280 m_scriptPreprocessor = adoptPtr(new ScriptPreprocessor(m_isolate, *m_pre processorSourceCode.get(), frame)); 292 m_scriptPreprocessor = adoptPtr(new ScriptPreprocessor(m_isolate, m_prep rocessorSourceCode, frame));
281 } 293 }
282 294
283 if (m_scriptPreprocessor->isValid()) 295 if (m_scriptPreprocessor->isValid())
284 return true; 296 return true;
285 297
286 m_scriptPreprocessor.clear(); 298 m_scriptPreprocessor.clear();
287 // Don't retry the compile if we fail one time. 299 // Don't retry the compile if we fail one time.
288 m_preprocessorSourceCode.clear(); 300 m_preprocessorSourceCode = ScriptSourceCode();
289 return false; 301 return false;
290 } 302 }
291 303
292 // Source to Source processing iff debugger enabled and it has loaded a preproce ssor. 304 // Source to Source processing iff debugger enabled and it has loaded a preproce ssor.
293 PassOwnPtr<ScriptSourceCode> PageScriptDebugServer::preprocess(LocalFrame* frame , const ScriptSourceCode& sourceCode) 305 ScriptSourceCode PageScriptDebugServer::preprocess(LocalFrame* frame, const Scri ptSourceCode& sourceCode)
294 { 306 {
295 if (!canPreprocess(frame)) 307 if (!canPreprocess(frame))
296 return PassOwnPtr<ScriptSourceCode>(); 308 return ScriptSourceCode();
297 309
298 String preprocessedSource = m_scriptPreprocessor->preprocessSourceCode(sourc eCode.source(), sourceCode.url()); 310 String preprocessedSource = m_scriptPreprocessor->preprocessSourceCode(sourc eCode.source(), sourceCode.url());
299 return adoptPtr(new ScriptSourceCode(preprocessedSource, sourceCode.url())); 311 return ScriptSourceCode(preprocessedSource, sourceCode.url());
300 } 312 }
301 313
302 String PageScriptDebugServer::preprocessEventListener(LocalFrame* frame, const S tring& source, const String& url, const String& functionName) 314 String PageScriptDebugServer::preprocessEventListener(LocalFrame* frame, const S tring& source, const String& url, const String& functionName)
303 { 315 {
304 if (!canPreprocess(frame)) 316 if (!canPreprocess(frame))
305 return source; 317 return source;
306 318
307 return m_scriptPreprocessor->preprocessSourceCode(source, url, functionName) ; 319 return m_scriptPreprocessor->preprocessSourceCode(source, url, functionName) ;
308 } 320 }
309 321
310 void PageScriptDebugServer::clearPreprocessor() 322 void PageScriptDebugServer::clearPreprocessor()
311 { 323 {
312 m_scriptPreprocessor.clear(); 324 m_scriptPreprocessor.clear();
313 } 325 }
314 326
315 void PageScriptDebugServer::muteWarningsAndDeprecations() 327 void PageScriptDebugServer::muteWarningsAndDeprecations()
316 { 328 {
317 FrameConsole::mute(); 329 FrameConsole::mute();
318 UseCounter::muteForInspector(); 330 UseCounter::muteForInspector();
319 } 331 }
320 332
321 void PageScriptDebugServer::unmuteWarningsAndDeprecations() 333 void PageScriptDebugServer::unmuteWarningsAndDeprecations()
322 { 334 {
323 FrameConsole::unmute(); 335 FrameConsole::unmute();
324 UseCounter::unmuteForInspector(); 336 UseCounter::unmuteForInspector();
325 } 337 }
326 338
327 } // namespace blink 339 } // namespace blink
OLDNEW
« no previous file with comments | « Source/bindings/core/v8/PageScriptDebugServer.h ('k') | Source/bindings/core/v8/ScheduledAction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698