Chromium Code Reviews| Index: Source/core/fetch/ResourceLoadPriorityOptimizer.cpp |
| diff --git a/Source/core/fetch/ResourceLoadPriorityOptimizer.cpp b/Source/core/fetch/ResourceLoadPriorityOptimizer.cpp |
| index 29882526a7c3c9c29648936219152a8f0d5d5aef..5c37e832932a05b74b151a515ec828fa8024c325 100644 |
| --- a/Source/core/fetch/ResourceLoadPriorityOptimizer.cpp |
| +++ b/Source/core/fetch/ResourceLoadPriorityOptimizer.cpp |
| @@ -30,9 +30,18 @@ |
| #include "config.h" |
| #include "core/fetch/ResourceLoadPriorityOptimizer.h" |
| +#include "core/rendering/RenderObject.h" |
| + |
| +#include "wtf/Vector.h" |
| namespace WebCore { |
| +ResourceLoadPriorityOptimizer* resourceLoadPriorityOptimizer() |
| +{ |
| + DEFINE_STATIC_LOCAL(ResourceLoadPriorityOptimizer, s_renderLoadOptimizer, ()); |
| + return &s_renderLoadOptimizer; |
| +} |
| + |
| ResourceLoadPriorityOptimizer::ResourceAndVisibility::ResourceAndVisibility(ImageResource* image, VisibilityStatus v) |
| : imageResource(image) |
| , status(v) |
| @@ -49,6 +58,33 @@ ResourceLoadPriorityOptimizer::ResourceLoadPriorityOptimizer() |
| ResourceLoadPriorityOptimizer::~ResourceLoadPriorityOptimizer() |
| { |
| +} |
| + |
| +void ResourceLoadPriorityOptimizer::addRenderObject(RenderObject* o) |
|
esprehn
2014/01/15 01:27:45
object or renderer, no single letter vars please.
shatch
2014/01/15 19:28:52
Done.
|
| +{ |
| + m_objectCache.add(o); |
| +} |
| + |
| +void ResourceLoadPriorityOptimizer::removeRenderObject(RenderObject* o) |
| +{ |
| + m_objectCache.remove(o); |
|
esprehn
2014/01/15 01:27:45
m_objects or something, I'd not use objectCache, t
shatch
2014/01/15 19:28:52
Done.
|
| +} |
| + |
| +void ResourceLoadPriorityOptimizer::updateAllImageResourcePriorities() |
| +{ |
| + m_imageResources.clear(); |
| + |
| + Vector<RenderObject*> objectsToRemove; |
| + for (RenderObjectSet::iterator it = m_objectCache.begin(); it != m_objectCache.end(); ++it) { |
| + RenderObject* obj = *it; |
| + if (!obj->updateImageLoadingPriorities()) { |
| + objectsToRemove.append(obj); |
| + } |
| + } |
| + |
| + for (Vector<RenderObject*>::iterator it = objectsToRemove.begin(); it != objectsToRemove.end(); ++it) |
| + m_objectCache.remove(*it); |
| + |
| updateImageResourcesWithLoadPriority(); |
| } |