summaryrefslogtreecommitdiffstats
path: root/WebKit
diff options
context:
space:
mode:
authorPatrick Scott <phanna@android.com>2011-01-11 13:06:29 -0500
committerPatrick Scott <phanna@android.com>2011-01-11 13:31:17 -0500
commit8b0b15e74bb7f1bd03bfd07f706a5afa637b0b73 (patch)
tree567ddbbd582944bc8b732f38ac17220c258509d0 /WebKit
parentc3c04e3ba294eb676d432752484dc9074ae6b7e4 (diff)
downloadexternal_webkit-8b0b15e74bb7f1bd03bfd07f706a5afa637b0b73.zip
external_webkit-8b0b15e74bb7f1bd03bfd07f706a5afa637b0b73.tar.gz
external_webkit-8b0b15e74bb7f1bd03bfd07f706a5afa637b0b73.tar.bz2
Prevent a crash by caching overflow scrolling.
Use adoptRef when creating a new bridge item. Use toRenderBoxModelObject instead of toRenderBox as RenderInlines have layers. Bug: 3321493 Change-Id: I4283681eba961aedaa8d80bfdfb3d1a468aab1ac
Diffstat (limited to 'WebKit')
-rw-r--r--WebKit/android/jni/WebHistory.cpp2
-rw-r--r--WebKit/android/nav/CacheBuilder.cpp4
2 files changed, 3 insertions, 3 deletions
diff --git a/WebKit/android/jni/WebHistory.cpp b/WebKit/android/jni/WebHistory.cpp
index d3893ff..04d5e4e 100644
--- a/WebKit/android/jni/WebHistory.cpp
+++ b/WebKit/android/jni/WebHistory.cpp
@@ -168,7 +168,7 @@ static void WebHistoryInflate(JNIEnv* env, jobject obj, jint frame, jbyteArray d
// Inflate the history tree into one HistoryItem or null if the inflation
// failed.
RefPtr<WebCore::HistoryItem> newItem = WebCore::HistoryItem::create();
- RefPtr<WebHistoryItem> bridge = new WebHistoryItem(env, obj, newItem.get());
+ RefPtr<WebHistoryItem> bridge = adoptRef(new WebHistoryItem(env, obj, newItem.get()));
newItem->setBridge(bridge.get());
// Inflate the item recursively. If it fails, that is ok. We'll have an
diff --git a/WebKit/android/nav/CacheBuilder.cpp b/WebKit/android/nav/CacheBuilder.cpp
index ea436e7..40b2711 100644
--- a/WebKit/android/nav/CacheBuilder.cpp
+++ b/WebKit/android/nav/CacheBuilder.cpp
@@ -1117,7 +1117,7 @@ void CacheBuilder::BuildFrame(Frame* root, Frame* frame,
#if USE(ACCELERATED_COMPOSITING)
// If this renderer has its own layer and the layer is composited,
// start tracking it.
- if (lastChild && nodeRenderer->hasLayer() && toRenderBox(nodeRenderer)->layer()->backing())
+ if (lastChild && nodeRenderer->hasLayer() && toRenderBoxModelObject(nodeRenderer)->layer()->backing())
TrackLayer(layerTracker, nodeRenderer, lastChild, globalOffsetX, globalOffsetY);
#endif
}
@@ -2916,7 +2916,7 @@ void CacheBuilder::TrackLayer(WTF::Vector<LayerTracker>& layerTracker,
IntPoint scroll(layer->scrollXOffset(), layer->scrollYOffset());
#if ENABLE(ANDROID_OVERFLOW_SCROLL)
// If this is an overflow element, track the content layer.
- if (layer->hasOverflowScroll())
+ if (layer->hasOverflowScroll() && aLayer->getChild(0))
aLayer = aLayer->getChild(0)->getChild(0);
if (!aLayer)
return;