Commit 790d985e authored by Chris Watkins's avatar Chris Watkins Committed by Commit Bot

Replace ListHashSet with LinkedHashSet in FontFaceCache and FontFaceSet

We want to deprecate ListHashSet in favor of LinkedHashSet. The main
difference between them is that ListHS iterators remain valid after
modification of the container, whereas LinkedHS iterators do not.
These usages of ListHashSet don't rely on iterators remaining valid
after modification, so it's a straightforward replacement.

Bug: 614112
Change-Id: I31839044b2267cd0a9749b1907e6237686909f65
Reviewed-on: https://chromium-review.googlesource.com/778639Reviewed-by: default avatarnainar <nainar@chromium.org>
Commit-Queue: Chris Watkins <watk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#517763}
parent 732b45e0
......@@ -35,7 +35,7 @@
#include "platform/heap/Handle.h"
#include "platform/wtf/Forward.h"
#include "platform/wtf/HashMap.h"
#include "platform/wtf/ListHashSet.h"
#include "platform/wtf/LinkedHashSet.h"
#include "platform/wtf/text/StringHash.h"
namespace blink {
......@@ -61,7 +61,7 @@ class CORE_EXPORT FontFaceCache final {
// but this function uses FontDescription/family pair.
CSSSegmentedFontFace* Get(const FontDescription&, const AtomicString& family);
const HeapListHashSet<Member<FontFace>>& CssConnectedFontFaces() const {
const HeapLinkedHashSet<Member<FontFace>>& CssConnectedFontFaces() const {
return css_connected_font_faces_;
}
......@@ -109,7 +109,7 @@ class CORE_EXPORT FontFaceCache final {
// Needed for incoming ClearCSSConnected() requests coming in from
// StyleEngine, which clears all those faces from the FontCache which are
// originating from CSS, as opposed to those originating from JS.
HeapListHashSet<Member<FontFace>> css_connected_font_faces_;
HeapLinkedHashSet<Member<FontFace>> css_connected_font_faces_;
// FIXME: See if this could be ditched
// Used to compare Font instances, and the usage seems suspect.
......
......@@ -82,7 +82,7 @@ bool FontFaceSet::deleteForBinding(ScriptState*,
DCHECK(font_face);
if (!InActiveContext())
return false;
HeapListHashSet<Member<FontFace>>::iterator it =
HeapLinkedHashSet<Member<FontFace>>::iterator it =
non_css_connected_faces_.find(font_face);
if (it != non_css_connected_faces_.end()) {
non_css_connected_faces_.erase(it);
......@@ -297,7 +297,7 @@ FontFaceSetIterable::IterationSource* FontFaceSet::StartIteration(
// modification, take a snapshot here, and make it ordered as follows.
HeapVector<Member<FontFace>> font_faces;
if (InActiveContext()) {
const HeapListHashSet<Member<FontFace>>& css_connected_faces =
const HeapLinkedHashSet<Member<FontFace>>& css_connected_faces =
CSSConnectedFontFaceList();
font_faces.ReserveInitialCapacity(css_connected_faces.size() +
non_css_connected_faces_.size());
......
......@@ -89,7 +89,7 @@ class CORE_EXPORT FontFaceSet : public EventTargetWithInlineData,
virtual bool ResolveFontStyle(const String&, Font&) = 0;
virtual bool InActiveContext() const = 0;
virtual FontSelector* GetFontSelector() const = 0;
virtual const HeapListHashSet<Member<FontFace>>& CSSConnectedFontFaceList()
virtual const HeapLinkedHashSet<Member<FontFace>>& CSSConnectedFontFaceList()
const = 0;
bool IsCSSConnectedFontFace(FontFace* font_face) const {
return CSSConnectedFontFaceList().Contains(font_face);
......@@ -109,7 +109,7 @@ class CORE_EXPORT FontFaceSet : public EventTargetWithInlineData,
bool is_loading_;
bool should_fire_loading_event_;
HeapListHashSet<Member<FontFace>> non_css_connected_faces_;
HeapLinkedHashSet<Member<FontFace>> non_css_connected_faces_;
HeapHashSet<Member<FontFace>> loading_fonts_;
FontFaceArray loaded_fonts_;
FontFaceArray failed_fonts_;
......
......@@ -109,7 +109,7 @@ ScriptPromise FontFaceSetDocument::ready(ScriptState* script_state) {
return ready_->Promise(script_state->World());
}
const HeapListHashSet<Member<FontFace>>&
const HeapLinkedHashSet<Member<FontFace>>&
FontFaceSetDocument::CSSConnectedFontFaceList() const {
Document* document = this->GetDocument();
document->UpdateActiveStyle();
......
......@@ -92,7 +92,7 @@ class CORE_EXPORT FontFaceSetDocument final : public FontFaceSet,
explicit FontFaceSetDocument(Document&);
void FireDoneEventIfPossible() override;
const HeapListHashSet<Member<FontFace>>& CSSConnectedFontFaceList()
const HeapLinkedHashSet<Member<FontFace>>& CSSConnectedFontFaceList()
const override;
class FontLoadHistogram {
......
......@@ -53,7 +53,7 @@ class CORE_EXPORT FontFaceSetWorker final
return GetWorker()->GetFontSelector();
}
// For workers, this is always an empty list.
const HeapListHashSet<Member<FontFace>>& CSSConnectedFontFaceList()
const HeapLinkedHashSet<Member<FontFace>>& CSSConnectedFontFaceList()
const override {
DCHECK(
GetFontSelector()->GetFontFaceCache()->CssConnectedFontFaces().size() ==
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment