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

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: updated CompositorMutableStateTest. Created 4 years, 6 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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 Document* document = frame()->document(); 133 Document* document = frame()->document();
134 134
135 Element* tallElement = document->getElementById("tall"); 135 Element* tallElement = document->getElementById("tall");
136 WebLayer* tallLayer = webLayerFromElement(tallElement); 136 WebLayer* tallLayer = webLayerFromElement(tallElement);
137 EXPECT_TRUE(!tallLayer); 137 EXPECT_TRUE(!tallLayer);
138 138
139 Element* proxiedElement = document->getElementById("proxied-transform"); 139 Element* proxiedElement = document->getElementById("proxied-transform");
140 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 140 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
141 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kTransform); 141 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kTransform);
142 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMutabl eProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorMutab leProperty::kOpacity)); 142 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMutabl eProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorMutab leProperty::kOpacity));
143 EXPECT_NE(0UL, proxiedLayer->elementId()); 143 EXPECT_TRUE(proxiedLayer->elementId());
144 144
145 Element* scrollElement = document->getElementById("proxied-scroller"); 145 Element* scrollElement = document->getElementById("proxied-scroller");
146 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement); 146 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement);
147 EXPECT_TRUE(scrollLayer->compositorMutableProperties() & (CompositorMutableP roperty::kScrollLeft | CompositorMutableProperty::kScrollTop)); 147 EXPECT_TRUE(scrollLayer->compositorMutableProperties() & (CompositorMutableP roperty::kScrollLeft | CompositorMutableProperty::kScrollTop));
148 EXPECT_FALSE(scrollLayer->compositorMutableProperties() & (CompositorMutable Property::kTransform | CompositorMutableProperty::kOpacity)); 148 EXPECT_FALSE(scrollLayer->compositorMutableProperties() & (CompositorMutable Property::kTransform | CompositorMutableProperty::kOpacity));
149 EXPECT_NE(0UL, scrollLayer->elementId()); 149 EXPECT_TRUE(scrollLayer->elementId());
150 150
151 WebLayer* rootScrollLayer = getRootScrollLayer(); 151 WebLayer* rootScrollLayer = getRootScrollLayer();
152 EXPECT_TRUE(rootScrollLayer->compositorMutableProperties() & (CompositorMuta bleProperty::kScrollLeft | CompositorMutableProperty::kScrollTop)); 152 EXPECT_TRUE(rootScrollLayer->compositorMutableProperties() & (CompositorMuta bleProperty::kScrollLeft | CompositorMutableProperty::kScrollTop));
153 EXPECT_FALSE(rootScrollLayer->compositorMutableProperties() & (CompositorMut ableProperty::kTransform | CompositorMutableProperty::kOpacity)); 153 EXPECT_FALSE(rootScrollLayer->compositorMutableProperties() & (CompositorMut ableProperty::kTransform | CompositorMutableProperty::kOpacity));
154 154
155 EXPECT_NE(0UL, rootScrollLayer->elementId()); 155 EXPECT_TRUE(rootScrollLayer->elementId());
156 } 156 }
157 157
158 TEST_F(CompositorWorkerTest, noProxies) 158 TEST_F(CompositorWorkerTest, noProxies)
159 { 159 {
160 // This case is identical to compositor-proxy-basic, but no proxies have 160 // This case is identical to compositor-proxy-basic, but no proxies have
161 // actually been created. 161 // actually been created.
162 registerMockedHttpURLLoad("compositor-proxy-plumbing-no-proxies.html"); 162 registerMockedHttpURLLoad("compositor-proxy-plumbing-no-proxies.html");
163 navigateTo(m_baseURL + "compositor-proxy-plumbing-no-proxies.html"); 163 navigateTo(m_baseURL + "compositor-proxy-plumbing-no-proxies.html");
164 164
165 forceFullCompositingUpdate(); 165 forceFullCompositingUpdate();
166 166
167 Document* document = frame()->document(); 167 Document* document = frame()->document();
168 168
169 Element* tallElement = document->getElementById("tall"); 169 Element* tallElement = document->getElementById("tall");
170 WebLayer* tallLayer = webLayerFromElement(tallElement); 170 WebLayer* tallLayer = webLayerFromElement(tallElement);
171 EXPECT_TRUE(!tallLayer); 171 EXPECT_TRUE(!tallLayer);
172 172
173 Element* proxiedElement = document->getElementById("proxied"); 173 Element* proxiedElement = document->getElementById("proxied");
174 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 174 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
175 EXPECT_TRUE(!proxiedLayer); 175 EXPECT_TRUE(!proxiedLayer);
176 176
177 // Note: we presume the existance of mutable properties implies that the the
178 // element has a corresponding compositor proxy. Element ids (which are also
179 // used by animations) do not have this implication, so we do not check for
180 // them here.
177 Element* scrollElement = document->getElementById("proxied-scroller"); 181 Element* scrollElement = document->getElementById("proxied-scroller");
178 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement); 182 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement);
179 EXPECT_FALSE(!!scrollLayer->compositorMutableProperties()); 183 EXPECT_FALSE(!!scrollLayer->compositorMutableProperties());
180 EXPECT_EQ(0UL, scrollLayer->elementId());
181 184
182 WebLayer* rootScrollLayer = getRootScrollLayer(); 185 WebLayer* rootScrollLayer = getRootScrollLayer();
183 EXPECT_FALSE(!!rootScrollLayer->compositorMutableProperties()); 186 EXPECT_FALSE(!!rootScrollLayer->compositorMutableProperties());
184 EXPECT_EQ(0UL, rootScrollLayer->elementId());
185 } 187 }
186 188
187 TEST_F(CompositorWorkerTest, disconnectedProxies) 189 TEST_F(CompositorWorkerTest, disconnectedProxies)
188 { 190 {
189 // This case is identical to compositor-proxy-basic, but the proxies are 191 // This case is identical to compositor-proxy-basic, but the proxies are
190 // disconnected (the result should be the same as compositor-proxy-plumbing- no-proxies). 192 // disconnected (the result should be the same as compositor-proxy-plumbing- no-proxies).
191 registerMockedHttpURLLoad("compositor-proxy-basic-disconnected.html"); 193 registerMockedHttpURLLoad("compositor-proxy-basic-disconnected.html");
192 navigateTo(m_baseURL + "compositor-proxy-basic-disconnected.html"); 194 navigateTo(m_baseURL + "compositor-proxy-basic-disconnected.html");
193 195
194 forceFullCompositingUpdate(); 196 forceFullCompositingUpdate();
195 197
196 Document* document = frame()->document(); 198 Document* document = frame()->document();
197 199
198 Element* tallElement = document->getElementById("tall"); 200 Element* tallElement = document->getElementById("tall");
199 WebLayer* tallLayer = webLayerFromElement(tallElement); 201 WebLayer* tallLayer = webLayerFromElement(tallElement);
200 EXPECT_TRUE(!tallLayer); 202 EXPECT_TRUE(!tallLayer);
201 203
202 Element* proxiedElement = document->getElementById("proxied"); 204 Element* proxiedElement = document->getElementById("proxied");
203 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 205 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
204 EXPECT_TRUE(!proxiedLayer); 206 EXPECT_TRUE(!proxiedLayer);
205 207
206 Element* scrollElement = document->getElementById("proxied-scroller"); 208 Element* scrollElement = document->getElementById("proxied-scroller");
207 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement); 209 WebLayer* scrollLayer = scrollingWebLayerFromElement(scrollElement);
208 EXPECT_FALSE(!!scrollLayer->compositorMutableProperties()); 210 EXPECT_FALSE(!!scrollLayer->compositorMutableProperties());
209 EXPECT_EQ(0UL, scrollLayer->elementId());
210 211
211 WebLayer* rootScrollLayer = getRootScrollLayer(); 212 WebLayer* rootScrollLayer = getRootScrollLayer();
212 EXPECT_FALSE(!!rootScrollLayer->compositorMutableProperties()); 213 EXPECT_FALSE(!!rootScrollLayer->compositorMutableProperties());
213 EXPECT_EQ(0UL, rootScrollLayer->elementId());
214 } 214 }
215 215
216 TEST_F(CompositorWorkerTest, applyingMutationsMultipleElements) 216 TEST_F(CompositorWorkerTest, applyingMutationsMultipleElements)
217 { 217 {
218 registerMockedHttpURLLoad("compositor-proxy-basic.html"); 218 registerMockedHttpURLLoad("compositor-proxy-basic.html");
219 navigateTo(m_baseURL + "compositor-proxy-basic.html"); 219 navigateTo(m_baseURL + "compositor-proxy-basic.html");
220 220
221 Document* document = frame()->document(); 221 Document* document = frame()->document();
222 222
223 { 223 {
224 forceFullCompositingUpdate(); 224 forceFullCompositingUpdate();
225 225
226 Element* proxiedElement = document->getElementById("proxied-transform"); 226 Element* proxiedElement = document->getElementById("proxied-transform");
227 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 227 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
228 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMuta bleProperty::kTransform); 228 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMuta bleProperty::kTransform);
229 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMu tableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorM utableProperty::kOpacity)); 229 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMu tableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorM utableProperty::kOpacity));
230 uint64_t elementId = proxiedLayer->elementId(); 230 EXPECT_TRUE(proxiedLayer->elementId());
231 EXPECT_NE(0UL, elementId);
232 231
233 TransformationMatrix transformMatrix(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44); 232 TransformationMatrix transformMatrix(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44);
234 CompositorMutation mutation; 233 CompositorMutation mutation;
235 mutation.setTransform(TransformationMatrix::toSkMatrix44(transformMatrix )); 234 mutation.setTransform(TransformationMatrix::toSkMatrix44(transformMatrix ));
236 235
237 proxiedElement->updateFromCompositorMutation(mutation); 236 proxiedElement->updateFromCompositorMutation(mutation);
238 237
239 forceFullCompositingUpdate(); 238 forceFullCompositingUpdate();
240 const String& cssValue = document->domWindow()->getComputedStyle(proxied Element, String())->getPropertyValueInternal(CSSPropertyTransform); 239 const String& cssValue = document->domWindow()->getComputedStyle(proxied Element, String())->getPropertyValueInternal(CSSPropertyTransform);
241 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", cssValue); 240 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", cssValue);
242 } 241 }
243 { 242 {
244 Element* proxiedElement = document->getElementById("proxied-opacity"); 243 Element* proxiedElement = document->getElementById("proxied-opacity");
245 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 244 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
246 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMuta bleProperty::kOpacity); 245 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMuta bleProperty::kOpacity);
247 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMu tableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorM utableProperty::kTransform)); 246 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMu tableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop | CompositorM utableProperty::kTransform));
248 uint64_t elementId = proxiedLayer->elementId(); 247 EXPECT_TRUE(proxiedLayer->elementId());
249 EXPECT_NE(0UL, elementId);
250 248
251 CompositorMutation mutation; 249 CompositorMutation mutation;
252 mutation.setOpacity(0.5); 250 mutation.setOpacity(0.5);
253 251
254 proxiedElement->updateFromCompositorMutation(mutation); 252 proxiedElement->updateFromCompositorMutation(mutation);
255 253
256 forceFullCompositingUpdate(); 254 forceFullCompositingUpdate();
257 const String& cssValue = document->domWindow()->getComputedStyle(proxied Element, String())->getPropertyValueInternal(CSSPropertyOpacity); 255 const String& cssValue = document->domWindow()->getComputedStyle(proxied Element, String())->getPropertyValueInternal(CSSPropertyOpacity);
258 EXPECT_EQ("0.5", cssValue); 256 EXPECT_EQ("0.5", cssValue);
259 } 257 }
260 } 258 }
261 259
262 TEST_F(CompositorWorkerTest, applyingMutationsMultipleProperties) 260 TEST_F(CompositorWorkerTest, applyingMutationsMultipleProperties)
263 { 261 {
264 registerMockedHttpURLLoad("compositor-proxy-basic.html"); 262 registerMockedHttpURLLoad("compositor-proxy-basic.html");
265 navigateTo(m_baseURL + "compositor-proxy-basic.html"); 263 navigateTo(m_baseURL + "compositor-proxy-basic.html");
266 264
267 Document* document = frame()->document(); 265 Document* document = frame()->document();
268 266
269 forceFullCompositingUpdate(); 267 forceFullCompositingUpdate();
270 268
271 Element* proxiedElement = document->getElementById("proxied-transform-and-op acity"); 269 Element* proxiedElement = document->getElementById("proxied-transform-and-op acity");
272 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement); 270 WebLayer* proxiedLayer = webLayerFromElement(proxiedElement);
273 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kTransform); 271 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kTransform);
274 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kOpacity); 272 EXPECT_TRUE(proxiedLayer->compositorMutableProperties() & CompositorMutableP roperty::kOpacity);
275 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMutabl eProperty::kScrollLeft | CompositorMutableProperty::kScrollTop)); 273 EXPECT_FALSE(proxiedLayer->compositorMutableProperties() & (CompositorMutabl eProperty::kScrollLeft | CompositorMutableProperty::kScrollTop));
276 uint64_t elementId = proxiedLayer->elementId(); 274 EXPECT_TRUE(proxiedLayer->elementId());
277 EXPECT_NE(0UL, elementId);
278 275
279 TransformationMatrix transformMatrix(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44); 276 TransformationMatrix transformMatrix(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44);
280 OwnPtr<CompositorMutation> mutation = adoptPtr(new CompositorMutation); 277 OwnPtr<CompositorMutation> mutation = adoptPtr(new CompositorMutation);
281 mutation->setTransform(TransformationMatrix::toSkMatrix44(transformMatrix)); 278 mutation->setTransform(TransformationMatrix::toSkMatrix44(transformMatrix));
282 mutation->setOpacity(0.5); 279 mutation->setOpacity(0.5);
283 280
284 proxiedElement->updateFromCompositorMutation(*mutation); 281 proxiedElement->updateFromCompositorMutation(*mutation);
285 { 282 {
286 const String& transformValue = document->domWindow()->getComputedStyle( proxiedElement, String())->getPropertyValueInternal(CSSPropertyTransform); 283 const String& transformValue = document->domWindow()->getComputedStyle( proxiedElement, String())->getPropertyValueInternal(CSSPropertyTransform);
287 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", transformValue); 284 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
298 { 295 {
299 const String& transformValue = document->domWindow()->getComputedStyle( proxiedElement, String())->getPropertyValueInternal(CSSPropertyTransform); 296 const String& transformValue = document->domWindow()->getComputedStyle( proxiedElement, String())->getPropertyValueInternal(CSSPropertyTransform);
300 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", transformValue); 297 EXPECT_EQ("matrix3d(11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44)", transformValue);
301 298
302 const String& opacityValue = document->domWindow()->getComputedStyle(pro xiedElement, String())->getPropertyValueInternal(CSSPropertyOpacity); 299 const String& opacityValue = document->domWindow()->getComputedStyle(pro xiedElement, String())->getPropertyValueInternal(CSSPropertyOpacity);
303 EXPECT_EQ("0.8", opacityValue); 300 EXPECT_EQ("0.8", opacityValue);
304 } 301 }
305 } 302 }
306 303
307 } // namespace blink 304 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698