OSDN Git Service

Enable layers for fixed elements only for mobile websites
authorNicolas Roard <nicolas@android.com>
Fri, 28 Jan 2011 04:39:49 +0000 (20:39 -0800)
committerNicolas Roard <nicolas@android.com>
Fri, 28 Jan 2011 04:39:49 +0000 (20:39 -0800)
Change-Id: Ia3b626a1e8608d089ad67010e3e385b428456f95

WebCore/rendering/RenderLayerCompositor.cpp

index 0877468..5182c5f 100644 (file)
@@ -1192,9 +1192,23 @@ bool RenderLayerCompositor::requiresCompositingForAndroidLayers(const RenderLaye
     if (m_renderView->document()->frame()->tree()->parent())
         return false;
 
+    // For the moment, we want to only enable fixed composited layers on mobile websites.
     // Enable composited layers (for fixed elements)
-    if (layer->isFixed())
+    // We can consider a website as being a 'mobile' site if all the
+    // following checks are true:
+    // 1) - the viewport width is either undefined (-1) or equal to device-width (0), and
+    // 2) - no scaling is allowed
+    if (!layer->isFixed())
+        return false;
+
+    Settings* settings = m_renderView->document()->settings();
+    if (!settings)
+        return false;
+
+    if ((settings->viewportWidth() == -1 || settings->viewportWidth() == 0) &&
+        !settings->viewportUserScalable())
         return true;
+
 #endif
     return false;
 }