1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
// Copyright 2014 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 "core/dom/Document.h"
#include "core/dom/Element.h"
#include "core/dom/StyleEngine.h"
#include "core/frame/FrameView.h"
#include "core/testing/DummyPageHolder.h"
#include "testing/gtest/include/gtest/gtest.h"
#include <memory>
namespace blink {
TEST(DragUpdateTest, AffectedByDragUpdate) {
// Check that when dragging the div in the document below, you only get a
// single element style recalc.
std::unique_ptr<DummyPageHolder> dummyPageHolder =
DummyPageHolder::create(IntSize(800, 600));
Document& document = dummyPageHolder->document();
document.documentElement()->setInnerHTML(
"<style>div {width:100px;height:100px} div:-webkit-drag { "
"background-color: green }</style>"
"<div id='div'>"
"<span></span>"
"<span></span>"
"<span></span>"
"<span></span>"
"</div>");
document.view()->updateAllLifecyclePhases();
unsigned startCount = document.styleEngine().styleForElementCount();
document.getElementById("div")->setDragged(true);
document.view()->updateAllLifecyclePhases();
unsigned elementCount =
document.styleEngine().styleForElementCount() - startCount;
ASSERT_EQ(1U, elementCount);
}
TEST(DragUpdateTest, ChildAffectedByDragUpdate) {
// Check that when dragging the div in the document below, you get a
// single element style recalc.
std::unique_ptr<DummyPageHolder> dummyPageHolder =
DummyPageHolder::create(IntSize(800, 600));
Document& document = dummyPageHolder->document();
document.documentElement()->setInnerHTML(
"<style>div {width:100px;height:100px} div:-webkit-drag .drag { "
"background-color: green }</style>"
"<div id='div'>"
"<span></span>"
"<span></span>"
"<span class='drag'></span>"
"<span></span>"
"</div>");
document.updateStyleAndLayout();
unsigned startCount = document.styleEngine().styleForElementCount();
document.getElementById("div")->setDragged(true);
document.updateStyleAndLayout();
unsigned elementCount =
document.styleEngine().styleForElementCount() - startCount;
ASSERT_EQ(1U, elementCount);
}
TEST(DragUpdateTest, SiblingAffectedByDragUpdate) {
// Check that when dragging the div in the document below, you get a
// single element style recalc.
std::unique_ptr<DummyPageHolder> dummyPageHolder =
DummyPageHolder::create(IntSize(800, 600));
Document& document = dummyPageHolder->document();
document.documentElement()->setInnerHTML(
"<style>div {width:100px;height:100px} div:-webkit-drag + .drag { "
"background-color: green }</style>"
"<div id='div'>"
"<span></span>"
"<span></span>"
"<span></span>"
"<span></span>"
"</div>"
"<span class='drag'></span>");
document.updateStyleAndLayout();
unsigned startCount = document.styleEngine().styleForElementCount();
document.getElementById("div")->setDragged(true);
document.updateStyleAndLayout();
unsigned elementCount =
document.styleEngine().styleForElementCount() - startCount;
ASSERT_EQ(1U, elementCount);
}
} // namespace blink
|