1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 #include "core/dom/Element.h"
7 #include "core/frame/FrameView.h"
8 #include "core/html/HTMLDocument.h"
9 #include "core/html/HTMLElement.h"
10 #include "core/testing/DummyPageHolder.h"
11 #include <gtest/gtest.h>
13 using namespace WebCore;
17 TEST(DragUpdateTest, AffectedByDragUpdate)
19 // Check that when dragging the div in the document below, you only get a
20 // single element style recalc.
22 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSize(800, 600));
23 HTMLDocument* document = toHTMLDocument(&dummyPageHolder->document());
24 document->documentElement()->setInnerHTML("<style>div {width:100px;height:100px} div:-webkit-drag { background-color: green }</style>"
30 "</div>", ASSERT_NO_EXCEPTION);
32 document->view()->updateLayoutAndStyleIfNeededRecursive();
33 unsigned startCount = document->styleEngine()->resolverAccessCount();
35 document->documentElement()->renderer()->updateDragState(true);
36 document->view()->updateLayoutAndStyleIfNeededRecursive();
38 unsigned accessCount = document->styleEngine()->resolverAccessCount() - startCount;
40 ASSERT_EQ(1U, accessCount);
43 TEST(DragUpdateTest, ChildrenAffectedByDragUpdate)
45 // Check that when dragging the div in the document below, you get a
46 // full subtree style recalc.
48 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSize(800, 600));
49 HTMLDocument* document = toHTMLDocument(&dummyPageHolder->document());
50 document->documentElement()->setInnerHTML("<style>div {width:100px;height:100px} div:-webkit-drag span { background-color: green }</style>"
56 "</div>", ASSERT_NO_EXCEPTION);
58 document->updateLayout();
59 unsigned startCount = document->styleEngine()->resolverAccessCount();
61 document->documentElement()->renderer()->updateDragState(true);
62 document->updateLayout();
64 unsigned accessCount = document->styleEngine()->resolverAccessCount() - startCount;
66 ASSERT_EQ(5U, accessCount);