• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #include "config.h"
6 
7 #include "public/web/WebDocument.h"
8 
9 #include "core/CSSPropertyNames.h"
10 #include "core/dom/Document.h"
11 #include "core/dom/NodeRenderStyle.h"
12 #include "core/frame/LocalFrame.h"
13 #include "core/html/HTMLElement.h"
14 #include "core/rendering/style/RenderStyle.h"
15 #include "platform/graphics/Color.h"
16 #include "web/tests/FrameTestHelpers.h"
17 
18 #include <gtest/gtest.h>
19 
20 using WebCore::Color;
21 using WebCore::Document;
22 using WebCore::HTMLElement;
23 using WebCore::RenderStyle;
24 using blink::FrameTestHelpers::WebViewHelper;
25 using blink::WebDocument;
26 
27 namespace {
28 
TEST(WebDocumentTest,InsertStyleSheet)29 TEST(WebDocumentTest, InsertStyleSheet)
30 {
31     WebViewHelper webViewHelper;
32     webViewHelper.initializeAndLoad("about:blank");
33 
34     WebDocument webDoc = webViewHelper.webView()->mainFrame()->document();
35     Document* coreDoc = toLocalFrame(webViewHelper.webViewImpl()->page()->mainFrame())->document();
36 
37     webDoc.insertStyleSheet("body { color: green }");
38 
39     // Check insertStyleSheet did not cause a synchronous style recalc.
40     unsigned accessCount = coreDoc->styleEngine()->resolverAccessCount();
41     ASSERT_EQ(0U, accessCount);
42 
43     HTMLElement* bodyElement = coreDoc->body();
44     ASSERT(bodyElement);
45 
46     RenderStyle* style = bodyElement->renderStyle();
47     ASSERT(style);
48 
49     // Inserted stylesheet not yet applied.
50     ASSERT_EQ(Color(0, 0, 0), style->visitedDependentColor(WebCore::CSSPropertyColor));
51 
52     // Apply inserted stylesheet.
53     coreDoc->updateRenderTreeIfNeeded();
54 
55     style = bodyElement->renderStyle();
56     ASSERT(style);
57 
58     // Inserted stylesheet applied.
59     ASSERT_EQ(Color(0, 128, 0), style->visitedDependentColor(WebCore::CSSPropertyColor));
60 }
61 
62 }
63