[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

eric at webkit.org eric at webkit.org
Wed Apr 7 23:22:41 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 896fc0a85f520493f98ad3278ba00d3e1fff22e5
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Nov 4 20:04:16 2009 +0000

    2009-11-04  Eric Z. Ayers  <zundel at google.com>
    
            Reviewed by Pavel Feldman.
    
            Followon to bug 31080, which protects Timeline
            instrumentation in the case where InspectorTimelineAgent
            is enabled or disabled during an event dispatch.
    
            https://bugs.webkit.org/show_bug.cgi?id=31121
    
            * bindings/v8/V8Proxy.cpp:
            (WebCore::V8Proxy::evaluate):
            * dom/Document.cpp:
            (WebCore::Document::recalcStyle):
            * dom/Node.cpp:
            (WebCore::Node::dispatchGenericEvent):
            * html/HTMLTokenizer.cpp:
            (WebCore::HTMLTokenizer::write):
            * page/DOMWindow.cpp:
            (WebCore::DOMWindow::inspectorTimelineAgent):
            (WebCore::DOMWindow::dispatchEvent):
            * page/DOMWindow.h:
            * page/FrameView.cpp:
            (WebCore::FrameView::layout):
            (WebCore::FrameView::paintContents):
            * xml/XMLHttpRequest.cpp:
            (WebCore::XMLHttpRequest::callReadyStateChangeListener):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@50523 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index c8bde61..096f0de 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,31 @@
+2009-11-04  Eric Z. Ayers  <zundel at google.com>
+
+        Reviewed by Pavel Feldman.
+
+        Followon to bug 31080, which protects Timeline
+        instrumentation in the case where InspectorTimelineAgent
+        is enabled or disabled during an event dispatch.
+        
+        https://bugs.webkit.org/show_bug.cgi?id=31121
+
+        * bindings/v8/V8Proxy.cpp:
+        (WebCore::V8Proxy::evaluate):
+        * dom/Document.cpp:
+        (WebCore::Document::recalcStyle):
+        * dom/Node.cpp:
+        (WebCore::Node::dispatchGenericEvent):
+        * html/HTMLTokenizer.cpp:
+        (WebCore::HTMLTokenizer::write):
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::inspectorTimelineAgent):
+        (WebCore::DOMWindow::dispatchEvent):
+        * page/DOMWindow.h:
+        * page/FrameView.cpp:
+        (WebCore::FrameView::layout):
+        (WebCore::FrameView::paintContents):
+        * xml/XMLHttpRequest.cpp:
+        (WebCore::XMLHttpRequest::callReadyStateChangeListener):
+
 2009-11-04  Jeremy Orlow  <jorlow at chromium.org>
 
         Revert 50519 while I work out what went wrong.
diff --git a/WebCore/bindings/v8/V8Proxy.cpp b/WebCore/bindings/v8/V8Proxy.cpp
index 475b5e5..defdb27 100644
--- a/WebCore/bindings/v8/V8Proxy.cpp
+++ b/WebCore/bindings/v8/V8Proxy.cpp
@@ -375,8 +375,7 @@ v8::Local<v8::Value> V8Proxy::evaluate(const ScriptSourceCode& source, Node* nod
     ASSERT(v8::Context::InContext());
 
 #if ENABLE(INSPECTOR)
-    InspectorTimelineAgent* timelineAgent = m_frame->page() ? m_frame->page()->inspectorTimelineAgent() : 0;
-    if (timelineAgent)
+    if (InspectorTimelineAgent* timelineAgent = m_frame->page() ? m_frame->page()->inspectorTimelineAgent() : 0)
         timelineAgent->willEvaluateScript(source.url().isNull() ? String() : source.url().string(), source.startLine());
 #endif
 
@@ -407,7 +406,7 @@ v8::Local<v8::Value> V8Proxy::evaluate(const ScriptSourceCode& source, Node* nod
     ChromiumBridge::traceEventEnd("v8.run", node, "");
 
 #if ENABLE(INSPECTOR)
-    if (timelineAgent)
+    if (InspectorTimelineAgent* timelineAgent = m_frame->page() ? m_frame->page()->inspectorTimelineAgent() : 0)
         timelineAgent->didEvaluateScript();
 #endif
 
diff --git a/WebCore/dom/Document.cpp b/WebCore/dom/Document.cpp
index 4f187c5..d278cfc 100644
--- a/WebCore/dom/Document.cpp
+++ b/WebCore/dom/Document.cpp
@@ -1231,8 +1231,7 @@ void Document::recalcStyle(StyleChange change)
         return; // Guard against re-entrancy. -dwh
 
 #if ENABLE(INSPECTOR)
-    InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent();
-    if (timelineAgent)
+    if (InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent())
         timelineAgent->willRecalculateStyle();
 #endif
 
@@ -1312,7 +1311,7 @@ bail_out:
     }
 
 #if ENABLE(INSPECTOR)
-    if (timelineAgent)
+    if (InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent())
         timelineAgent->didRecalculateStyle();
 #endif
 }
diff --git a/WebCore/dom/Node.cpp b/WebCore/dom/Node.cpp
index 3d3546a..d3d501b 100644
--- a/WebCore/dom/Node.cpp
+++ b/WebCore/dom/Node.cpp
@@ -2576,7 +2576,7 @@ doneDispatching:
 
 doneWithDefault:
 #if ENABLE(INSPECTOR)
-    if (timelineAgentIsActive)
+    if (timelineAgentIsActive && (timelineAgent = document()->inspectorTimelineAgent()))
         timelineAgent->didDispatchEvent();
 #endif
 
diff --git a/WebCore/html/HTMLTokenizer.cpp b/WebCore/html/HTMLTokenizer.cpp
index 02970ba..433820b 100644
--- a/WebCore/html/HTMLTokenizer.cpp
+++ b/WebCore/html/HTMLTokenizer.cpp
@@ -1666,8 +1666,7 @@ void HTMLTokenizer::write(const SegmentedString& str, bool appendData)
     double startTime = currentTime();
 
 #if ENABLE(INSPECTOR)
-    InspectorTimelineAgent* timelineAgent = m_doc->inspectorTimelineAgent();
-    if (timelineAgent)
+    if (InspectorTimelineAgent* timelineAgent = m_doc->inspectorTimelineAgent())
         timelineAgent->willWriteHTML();
 #endif
   
@@ -1793,7 +1792,7 @@ void HTMLTokenizer::write(const SegmentedString& str, bool appendData)
 #endif
 
 #if ENABLE(INSPECTOR)
-    if (timelineAgent)
+    if (InspectorTimelineAgent* timelineAgent = m_doc->inspectorTimelineAgent())
         timelineAgent->didWriteHTML();
 #endif
 
diff --git a/WebCore/page/DOMWindow.cpp b/WebCore/page/DOMWindow.cpp
index b33602c..ef4ee5f 100644
--- a/WebCore/page/DOMWindow.cpp
+++ b/WebCore/page/DOMWindow.cpp
@@ -1302,6 +1302,13 @@ void DOMWindow::dispatchLoadEvent()
 #endif
 }
 
+InspectorTimelineAgent* DOMWindow::inspectorTimelineAgent() 
+{
+    if (frame() && frame()->page())
+        return frame()->page()->inspectorTimelineAgent();
+    return 0;
+}
+
 bool DOMWindow::dispatchEvent(PassRefPtr<Event> prpEvent, PassRefPtr<EventTarget> prpTarget)
 {
     RefPtr<EventTarget> protect = this;
@@ -1312,9 +1319,7 @@ bool DOMWindow::dispatchEvent(PassRefPtr<Event> prpEvent, PassRefPtr<EventTarget
     event->setEventPhase(Event::AT_TARGET);
 
 #if ENABLE(INSPECTOR)
-    InspectorTimelineAgent* timelineAgent = 0;
-    if (frame() && frame()->page())
-        timelineAgent = frame()->page()->inspectorTimelineAgent();
+    InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent();
     bool timelineAgentIsActive = timelineAgent && hasEventListeners(event->type());
     if (timelineAgentIsActive)
         timelineAgent->willDispatchEvent(*event);
@@ -1323,8 +1328,11 @@ bool DOMWindow::dispatchEvent(PassRefPtr<Event> prpEvent, PassRefPtr<EventTarget
     bool result = fireEventListeners(event.get());
 
 #if ENABLE(INSPECTOR)
-    if (timelineAgentIsActive)
-        timelineAgent->didDispatchEvent();
+    if (timelineAgentIsActive) {
+      timelineAgent = inspectorTimelineAgent();
+      if (timelineAgent)
+            timelineAgent->didDispatchEvent();
+    }
 #endif
 
     return result;
diff --git a/WebCore/page/DOMWindow.h b/WebCore/page/DOMWindow.h
index 25eadc8..8960843 100644
--- a/WebCore/page/DOMWindow.h
+++ b/WebCore/page/DOMWindow.h
@@ -52,6 +52,7 @@ namespace WebCore {
     class FloatRect;
     class Frame;
     class History;
+    class InspectorTimelineAgent;
     class Location;
     class Media;
     class Navigator;
@@ -352,6 +353,7 @@ namespace WebCore {
         virtual void derefEventTarget() { deref(); }
         virtual EventTargetData* eventTargetData();
         virtual EventTargetData* ensureEventTargetData();
+        InspectorTimelineAgent* inspectorTimelineAgent();
 
         RefPtr<SecurityOrigin> m_securityOrigin;
         KURL m_url;
diff --git a/WebCore/page/FrameView.cpp b/WebCore/page/FrameView.cpp
index a6c8e84..04da5e3 100644
--- a/WebCore/page/FrameView.cpp
+++ b/WebCore/page/FrameView.cpp
@@ -504,9 +504,8 @@ void FrameView::layout(bool allowSubtree)
     if (isPainting())
         return;
 
-#if ENABLE(INSPECTOR)
-    InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent();
-    if (timelineAgent)
+#if ENABLE(INSPECTOR)    
+    if (InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent())
         timelineAgent->willLayout();
 #endif
 
@@ -696,7 +695,7 @@ void FrameView::layout(bool allowSubtree)
     }
 
 #if ENABLE(INSPECTOR)
-    if (timelineAgent)
+    if (InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent())
         timelineAgent->didLayout();
 #endif
 
@@ -1615,8 +1614,7 @@ void FrameView::paintContents(GraphicsContext* p, const IntRect& rect)
         return;
 
 #if ENABLE(INSPECTOR)
-    InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent();
-    if (timelineAgent)
+    if (InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent())
         timelineAgent->willPaint(rect);
 #endif
 
@@ -1685,7 +1683,7 @@ void FrameView::paintContents(GraphicsContext* p, const IntRect& rect)
         sCurrentPaintTimeStamp = 0;
 
 #if ENABLE(INSPECTOR)
-    if (timelineAgent)
+    if (InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent())
         timelineAgent->didPaint();
 #endif
 }
diff --git a/WebCore/xml/XMLHttpRequest.cpp b/WebCore/xml/XMLHttpRequest.cpp
index bf2022f..2e0b495 100644
--- a/WebCore/xml/XMLHttpRequest.cpp
+++ b/WebCore/xml/XMLHttpRequest.cpp
@@ -261,12 +261,13 @@ void XMLHttpRequest::callReadyStateChangeListener()
     dispatchEvent(XMLHttpRequestProgressEvent::create(eventNames().readystatechangeEvent));
 
 #if ENABLE(INSPECTOR)
-    if (callTimelineAgentOnReadyStateChange)
+    if (callTimelineAgentOnReadyStateChange && (timelineAgent = InspectorTimelineAgent::retrieve(scriptExecutionContext())))
         timelineAgent->didChangeXHRReadyState();
 #endif
 
     if (m_state == DONE && !m_error) {
 #if ENABLE(INSPECTOR)
+        timelineAgent = InspectorTimelineAgent::retrieve(scriptExecutionContext());
         bool callTimelineAgentOnLoad = timelineAgent && hasEventListeners(eventNames().loadEvent);
         if (callTimelineAgentOnLoad)
             timelineAgent->willLoadXHR(m_url.string());
@@ -275,7 +276,7 @@ void XMLHttpRequest::callReadyStateChangeListener()
         dispatchEvent(XMLHttpRequestProgressEvent::create(eventNames().loadEvent));
 
 #if ENABLE(INSPECTOR)
-        if (callTimelineAgentOnLoad)
+        if (callTimelineAgentOnLoad && (timelineAgent = InspectorTimelineAgent::retrieve(scriptExecutionContext())))
             timelineAgent->didLoadXHR();
 #endif
     }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list