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