Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Side by Side Diff: Source/WebCore/rendering/RenderLayerCompositor.cpp

Issue 9369039: Merge 107024 - Properly detect top level frames when propogating compositing (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1025/
Patch Set: Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/WebCore/rendering/RenderLayerCompositor.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 1247 matching lines...) Expand 10 before | Expand all | Expand 10 after
1258 return view->platformWidget(); 1258 return view->platformWidget();
1259 #endif 1259 #endif
1260 return false; 1260 return false;
1261 } 1261 }
1262 1262
1263 bool RenderLayerCompositor::shouldPropagateCompositingToEnclosingFrame() const 1263 bool RenderLayerCompositor::shouldPropagateCompositingToEnclosingFrame() const
1264 { 1264 {
1265 // Parent document content needs to be able to render on top of a composited frame, so correct behavior 1265 // Parent document content needs to be able to render on top of a composited frame, so correct behavior
1266 // is to have the parent document become composited too. However, this can c ause problems on platforms that 1266 // is to have the parent document become composited too. However, this can c ause problems on platforms that
1267 // use native views for frames (like Mac), so disable that behavior on those platforms for now. 1267 // use native views for frames (like Mac), so disable that behavior on those platforms for now.
1268 HTMLFrameOwnerElement* ownerElement = enclosingFrameElement(); 1268 HTMLFrameOwnerElement* ownerElement = m_renderView->document()->ownerElement ();
1269 RenderObject* renderer = ownerElement ? ownerElement->renderer() : 0; 1269 RenderObject* renderer = ownerElement ? ownerElement->renderer() : 0;
1270 1270
1271 // If we are the top-level frame, don't propagate. 1271 // If we are the top-level frame, don't propagate.
1272 if (!ownerElement) 1272 if (!ownerElement)
1273 return false; 1273 return false;
1274 1274
1275 if (!allowsIndependentlyCompositedFrames(m_renderView->frameView())) 1275 if (!allowsIndependentlyCompositedFrames(m_renderView->frameView()))
1276 return true; 1276 return true;
1277 1277
1278 if (!renderer || !renderer->isRenderPart()) 1278 if (!renderer || !renderer->isRenderPart())
(...skipping 10 matching lines...) Expand all
1289 if (frameRenderer->widget()) { 1289 if (frameRenderer->widget()) {
1290 ASSERT(frameRenderer->widget()->isFrameView()); 1290 ASSERT(frameRenderer->widget()->isFrameView());
1291 FrameView* view = static_cast<FrameView*>(frameRenderer->widget()); 1291 FrameView* view = static_cast<FrameView*>(frameRenderer->widget());
1292 if (view->isOverlappedIncludingAncestors() || view->hasCompositingAncest or()) 1292 if (view->isOverlappedIncludingAncestors() || view->hasCompositingAncest or())
1293 return true; 1293 return true;
1294 } 1294 }
1295 1295
1296 return false; 1296 return false;
1297 } 1297 }
1298 1298
1299 HTMLFrameOwnerElement* RenderLayerCompositor::enclosingFrameElement() const
1300 {
1301 if (HTMLFrameOwnerElement* ownerElement = m_renderView->document()->ownerEle ment())
1302 return (ownerElement->hasTagName(iframeTag) || ownerElement->hasTagName( frameTag) || ownerElement->hasTagName(objectTag)) ? ownerElement : 0;
1303
1304 return 0;
1305 }
1306
1307 bool RenderLayerCompositor::needsToBeComposited(const RenderLayer* layer) const 1299 bool RenderLayerCompositor::needsToBeComposited(const RenderLayer* layer) const
1308 { 1300 {
1309 if (!canBeComposited(layer)) 1301 if (!canBeComposited(layer))
1310 return false; 1302 return false;
1311 1303
1312 return requiresCompositingLayer(layer) || layer->mustOverlapCompositedLayers () || (inCompositingMode() && layer->isRootLayer()); 1304 return requiresCompositingLayer(layer) || layer->mustOverlapCompositedLayers () || (inCompositingMode() && layer->isRootLayer());
1313 } 1305 }
1314 1306
1315 // Note: this specifies whether the RL needs a compositing layer for intrinsic r easons. 1307 // Note: this specifies whether the RL needs a compositing layer for intrinsic r easons.
1316 // Use needsToBeComposited() to determine if a RL actually needs a compositing l ayer. 1308 // Use needsToBeComposited() to determine if a RL actually needs a compositing l ayer.
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after
2090 return page->scrollingCoordinator(); 2082 return page->scrollingCoordinator();
2091 } 2083 }
2092 2084
2093 return 0; 2085 return 0;
2094 } 2086 }
2095 #endif 2087 #endif
2096 2088
2097 } // namespace WebCore 2089 } // namespace WebCore
2098 2090
2099 #endif // USE(ACCELERATED_COMPOSITING) 2091 #endif // USE(ACCELERATED_COMPOSITING)
OLDNEW
« no previous file with comments | « Source/WebCore/rendering/RenderLayerCompositor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698