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

Unified Diff: Source/core/dom/TreeScopeStyleSheetCollectionTest.cpp

Issue 1076163002: Don't clear FontFaceCache if no @font-face were removed. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/dom/TreeScopeStyleSheetCollection.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/TreeScopeStyleSheetCollectionTest.cpp
diff --git a/Source/core/dom/TreeScopeStyleSheetCollectionTest.cpp b/Source/core/dom/TreeScopeStyleSheetCollectionTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..17a37319fd295bd828d8f7084835e061a5ab4226
--- /dev/null
+++ b/Source/core/dom/TreeScopeStyleSheetCollectionTest.cpp
@@ -0,0 +1,152 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "config.h"
+#include "core/dom/TreeScopeStyleSheetCollection.h"
+
+#include "core/css/CSSStyleSheet.h"
+#include "core/css/StyleSheetContents.h"
+#include "core/css/parser/CSSParserMode.h"
+#include <gtest/gtest.h>
+
+namespace blink {
+
+class TreeScopeStyleSheetCollectionTest : public testing::Test {
+protected:
+ using SheetVector = WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet>>;
+ using ContentsVector = WillBeHeapVector<RawPtrWillBeMember<StyleSheetContents>>;
+
+ enum UpdateType {
+ Reconstruct = TreeScopeStyleSheetCollection::Reconstruct,
+ Reset = TreeScopeStyleSheetCollection::Reset,
+ Additive = TreeScopeStyleSheetCollection::Additive
+ };
+
+ static PassRefPtrWillBeRawPtr<CSSStyleSheet> createSheet()
+ {
+ return CSSStyleSheet::create(StyleSheetContents::create(CSSParserContext(HTMLStandardMode, nullptr)));
+ }
+
+ static void compareStyleSheets(const SheetVector& oldStyleSheets, const SheetVector& newStyleSheets, const ContentsVector& expAddedSheets, UpdateType testUpdateType)
+ {
+ ContentsVector addedSheets;
+ UpdateType updateType = static_cast<UpdateType>(TreeScopeStyleSheetCollection::compareStyleSheets(oldStyleSheets, newStyleSheets, addedSheets));
+ EXPECT_EQ(testUpdateType, updateType);
+ EXPECT_EQ(expAddedSheets.size(), addedSheets.size());
+ if (expAddedSheets.size() == addedSheets.size()) {
+ for (unsigned i = 0; i < addedSheets.size(); i++)
+ EXPECT_EQ(expAddedSheets.at(i), addedSheets.at(i));
+ }
+ }
+};
+
+TEST_F(TreeScopeStyleSheetCollectionTest, CompareStyleSheetsAppend)
+{
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet1 = createSheet();
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet2 = createSheet();
+
+ ContentsVector added;
+ SheetVector previous;
+ SheetVector current;
+
+ previous.append(sheet1);
+
+ current.append(sheet1);
+ current.append(sheet2);
+
+ added.append(sheet2->contents());
+
+ compareStyleSheets(previous, current, added, Additive);
+}
+
+TEST_F(TreeScopeStyleSheetCollectionTest, CompareStyleSheetsPrepend)
+{
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet1 = createSheet();
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet2 = createSheet();
+
+ ContentsVector added;
+ SheetVector previous;
+ SheetVector current;
+
+ previous.append(sheet2);
+
+ current.append(sheet1);
+ current.append(sheet2);
+
+ added.append(sheet1->contents());
+
+ compareStyleSheets(previous, current, added, Reconstruct);
+}
+
+TEST_F(TreeScopeStyleSheetCollectionTest, CompareStyleSheetsInsert)
+{
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet1 = createSheet();
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet2 = createSheet();
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet3 = createSheet();
+
+ ContentsVector added;
+ SheetVector previous;
+ SheetVector current;
+
+ previous.append(sheet1);
+ previous.append(sheet3);
+
+ current.append(sheet1);
+ current.append(sheet2);
+ current.append(sheet3);
+
+ added.append(sheet2->contents());
+
+ compareStyleSheets(previous, current, added, Reconstruct);
+}
+
+TEST_F(TreeScopeStyleSheetCollectionTest, CompareStyleSheetsRemove)
+{
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet1 = createSheet();
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet2 = createSheet();
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet3 = createSheet();
+
+ ContentsVector added;
+ SheetVector previous;
+ SheetVector current;
+
+ previous.append(sheet1);
+ previous.append(sheet2);
+ previous.append(sheet3);
+
+ current.append(sheet1);
+ current.append(sheet3);
+
+ added.append(sheet2->contents());
+
+ // This is really the same as Insert. TreeScopeStyleSheetCollection::compareStyleSheets
+ // will assert if you pass an array that is longer as the first parameter.
+ compareStyleSheets(current, previous, added, Reconstruct);
+}
+
+TEST_F(TreeScopeStyleSheetCollectionTest, CompareStyleSheetsInsertRemove)
+{
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet1 = createSheet();
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet2 = createSheet();
+ RefPtrWillBeRawPtr<CSSStyleSheet> sheet3 = createSheet();
+
+ ContentsVector added;
+ SheetVector previous;
+ SheetVector current;
+
+ previous.append(sheet1);
+ previous.append(sheet2);
+
+ current.append(sheet2);
+ current.append(sheet3);
+
+ // TODO(rune@opera.com): This is clearly wrong. We add sheet3 and remove sheet1 and
+ // compareStyleSheets returns sheet2 and sheet3 as added (crbug/475858).
+ added.append(sheet2->contents());
+ added.append(sheet3->contents());
+
+ compareStyleSheets(previous, current, added, Reconstruct);
+}
+
+}
« no previous file with comments | « Source/core/dom/TreeScopeStyleSheetCollection.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698