Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: third_party/WebKit/Source/web/tests/CompositorWorkerTest.cpp

Issue 1973083002: Use element id's for animations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "core/frame/FrameView.h" 5 #include "core/frame/FrameView.h"
6 #include "core/layout/api/LayoutViewItem.h" 6 #include "core/layout/api/LayoutViewItem.h"
7 #include "core/layout/compositing/CompositedLayerMapping.h" 7 #include "core/layout/compositing/CompositedLayerMapping.h"
8 #include "core/layout/compositing/PaintLayerCompositor.h" 8 #include "core/layout/compositing/PaintLayerCompositor.h"
9 #include "core/page/Page.h" 9 #include "core/page/Page.h"
10 #include "platform/graphics/CompositorMutableProperties.h" 10 #include "platform/graphics/CompositorMutableProperties.h"
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 Document* document = frame()->document(); 135 Document* document = frame()->document();
136 136
137 Element* tallElement = document->getElementById("tall"); 137 Element* tallElement = document->getElementById("tall");
138 WebLayer* tallLayer = webLayerFromElement(tallElement); 138 WebLayer* tallLayer = webLayerFromElement(tallElement);
139 EXPECT_TRUE(!tallLayer); 139 EXPECT_TRUE(!tallLayer);
140 140
141 Element* proxiedElement = document->getElementById("proxied-transform"); 141 Element* proxiedElement = document->getElementById("proxied-transform");
142 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 142 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
143 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kTransform); 143 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kTransform);
144 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMutabl eProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorMutab leProperty::kOpacity)); 144 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMutabl eProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorMutab leProperty::kOpacity));
145 EXPECT_NE(0UL, proxiedLayer->elementId()); 145 EXPECT_TRUE(proxiedLayer->elementId());
146 146
147 Element* scrollElement = document->getElementById("proxied-scroller"); 147 Element* scrollElement = document->getElementById("proxied-scroller");
148 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement); 148 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement);
149 EXPECT_TRUE(scrollLayer->compositorMutableProperties() & (CompositorMutableP roperty::kScrollLeft | CompositorMutableProperty::kScrollTop)); 149 EXPECT_TRUE(scrollLayer->compositorMutableProperties() & (CompositorMutableP roperty::kScrollLeft | CompositorMutableProperty::kScrollTop));
150 EXPECT_FALSE(scrollLayer->compositorMutableProperties() & (CompositorMutable Property::kTransform | CompositorMutableProperty::kOpacity)); 150 EXPECT_FALSE(scrollLayer->compositorMutableProperties() & (CompositorMutable Property::kTransform | CompositorMutableProperty::kOpacity));
151 EXPECT_NE(0UL, scrollLayer->elementId()); 151 EXPECT_TRUE(scrollLayer->elementId());
152 152
153 WebLayer* rootScrollLayer = getRootScrollLayer(); 153 WebLayer* rootScrollLayer = getRootScrollLayer();
154 EXPECT_TRUE(rootScrollLayer->compositorMutableProperties() & (CompositorMuta bleProperty::kScrollLeft | CompositorMutableProperty::kScrollTop)); 154 EXPECT_TRUE(rootScrollLayer->compositorMutableProperties() & (CompositorMuta bleProperty::kScrollLeft | CompositorMutableProperty::kScrollTop));
155 EXPECT_FALSE(rootScrollLayer->compositorMutableProperties() & (CompositorMut ableProperty::kTransform | CompositorMutableProperty::kOpacity)); 155 EXPECT_FALSE(rootScrollLayer->compositorMutableProperties() & (CompositorMut ableProperty::kTransform | CompositorMutableProperty::kOpacity));
156 156
157 EXPECT_NE(0UL, rootScrollLayer->elementId()); 157 EXPECT_TRUE(rootScrollLayer->elementId());
158 } 158 }
159 159
160 TEST_F(CompositorWorkerTest, noProxies) 160 TEST_F(CompositorWorkerTest, noProxies)
161 { 161 {
162 // This case is identical to compositor-proxy-basic, but no proxies have 162 // This case is identical to compositor-proxy-basic, but no proxies have
163 // actually been created. 163 // actually been created.
164 registerMockedHttpURLLoad("compositor-proxy-plumbing-no-proxies.html"); 164 registerMockedHttpURLLoad("compositor-proxy-plumbing-no-proxies.html");
165 navigateTo(m_baseURL + "compositor-proxy-plumbing-no-proxies.html"); 165 navigateTo(m_baseURL + "compositor-proxy-plumbing-no-proxies.html");
166 166
167 forceFullCompositingUpdate(); 167 forceFullCompositingUpdate();
168 168
169 Document* document = frame()->document(); 169 Document* document = frame()->document();
170 170
171 Element* tallElement = document->getElementById("tall"); 171 Element* tallElement = document->getElementById("tall");
172 WebLayer* tallLayer = webLayerFromElement(tallElement); 172 WebLayer* tallLayer = webLayerFromElement(tallElement);
173 EXPECT_TRUE(!tallLayer); 173 EXPECT_TRUE(!tallLayer);
174 174
175 Element* proxiedElement = document->getElementById("proxied"); 175 Element* proxiedElement = document->getElementById("proxied");
176 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 176 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
177 EXPECT_TRUE(!proxiedLayer); 177 EXPECT_TRUE(!proxiedLayer);
178 178
179 // Note: we presume the existance of mutable properties implies that the the
180 // element has a corresponding compositor proxy. Element ids (which are also
181 // used by animations) do not have this implication, so we do not check for
182 // them here.
179 Element* scrollElement = document->getElementById("proxied-scroller"); 183 Element* scrollElement = document->getElementById("proxied-scroller");
180 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement); 184 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement);
181 EXPECT_FALSE(!!scrollLayer->compositorMutableProperties()); 185 EXPECT_FALSE(!!scrollLayer->compositorMutableProperties());
182 EXPECT_EQ(0UL, scrollLayer->elementId());
183 186
184 WebLayer* rootScrollLayer = getRootScrollLayer(); 187 WebLayer* rootScrollLayer = getRootScrollLayer();
185 EXPECT_FALSE(!!rootScrollLayer->compositorMutableProperties()); 188 EXPECT_FALSE(!!rootScrollLayer->compositorMutableProperties());
186 EXPECT_EQ(0UL, rootScrollLayer->elementId());
187 } 189 }
188 190
189 TEST_F(CompositorWorkerTest, disconnectedProxies) 191 TEST_F(CompositorWorkerTest, disconnectedProxies)
190 { 192 {
191 // This case is identical to compositor-proxy-basic, but the proxies are 193 // This case is identical to compositor-proxy-basic, but the proxies are
192 // disconnected (the result should be the same as compositor-proxy-plumbing- no-proxies). 194 // disconnected (the result should be the same as compositor-proxy-plumbing- no-proxies).
193 registerMockedHttpURLLoad("compositor-proxy-basic-disconnected.html"); 195 registerMockedHttpURLLoad("compositor-proxy-basic-disconnected.html");
194 navigateTo(m_baseURL + "compositor-proxy-basic-disconnected.html"); 196 navigateTo(m_baseURL + "compositor-proxy-basic-disconnected.html");
195 197
196 forceFullCompositingUpdate(); 198 forceFullCompositingUpdate();
197 199
198 Document* document = frame()->document(); 200 Document* document = frame()->document();
199 201
200 Element* tallElement = document->getElementById("tall"); 202 Element* tallElement = document->getElementById("tall");
201 WebLayer* tallLayer = webLayerFromElement(tallElement); 203 WebLayer* tallLayer = webLayerFromElement(tallElement);
202 EXPECT_TRUE(!tallLayer); 204 EXPECT_TRUE(!tallLayer);
203 205
204 Element* proxiedElement = document->getElementById("proxied"); 206 Element* proxiedElement = document->getElementById("proxied");
205 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 207 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
206 EXPECT_TRUE(!proxiedLayer); 208 EXPECT_TRUE(!proxiedLayer);
207 209
208 Element* scrollElement = document->getElementById("proxied-scroller"); 210 Element* scrollElement = document->getElementById("proxied-scroller");
209 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement); 211 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement);
210 EXPECT_FALSE(!!scrollLayer->compositorMutableProperties()); 212 EXPECT_FALSE(!!scrollLayer->compositorMutableProperties());
211 EXPECT_EQ(0UL, scrollLayer->elementId());
212 213
213 WebLayer* rootScrollLayer = getRootScrollLayer(); 214 WebLayer* rootScrollLayer = getRootScrollLayer();
214 EXPECT_FALSE(!!rootScrollLayer->compositorMutableProperties()); 215 EXPECT_FALSE(!!rootScrollLayer->compositorMutableProperties());
215 EXPECT_EQ(0UL, rootScrollLayer->elementId());
216 } 216 }
217 217
218 TEST_F(CompositorWorkerTest, applyingMutationsMultipleElements) 218 TEST_F(CompositorWorkerTest, applyingMutationsMultipleElements)
219 { 219 {
220 registerMockedHttpURLLoad("compositor-proxy-basic.html"); 220 registerMockedHttpURLLoad("compositor-proxy-basic.html");
221 navigateTo(m_baseURL + "compositor-proxy-basic.html"); 221 navigateTo(m_baseURL + "compositor-proxy-basic.html");
222 222
223 Document* document = frame()->document(); 223 Document* document = frame()->document();
224 224
225 { 225 {
226 forceFullCompositingUpdate(); 226 forceFullCompositingUpdate();
227 227
228 Element* proxiedElement = document->getElementById("proxied-transform"); 228 Element* proxiedElement = document->getElementById("proxied-transform");
229 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 229 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
230 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMuta bleProperty::kTransform); 230 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMuta bleProperty::kTransform);
231 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMu tableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorM utableProperty::kOpacity)); 231 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMu tableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorM utableProperty::kOpacity));
232 uint64_t elementId = proxiedLayer->elementId(); 232 EXPECT_TRUE(proxiedLayer->elementId());
233 EXPECT_NE(0UL, elementId);
234 233
235 TransformationMatrix transformMatrix(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44); 234 TransformationMatrix transformMatrix(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44);
236 CompositorMutation mutation; 235 CompositorMutation mutation;
237 mutation.setTransform(TransformationMatrix::toSkMatrix44(transformMatrix )); 236 mutation.setTransform(TransformationMatrix::toSkMatrix44(transformMatrix ));
238 237
239 proxiedElement->updateFromCompositorMutation(mutation); 238 proxiedElement->updateFromCompositorMutation(mutation);
240 239
241 forceFullCompositingUpdate(); 240 forceFullCompositingUpdate();
242 const String& cssValue = document->domWindow()->getComputedStyle(proxied Element, String())->getPropertyValueInternal(CSSPropertyTransform); 241 const String& cssValue = document->domWindow()->getComputedStyle(proxied Element, String())->getPropertyValueInternal(CSSPropertyTransform);
243 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", cssValue); 242 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", cssValue);
244 } 243 }
245 { 244 {
246 Element* proxiedElement = document->getElementById("proxied-opacity"); 245 Element* proxiedElement = document->getElementById("proxied-opacity");
247 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 246 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
248 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMuta bleProperty::kOpacity); 247 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMuta bleProperty::kOpacity);
249 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMu tableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorM utableProperty::kTransform)); 248 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMu tableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorM utableProperty::kTransform));
250 uint64_t elementId = proxiedLayer->elementId(); 249 EXPECT_TRUE(proxiedLayer->elementId());
251 EXPECT_NE(0UL, elementId);
252 250
253 CompositorMutation mutation; 251 CompositorMutation mutation;
254 mutation.setOpacity(0.5); 252 mutation.setOpacity(0.5);
255 253
256 proxiedElement->updateFromCompositorMutation(mutation); 254 proxiedElement->updateFromCompositorMutation(mutation);
257 255
258 forceFullCompositingUpdate(); 256 forceFullCompositingUpdate();
259 const String& cssValue = document->domWindow()->getComputedStyle(proxied Element, String())->getPropertyValueInternal(CSSPropertyOpacity); 257 const String& cssValue = document->domWindow()->getComputedStyle(proxied Element, String())->getPropertyValueInternal(CSSPropertyOpacity);
260 EXPECT_EQ("0.5", cssValue); 258 EXPECT_EQ("0.5", cssValue);
261 } 259 }
262 } 260 }
263 261
264 TEST_F(CompositorWorkerTest, applyingMutationsMultipleProperties) 262 TEST_F(CompositorWorkerTest, applyingMutationsMultipleProperties)
265 { 263 {
266 registerMockedHttpURLLoad("compositor-proxy-basic.html"); 264 registerMockedHttpURLLoad("compositor-proxy-basic.html");
267 navigateTo(m_baseURL + "compositor-proxy-basic.html"); 265 navigateTo(m_baseURL + "compositor-proxy-basic.html");
268 266
269 Document* document = frame()->document(); 267 Document* document = frame()->document();
270 268
271 forceFullCompositingUpdate(); 269 forceFullCompositingUpdate();
272 270
273 Element* proxiedElement = document->getElementById("proxied-transform-and-op acity"); 271 Element* proxiedElement = document->getElementById("proxied-transform-and-op acity");
274 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 272 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
275 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kTransform); 273 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kTransform);
276 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kOpacity); 274 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kOpacity);
277 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMutabl eProperty::kScrollLeft | CompositorMutableProperty::kScrollTop)); 275 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMutabl eProperty::kScrollLeft | CompositorMutableProperty::kScrollTop));
278 uint64_t elementId = proxiedLayer->elementId(); 276 EXPECT_TRUE(proxiedLayer->elementId());
279 EXPECT_NE(0UL, elementId);
280 277
281 TransformationMatrix transformMatrix(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44); 278 TransformationMatrix transformMatrix(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44);
282 std::unique_ptr<CompositorMutation> mutation = wrapUnique(new CompositorMuta tion); 279 std::unique_ptr<CompositorMutation> mutation = wrapUnique(new CompositorMuta tion);
283 mutation->setTransform(TransformationMatrix::toSkMatrix44(transformMatrix)); 280 mutation->setTransform(TransformationMatrix::toSkMatrix44(transformMatrix));
284 mutation->setOpacity(0.5); 281 mutation->setOpacity(0.5);
285 282
286 proxiedElement->updateFromCompositorMutation(*mutation); 283 proxiedElement->updateFromCompositorMutation(*mutation);
287 { 284 {
288 const String& transformValue = document->domWindow()->getComputedStyle( proxiedElement, String())->getPropertyValueInternal(CSSPropertyTransform); 285 const String& transformValue = document->domWindow()->getComputedStyle( proxiedElement, String())->getPropertyValueInternal(CSSPropertyTransform);
289 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", transformValue); 286 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", transformValue);
(...skipping 10 matching lines...) Expand all
300 { 297 {
301 const String& transformValue = document->domWindow()->getComputedStyle( proxiedElement, String())->getPropertyValueInternal(CSSPropertyTransform); 298 const String& transformValue = document->domWindow()->getComputedStyle( proxiedElement, String())->getPropertyValueInternal(CSSPropertyTransform);
302 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", transformValue); 299 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", transformValue);
303 300
304 const String& opacityValue = document->domWindow()->getComputedStyle(pro xiedElement, String())->getPropertyValueInternal(CSSPropertyOpacity); 301 const String& opacityValue = document->domWindow()->getComputedStyle(pro xiedElement, String())->getPropertyValueInternal(CSSPropertyOpacity);
305 EXPECT_EQ("0.8", opacityValue); 302 EXPECT_EQ("0.8", opacityValue);
306 } 303 }
307 } 304 }
308 305
309 } // namespace blink 306 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/LinkHighlightImpl.cpp ('k') | third_party/WebKit/public/platform/WebLayer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698