Title: [133679] trunk/Source/WebKit/blackberry
Revision
133679
Author
commit-qu...@webkit.org
Date
2012-11-06 15:30:04 -0800 (Tue, 06 Nov 2012)

Log Message

[BlackBerry] Crash in InRegionScrollerPrivate.
https://bugs.webkit.org/show_bug.cgi?id=101399

Patch by Genevieve Mak <g...@rim.com> on 2012-11-06
Reviewed by Rob Buis.

Add a pointer to the enclosing document as the pointer to layer
or node along the way may become invalid.
Use document pointer in clearDocumentData.
PR #238469

* Api/InRegionScroller.cpp:
(BlackBerry::WebKit::InRegionScrollerPrivate::clearDocumentData):
* WebKitSupport/InRegionScrollableArea.cpp:
(BlackBerry::WebKit::InRegionScrollableArea::InRegionScrollableArea):
(BlackBerry::WebKit::InRegionScrollableArea::document):
(WebKit):
* WebKitSupport/InRegionScrollableArea.h:
(WebCore):
(InRegionScrollableArea):

Modified Paths

Diff

Modified: trunk/Source/WebKit/blackberry/Api/InRegionScroller.cpp (133678 => 133679)


--- trunk/Source/WebKit/blackberry/Api/InRegionScroller.cpp	2012-11-06 23:25:20 UTC (rev 133678)
+++ trunk/Source/WebKit/blackberry/Api/InRegionScroller.cpp	2012-11-06 23:30:04 UTC (rev 133679)
@@ -102,8 +102,7 @@
 
     InRegionScrollableArea* scrollableArea = static_cast<InRegionScrollableArea*>(m_activeInRegionScrollableAreas[0]);
     ASSERT(scrollableArea);
-    Node* node = scrollableArea->layer()->enclosingElement();
-    if (node && node->document() == documentGoingAway)
+    if (scrollableArea->document() == documentGoingAway)
         reset();
 }
 

Modified: trunk/Source/WebKit/blackberry/ChangeLog (133678 => 133679)


--- trunk/Source/WebKit/blackberry/ChangeLog	2012-11-06 23:25:20 UTC (rev 133678)
+++ trunk/Source/WebKit/blackberry/ChangeLog	2012-11-06 23:30:04 UTC (rev 133679)
@@ -1,3 +1,25 @@
+2012-11-06  Genevieve Mak  <g...@rim.com>
+
+        [BlackBerry] Crash in InRegionScrollerPrivate.
+        https://bugs.webkit.org/show_bug.cgi?id=101399
+
+        Reviewed by Rob Buis.
+
+        Add a pointer to the enclosing document as the pointer to layer
+        or node along the way may become invalid.
+        Use document pointer in clearDocumentData.
+        PR #238469
+
+        * Api/InRegionScroller.cpp:
+        (BlackBerry::WebKit::InRegionScrollerPrivate::clearDocumentData):
+        * WebKitSupport/InRegionScrollableArea.cpp:
+        (BlackBerry::WebKit::InRegionScrollableArea::InRegionScrollableArea):
+        (BlackBerry::WebKit::InRegionScrollableArea::document):
+        (WebKit):
+        * WebKitSupport/InRegionScrollableArea.h:
+        (WebCore):
+        (InRegionScrollableArea):
+
 2012-11-06  Otto Derek Cheung  <otche...@rim.com>
 
         [BlackBerry] Pushing window.external.* events to webplatform

Modified: trunk/Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.cpp (133678 => 133679)


--- trunk/Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.cpp	2012-11-06 23:25:20 UTC (rev 133678)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.cpp	2012-11-06 23:30:04 UTC (rev 133679)
@@ -19,6 +19,7 @@
 #include "config.h"
 #include "InRegionScrollableArea.h"
 
+#include "Document.h"
 #include "Frame.h"
 #include "LayerWebKitThread.h"
 #include "InRegionScroller_p.h"
@@ -52,11 +53,16 @@
     : m_webPage(webPage)
     , m_layer(layer)
     , m_hasWindowVisibleRectCalculated(false)
+    , m_document(0)
 {
     ASSERT(webPage);
     ASSERT(layer);
     m_isNull = false;
 
+    // Add a pointer to the enclosing document as the pointer to layer or node along the way may become invalid.
+    if (m_layer->enclosingElement())
+        m_document = m_layer->enclosingElement()->document();
+
     // FIXME: Add an ASSERT here as the 'layer' must be scrollable.
 
     RenderObject* layerRenderer = layer->renderer();
@@ -139,5 +145,11 @@
     return m_layer;
 }
 
+Document* InRegionScrollableArea::document() const
+{
+    ASSERT(!m_isNull);
+    return m_document;
 }
+
 }
+}

Modified: trunk/Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.h (133678 => 133679)


--- trunk/Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.h	2012-11-06 23:25:20 UTC (rev 133678)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.h	2012-11-06 23:30:04 UTC (rev 133679)
@@ -24,6 +24,7 @@
 #include <interaction/ScrollViewBase.h>
 
 namespace WebCore {
+class Document;
 class LayerWebKitThread;
 class Node;
 class RenderLayer;
@@ -45,10 +46,12 @@
     Platform::IntRect visibleWindowRect() const;
 
     WebCore::RenderLayer* layer() const;
+    WebCore::Document* document() const;
 
 private:
     WebPagePrivate* m_webPage;
     WebCore::RenderLayer* m_layer;
+    WebCore::Document* m_document;
 
     // We either cache one here: in case of a composited scrollable layer
     // cache the LayerWebKitThread. Otherwise, the Node.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to