| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google 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 are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 | 172 |
| 173 const FrameView* frameView = toFrameView((*it).get()); | 173 const FrameView* frameView = toFrameView((*it).get()); |
| 174 // Check to make sure we can get both the element and the RenderObject | 174 // Check to make sure we can get both the element and the RenderObject |
| 175 // for this FrameView, if we can't just move on to the next object. | 175 // for this FrameView, if we can't just move on to the next object. |
| 176 HTMLElement* element = frameView->frame().ownerElement(); | 176 HTMLElement* element = frameView->frame().ownerElement(); |
| 177 if (!element || !element->renderer()) | 177 if (!element || !element->renderer()) |
| 178 continue; | 178 continue; |
| 179 | 179 |
| 180 RenderObject* iframeRenderer = element->renderer(); | 180 RenderObject* iframeRenderer = element->renderer(); |
| 181 | 181 |
| 182 if (element->hasTagName(HTMLNames::iframeTag) && intersectsRect(iframeRe
nderer, frameRect)) { | 182 if (isHTMLIFrameElement(*element) && intersectsRect(iframeRenderer, fram
eRect)) { |
| 183 getObjectStack(iframeRenderer, &iframeZstack); | 183 getObjectStack(iframeRenderer, &iframeZstack); |
| 184 if (iframeIsAbovePlugin(iframeZstack, pluginZstack)) | 184 if (iframeIsAbovePlugin(iframeZstack, pluginZstack)) |
| 185 addToOcclusions(toRenderBox(iframeRenderer), occlusions); | 185 addToOcclusions(toRenderBox(iframeRenderer), occlusions); |
| 186 } | 186 } |
| 187 } | 187 } |
| 188 | 188 |
| 189 // Occlusions by top layer elements. | 189 // Occlusions by top layer elements. |
| 190 // FIXME: There's no handling yet for the interaction between top layer and | 190 // FIXME: There's no handling yet for the interaction between top layer and |
| 191 // iframes. For example, a plugin in the top layer will be occluded by an | 191 // iframes. For example, a plugin in the top layer will be occluded by an |
| 192 // iframe. And a plugin inside an iframe in the top layer won't be respected | 192 // iframe. And a plugin inside an iframe in the top layer won't be respected |
| 193 // as being in the top layer. | 193 // as being in the top layer. |
| 194 const Element* ancestor = topLayerAncestor(element); | 194 const Element* ancestor = topLayerAncestor(element); |
| 195 Document* document = parentFrameView->frame().document(); | 195 Document* document = parentFrameView->frame().document(); |
| 196 const Vector<RefPtr<Element> >& elements = document->topLayerElements(); | 196 const Vector<RefPtr<Element> >& elements = document->topLayerElements(); |
| 197 size_t start = ancestor ? elements.find(ancestor) + 1 : 0; | 197 size_t start = ancestor ? elements.find(ancestor) + 1 : 0; |
| 198 for (size_t i = start; i < elements.size(); ++i) | 198 for (size_t i = start; i < elements.size(); ++i) |
| 199 addTreeToOcclusions(elements[i]->renderer(), frameRect, occlusions); | 199 addTreeToOcclusions(elements[i]->renderer(), frameRect, occlusions); |
| 200 } | 200 } |
| 201 | 201 |
| 202 } // namespace WebCore | 202 } // namespace WebCore |
| OLD | NEW |