Index: third_party/WebKit/Source/core/css/AffectedByPseudoTest.cpp |
diff --git a/third_party/WebKit/Source/core/css/AffectedByFocusTest.cpp b/third_party/WebKit/Source/core/css/AffectedByPseudoTest.cpp |
similarity index 84% |
rename from third_party/WebKit/Source/core/css/AffectedByFocusTest.cpp |
rename to third_party/WebKit/Source/core/css/AffectedByPseudoTest.cpp |
index 7e3d6bb67ce99580ada6fc42d105c9f34baa081c..2106547c0074ae3f841cad4c3f4ac7c09a44b321 100644 |
--- a/third_party/WebKit/Source/core/css/AffectedByFocusTest.cpp |
+++ b/third_party/WebKit/Source/core/css/AffectedByPseudoTest.cpp |
@@ -1,7 +1,8 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Copyright 2017 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 <memory> |
#include "core/HTMLNames.h" |
#include "core/dom/Document.h" |
#include "core/dom/Element.h" |
@@ -12,13 +13,12 @@ |
#include "core/html/HTMLElement.h" |
#include "core/testing/DummyPageHolder.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-#include <memory> |
namespace blink { |
using namespace HTMLNames; |
-class AffectedByFocusTest : public ::testing::Test { |
+class AffectedByPseudoTest : public ::testing::Test { |
protected: |
struct ElementResult { |
const blink::HTMLQualifiedName tag; |
@@ -31,8 +31,8 @@ class AffectedByFocusTest : public ::testing::Test { |
Document& GetDocument() const { return *document_; } |
void SetHtmlInnerHTML(const char* html_content); |
- |
- void CheckElements(ElementResult expected[], unsigned expected_count) const; |
+ void CheckElementsForFocus(ElementResult expected[], |
+ unsigned expected_count) const; |
private: |
std::unique_ptr<DummyPageHolder> dummy_page_holder_; |
@@ -40,19 +40,20 @@ class AffectedByFocusTest : public ::testing::Test { |
Persistent<Document> document_; |
}; |
-void AffectedByFocusTest::SetUp() { |
+void AffectedByPseudoTest::SetUp() { |
dummy_page_holder_ = DummyPageHolder::Create(IntSize(800, 600)); |
document_ = &dummy_page_holder_->GetDocument(); |
DCHECK(document_); |
} |
-void AffectedByFocusTest::SetHtmlInnerHTML(const char* html_content) { |
+void AffectedByPseudoTest::SetHtmlInnerHTML(const char* html_content) { |
GetDocument().documentElement()->setInnerHTML(String::FromUTF8(html_content)); |
GetDocument().View()->UpdateAllLifecyclePhases(); |
} |
-void AffectedByFocusTest::CheckElements(ElementResult expected[], |
- unsigned expected_count) const { |
+void AffectedByPseudoTest::CheckElementsForFocus( |
+ ElementResult expected[], |
+ unsigned expected_count) const { |
unsigned i = 0; |
HTMLElement* element = GetDocument().body(); |
@@ -74,7 +75,7 @@ void AffectedByFocusTest::CheckElements(ElementResult expected[], |
// affectedByFocus. Check that all elements in a document with no :focus rules |
// gets the affectedByFocus set on ComputedStyle and not |
// childrenOrSiblingsAffectedByFocus. |
-TEST_F(AffectedByFocusTest, UAUniversalFocusRule) { |
+TEST_F(AffectedByPseudoTest, UAUniversalFocusRule) { |
ElementResult expected[] = {{bodyTag, true, false}, |
{divTag, true, false}, |
{divTag, true, false}, |
@@ -87,12 +88,12 @@ TEST_F(AffectedByFocusTest, UAUniversalFocusRule) { |
"<div><span></span></div>" |
"</body>"); |
- CheckElements(expected, sizeof(expected) / sizeof(ElementResult)); |
+ CheckElementsForFocus(expected, sizeof(expected) / sizeof(ElementResult)); |
} |
// ":focus div" will mark ascendants of all divs with |
// childrenOrSiblingsAffectedByFocus. |
-TEST_F(AffectedByFocusTest, FocusedAscendant) { |
+TEST_F(AffectedByPseudoTest, FocusedAscendant) { |
ElementResult expected[] = {{bodyTag, true, true}, |
{divTag, true, true}, |
{divTag, true, false}, |
@@ -108,12 +109,12 @@ TEST_F(AffectedByFocusTest, FocusedAscendant) { |
"<div><span></span></div>" |
"</body>"); |
- CheckElements(expected, sizeof(expected) / sizeof(ElementResult)); |
+ CheckElementsForFocus(expected, sizeof(expected) / sizeof(ElementResult)); |
} |
// "body:focus div" will mark the body element with |
// childrenOrSiblingsAffectedByFocus. |
-TEST_F(AffectedByFocusTest, FocusedAscendantWithType) { |
+TEST_F(AffectedByPseudoTest, FocusedAscendantWithType) { |
ElementResult expected[] = {{bodyTag, true, true}, |
{divTag, true, false}, |
{divTag, true, false}, |
@@ -129,7 +130,7 @@ TEST_F(AffectedByFocusTest, FocusedAscendantWithType) { |
"<div><span></span></div>" |
"</body>"); |
- CheckElements(expected, sizeof(expected) / sizeof(ElementResult)); |
+ CheckElementsForFocus(expected, sizeof(expected) / sizeof(ElementResult)); |
} |
// ":not(body):focus div" should not mark the body element with |
@@ -137,7 +138,7 @@ TEST_F(AffectedByFocusTest, FocusedAscendantWithType) { |
// Note that currently ":focus:not(body)" does not do the same. Then the :focus |
// is checked and the childrenOrSiblingsAffectedByFocus flag set before the |
// negated type selector is found. |
-TEST_F(AffectedByFocusTest, FocusedAscendantWithNegatedType) { |
+TEST_F(AffectedByPseudoTest, FocusedAscendantWithNegatedType) { |
ElementResult expected[] = {{bodyTag, true, false}, |
{divTag, true, true}, |
{divTag, true, false}, |
@@ -153,7 +154,7 @@ TEST_F(AffectedByFocusTest, FocusedAscendantWithNegatedType) { |
"<div><span></span></div>" |
"</body>"); |
- CheckElements(expected, sizeof(expected) / sizeof(ElementResult)); |
+ CheckElementsForFocus(expected, sizeof(expected) / sizeof(ElementResult)); |
} |
// Checking current behavior for ":focus + div", but this is a BUG or at best |
@@ -162,7 +163,7 @@ TEST_F(AffectedByFocusTest, FocusedAscendantWithNegatedType) { |
// the whole sub-tree of the focused element will have styles recalculated even |
// though none of the children are affected. There are other mechanisms that |
// makes sure the sibling also gets its styles recalculated. |
-TEST_F(AffectedByFocusTest, FocusedSibling) { |
+TEST_F(AffectedByPseudoTest, FocusedSibling) { |
ElementResult expected[] = {{bodyTag, true, false}, |
{divTag, true, true}, |
{spanTag, true, false}, |
@@ -179,10 +180,10 @@ TEST_F(AffectedByFocusTest, FocusedSibling) { |
"<div></div>" |
"</body>"); |
- CheckElements(expected, sizeof(expected) / sizeof(ElementResult)); |
+ CheckElementsForFocus(expected, sizeof(expected) / sizeof(ElementResult)); |
} |
-TEST_F(AffectedByFocusTest, AffectedByFocusUpdate) { |
+TEST_F(AffectedByPseudoTest, AffectedByFocusUpdate) { |
// Check that when focussing the outer div in the document below, you only |
// get a single element style recalc. |
@@ -214,7 +215,7 @@ TEST_F(AffectedByFocusTest, AffectedByFocusUpdate) { |
ASSERT_EQ(1U, element_count); |
} |
-TEST_F(AffectedByFocusTest, ChildrenOrSiblingsAffectedByFocusUpdate) { |
+TEST_F(AffectedByPseudoTest, ChildrenOrSiblingsAffectedByFocusUpdate) { |
// Check that when focussing the outer div in the document below, you get a |
// style recalc for the whole subtree. |
@@ -246,7 +247,7 @@ TEST_F(AffectedByFocusTest, ChildrenOrSiblingsAffectedByFocusUpdate) { |
ASSERT_EQ(11U, element_count); |
} |
-TEST_F(AffectedByFocusTest, InvalidationSetFocusUpdate) { |
+TEST_F(AffectedByPseudoTest, InvalidationSetFocusUpdate) { |
// Check that when focussing the outer div in the document below, you get a |
// style recalc for the outer div and the class=a div only. |
@@ -278,7 +279,7 @@ TEST_F(AffectedByFocusTest, InvalidationSetFocusUpdate) { |
ASSERT_EQ(2U, element_count); |
} |
-TEST_F(AffectedByFocusTest, NoInvalidationSetFocusUpdate) { |
+TEST_F(AffectedByPseudoTest, NoInvalidationSetFocusUpdate) { |
// Check that when focussing the outer div in the document below, you get a |
// style recalc for the outer div only. The invalidation set for :focus will |
// include 'a', but the id=d div should be affectedByFocus, not |
@@ -312,7 +313,7 @@ TEST_F(AffectedByFocusTest, NoInvalidationSetFocusUpdate) { |
ASSERT_EQ(1U, element_count); |
} |
-TEST_F(AffectedByFocusTest, FocusWithinCommonAncestor) { |
+TEST_F(AffectedByPseudoTest, FocusWithinCommonAncestor) { |
// Check that when changing the focus between 2 elements we don't need a style |
// recalc for all the ancestors affected by ":focus-within". |
@@ -350,4 +351,16 @@ TEST_F(AffectedByFocusTest, FocusWithinCommonAncestor) { |
EXPECT_EQ(2U, element_count); |
} |
+TEST_F(AffectedByPseudoTest, HoverScrollbar) { |
+ SetHtmlInnerHTML( |
+ "<style>div::-webkit-scrollbar:hover { color: pink; }</style>" |
+ "<div id=div1></div>"); |
+ |
+ GetDocument().View()->UpdateAllLifecyclePhases(); |
+ EXPECT_FALSE(GetDocument() |
+ .getElementById("div1") |
+ ->GetComputedStyle() |
+ ->AffectedByHover()); |
+} |
+ |
} // namespace blink |