| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "public/web/WebDocument.h" | 7 #include "public/web/WebDocument.h" |
| 8 | 8 |
| 9 #include "core/CSSPropertyNames.h" | 9 #include "core/CSSPropertyNames.h" |
| 10 #include "core/dom/NodeComputedStyle.h" | 10 #include "core/dom/NodeComputedStyle.h" |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 | 50 |
| 51 // Apply inserted stylesheet. | 51 // Apply inserted stylesheet. |
| 52 coreDoc->updateLayoutTreeIfNeeded(); | 52 coreDoc->updateLayoutTreeIfNeeded(); |
| 53 | 53 |
| 54 const ComputedStyle& styleAfterInsertion = bodyElement->computedStyleRef(); | 54 const ComputedStyle& styleAfterInsertion = bodyElement->computedStyleRef(); |
| 55 | 55 |
| 56 // Inserted stylesheet applied. | 56 // Inserted stylesheet applied. |
| 57 ASSERT_EQ(Color(0, 128, 0), styleAfterInsertion.visitedDependentColor(CSSPro
pertyColor)); | 57 ASSERT_EQ(Color(0, 128, 0), styleAfterInsertion.visitedDependentColor(CSSPro
pertyColor)); |
| 58 } | 58 } |
| 59 | 59 |
| 60 TEST(WebDocumentTest, BeginExitTransition) | |
| 61 { | |
| 62 std::string baseURL = "http://www.test.com:0/"; | |
| 63 const char* htmlURL = "transition_exit.html"; | |
| 64 const char* cssURL = "transition_exit.css"; | |
| 65 URLTestHelpers::registerMockedURLLoad(toKURL(baseURL + htmlURL), WebString::
fromUTF8(htmlURL)); | |
| 66 URLTestHelpers::registerMockedURLLoad(toKURL(baseURL + cssURL), WebString::f
romUTF8(cssURL)); | |
| 67 | |
| 68 WebViewHelper webViewHelper; | |
| 69 webViewHelper.initializeAndLoad(baseURL + htmlURL); | |
| 70 | |
| 71 WebFrame* frame = webViewHelper.webView()->mainFrame(); | |
| 72 Document* coreDoc = toLocalFrame(webViewHelper.webViewImpl()->page()->mainFr
ame())->document(); | |
| 73 Element* transitionElement = coreDoc->getElementById("foo"); | |
| 74 ASSERT(transitionElement); | |
| 75 | |
| 76 const ComputedStyle* transitionStyle = transitionElement->computedStyle(); | |
| 77 ASSERT(transitionStyle); | |
| 78 | |
| 79 HTMLElement* bodyElement = coreDoc->body(); | |
| 80 ASSERT(bodyElement); | |
| 81 | |
| 82 const ComputedStyle* bodyStyle = bodyElement->computedStyle(); | |
| 83 ASSERT(bodyStyle); | |
| 84 // The transition_exit.css stylesheet should not have been applied at this p
oint. | |
| 85 ASSERT_EQ(Color(0, 0, 0), bodyStyle->visitedDependentColor(CSSPropertyColor)
); | |
| 86 | |
| 87 frame->document().beginExitTransition("#foo", false); | |
| 88 | |
| 89 // Make sure the stylesheet load request gets processed. | |
| 90 FrameTestHelpers::pumpPendingRequestsDoNotUse(frame); | |
| 91 coreDoc->updateLayoutTreeIfNeeded(); | |
| 92 | |
| 93 // The element should now be hidden. | |
| 94 transitionStyle = transitionElement->computedStyle(); | |
| 95 ASSERT_TRUE(transitionStyle); | |
| 96 ASSERT_EQ(transitionStyle->opacity(), 0); | |
| 97 | |
| 98 // The stylesheet should now have been applied. | |
| 99 bodyStyle = bodyElement->computedStyle(); | |
| 100 ASSERT(bodyStyle); | |
| 101 ASSERT_EQ(Color(0, 128, 0), bodyStyle->visitedDependentColor(CSSPropertyColo
r)); | |
| 102 } | |
| 103 | |
| 104 | |
| 105 TEST(WebDocumentTest, BeginExitTransitionToNativeApp) | |
| 106 { | |
| 107 std::string baseURL = "http://www.test.com:0/"; | |
| 108 const char* htmlURL = "transition_exit.html"; | |
| 109 const char* cssURL = "transition_exit.css"; | |
| 110 URLTestHelpers::registerMockedURLLoad(toKURL(baseURL + htmlURL), WebString::
fromUTF8(htmlURL)); | |
| 111 URLTestHelpers::registerMockedURLLoad(toKURL(baseURL + cssURL), WebString::f
romUTF8(cssURL)); | |
| 112 | |
| 113 WebViewHelper webViewHelper; | |
| 114 webViewHelper.initializeAndLoad(baseURL + htmlURL); | |
| 115 | |
| 116 WebFrame* frame = webViewHelper.webView()->mainFrame(); | |
| 117 Document* coreDoc = toLocalFrame(webViewHelper.webViewImpl()->page()->mainFr
ame())->document(); | |
| 118 Element* transitionElement = coreDoc->getElementById("foo"); | |
| 119 ASSERT(transitionElement); | |
| 120 | |
| 121 const ComputedStyle* transitionStyle = transitionElement->computedStyle(); | |
| 122 ASSERT(transitionStyle); | |
| 123 | |
| 124 HTMLElement* bodyElement = coreDoc->body(); | |
| 125 ASSERT(bodyElement); | |
| 126 | |
| 127 const ComputedStyle* bodyStyle = bodyElement->computedStyle(); | |
| 128 ASSERT(bodyStyle); | |
| 129 // The transition_exit.css stylesheet should not have been applied at this p
oint. | |
| 130 ASSERT_EQ(Color(0, 0, 0), bodyStyle->visitedDependentColor(CSSPropertyColor)
); | |
| 131 | |
| 132 frame->document().beginExitTransition("#foo", true); | |
| 133 | |
| 134 // Make sure the stylesheet load request gets processed. | |
| 135 FrameTestHelpers::pumpPendingRequestsDoNotUse(frame); | |
| 136 coreDoc->updateLayoutTreeIfNeeded(); | |
| 137 | |
| 138 // The element should not be hidden. | |
| 139 transitionStyle = transitionElement->computedStyle(); | |
| 140 ASSERT_TRUE(transitionStyle); | |
| 141 ASSERT_EQ(transitionStyle->opacity(), 1); | |
| 142 | |
| 143 // The stylesheet should now have been applied. | |
| 144 bodyStyle = bodyElement->computedStyle(); | |
| 145 ASSERT(bodyStyle); | |
| 146 ASSERT_EQ(Color(0, 128, 0), bodyStyle->visitedDependentColor(CSSPropertyColo
r)); | |
| 147 } | |
| 148 | |
| 149 | |
| 150 TEST(WebDocumentTest, HideAndShowTransitionElements) | |
| 151 { | |
| 152 std::string baseURL = "http://www.test.com:0/"; | |
| 153 const char* htmlURL = "transition_hide_and_show.html"; | |
| 154 URLTestHelpers::registerMockedURLLoad(toKURL(baseURL + htmlURL), WebString::
fromUTF8(htmlURL)); | |
| 155 | |
| 156 WebViewHelper webViewHelper; | |
| 157 webViewHelper.initializeAndLoad(baseURL + htmlURL); | |
| 158 | |
| 159 WebFrame* frame = webViewHelper.webView()->mainFrame(); | |
| 160 Document* coreDoc = toLocalFrame(webViewHelper.webViewImpl()->page()->mainFr
ame())->document(); | |
| 161 Element* transitionElement = coreDoc->getElementById("foo"); | |
| 162 ASSERT(transitionElement); | |
| 163 | |
| 164 const ComputedStyle* transitionStyle = transitionElement->computedStyle(); | |
| 165 ASSERT(transitionStyle); | |
| 166 EXPECT_EQ(transitionStyle->opacity(), 1); | |
| 167 | |
| 168 // Hide transition elements | |
| 169 frame->document().hideTransitionElements("#foo"); | |
| 170 FrameTestHelpers::pumpPendingRequestsDoNotUse(frame); | |
| 171 coreDoc->updateLayoutTreeIfNeeded(); | |
| 172 transitionStyle = transitionElement->computedStyle(); | |
| 173 ASSERT_TRUE(transitionStyle); | |
| 174 EXPECT_EQ(transitionStyle->opacity(), 0); | |
| 175 | |
| 176 // Show transition elements | |
| 177 frame->document().showTransitionElements("#foo"); | |
| 178 FrameTestHelpers::pumpPendingRequestsDoNotUse(frame); | |
| 179 coreDoc->updateLayoutTreeIfNeeded(); | |
| 180 transitionStyle = transitionElement->computedStyle(); | |
| 181 ASSERT_TRUE(transitionStyle); | |
| 182 EXPECT_EQ(transitionStyle->opacity(), 1); | |
| 183 } | |
| 184 | |
| 185 | |
| 186 TEST(WebDocumentTest, SetIsTransitionDocument) | |
| 187 { | |
| 188 std::string baseURL = "http://www.test.com:0/"; | |
| 189 const char* htmlURL = "transition_exit.html"; | |
| 190 const char* cssURL = "transition_exit.css"; | |
| 191 URLTestHelpers::registerMockedURLLoad(toKURL(baseURL + htmlURL), WebString::
fromUTF8(htmlURL)); | |
| 192 URLTestHelpers::registerMockedURLLoad(toKURL(baseURL + cssURL), WebString::f
romUTF8(cssURL)); | |
| 193 | |
| 194 WebViewHelper webViewHelper; | |
| 195 webViewHelper.initializeAndLoad(baseURL + htmlURL); | |
| 196 | |
| 197 WebFrame* frame = webViewHelper.webView()->mainFrame(); | |
| 198 Document* coreDoc = toLocalFrame(webViewHelper.webViewImpl()->page()->mainFr
ame())->document(); | |
| 199 | |
| 200 ASSERT_FALSE(coreDoc->isTransitionDocument()); | |
| 201 | |
| 202 frame->document().setIsTransitionDocument(true); | |
| 203 ASSERT_TRUE(coreDoc->isTransitionDocument()); | |
| 204 | |
| 205 frame->document().setIsTransitionDocument(false); | |
| 206 ASSERT_FALSE(coreDoc->isTransitionDocument()); | |
| 207 } | |
| 208 | 60 |
| 209 namespace { | 61 namespace { |
| 210 const char* baseURLOriginA = "http://example.test:0/"; | 62 const char* baseURLOriginA = "http://example.test:0/"; |
| 211 const char* baseURLOriginSubA = "http://subdomain.example.test:0/"; | 63 const char* baseURLOriginSubA = "http://subdomain.example.test:0/"; |
| 212 const char* baseURLOriginB = "http://not-example.test:0/"; | 64 const char* baseURLOriginB = "http://not-example.test:0/"; |
| 213 const char* emptyFile = "first_party/empty.html"; | 65 const char* emptyFile = "first_party/empty.html"; |
| 214 const char* nestedData = "first_party/nested-data.html"; | 66 const char* nestedData = "first_party/nested-data.html"; |
| 215 const char* nestedOriginA = "first_party/nested-originA.html"; | 67 const char* nestedOriginA = "first_party/nested-originA.html"; |
| 216 const char* nestedOriginSubA = "first_party/nested-originSubA.html"; | 68 const char* nestedOriginSubA = "first_party/nested-originSubA.html"; |
| 217 const char* nestedOriginAInOriginA = "first_party/nested-originA-in-originA.
html"; | 69 const char* nestedOriginAInOriginA = "first_party/nested-originA-in-originA.
html"; |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 | 219 |
| 368 TEST_F(WebDocumentFirstPartyTest, NestedData) | 220 TEST_F(WebDocumentFirstPartyTest, NestedData) |
| 369 { | 221 { |
| 370 load(nestedData); | 222 load(nestedData); |
| 371 | 223 |
| 372 ASSERT_EQ(toOriginA(nestedData), topDocument()->firstPartyForCookies()); | 224 ASSERT_EQ(toOriginA(nestedData), topDocument()->firstPartyForCookies()); |
| 373 ASSERT_EQ(SecurityOrigin::urlWithUniqueSecurityOrigin(), nestedDocument()->f
irstPartyForCookies()); | 225 ASSERT_EQ(SecurityOrigin::urlWithUniqueSecurityOrigin(), nestedDocument()->f
irstPartyForCookies()); |
| 374 } | 226 } |
| 375 | 227 |
| 376 } | 228 } |
| OLD | NEW |