Make outside-shape the default value for shape-inside
[WebKit-https.git] / Source / WebCore / ChangeLog
1 2013-02-14  Bear Travis  <betravis@adobe.com>
2
3         Make outside-shape the default value for shape-inside
4         https://bugs.webkit.org/show_bug.cgi?id=109605
5
6         Reviewed by Levi Weintraub.
7
8         Creating a single reference outside-shape value and setting it as the default
9         for shape-inside.
10
11         Existing tests cover the default value, just updating them to use outside-shape.
12
13         * rendering/style/RenderStyle.cpp:
14         (WebCore::RenderStyle::initialShapeInside): Define a local static outside-shape
15         value.
16         (WebCore):
17         * rendering/style/RenderStyle.h: Move the initialShapeInside method to the .cpp
18         file.
19
20 2013-02-14  Min Qin  <qinmin@chromium.org>
21
22         Passing alpha to DeferredImageDecoder once decoding completes
23         https://bugs.webkit.org/show_bug.cgi?id=108892
24
25         Reviewed by Stephen White.
26
27         We should pass hasAlpha value back to the DeferredImageDecoder once decoding is completed
28         Added unit tests in ImageFrameGeneratorTest.
29
30         * platform/graphics/chromium/DeferredImageDecoder.cpp:
31         (WebCore::DeferredImageDecoder::frameHasAlphaAtIndex):
32         * platform/graphics/chromium/ImageFrameGenerator.cpp:
33         (WebCore::ImageFrameGenerator::tryToScale):
34         (WebCore::ImageFrameGenerator::decode):
35         * platform/graphics/chromium/LazyDecodingPixelRef.cpp:
36         (WebCore::LazyDecodingPixelRef::LazyDecodingPixelRef):
37         (WebCore::LazyDecodingPixelRef::onUnlockPixels):
38         * platform/graphics/chromium/LazyDecodingPixelRef.h:
39         (WebCore::LazyDecodingPixelRef::hasAlpha):
40         (LazyDecodingPixelRef):
41         * platform/graphics/chromium/ScaledImageFragment.cpp:
42         (WebCore::ScaledImageFragment::ScaledImageFragment):
43         * platform/graphics/chromium/ScaledImageFragment.h:
44         (WebCore::ScaledImageFragment::create):
45         (ScaledImageFragment):
46         (WebCore::ScaledImageFragment::hasAlpha):
47
48 2013-02-14  David Grogan  <dgrogan@chromium.org>
49
50         IndexedDB: Add a few more histogram calls
51         https://bugs.webkit.org/show_bug.cgi?id=109762
52
53         Reviewed by Tony Chang.
54
55         A few places where commits could fail weren't being logged.
56
57         * Modules/indexeddb/IDBBackingStore.cpp:
58         (WebCore::IDBBackingStore::deleteDatabase):
59         (WebCore::IDBBackingStore::Transaction::commit):
60
61 2013-02-14  Tony Chang  <tony@chromium.org>
62
63         Padding and border changes doesn't trigger relayout of children
64         https://bugs.webkit.org/show_bug.cgi?id=109639
65
66         Reviewed by Kent Tamura.
67
68         In RenderBlock::layoutBlock, we only relayout our children if our logical width
69         changes. This misses cases where our logical width doesn't change (i.e., padding
70         or border changes), but our content width does change.
71
72         This is a more general case of bug 104997.
73
74         Test: fast/block/dynamic-padding-border.html
75
76         * rendering/RenderBox.cpp:
77         (WebCore::borderOrPaddingLogicalWidthChanged): Only check if the logical width changed.
78         (WebCore::RenderBox::styleDidChange): Drop the border-box condition since this can happen
79         even without border-box box sizing.
80
81 2013-02-14  Peter Rybin  <prybin@chromium.org>
82
83         Web Inspector: fix closure compilation warnings caused by setVariableValue change
84         https://bugs.webkit.org/show_bug.cgi?id=109488
85
86         Reviewed by Pavel Feldman.
87
88         Annotations are fixed as required by closure compiler.
89         Parameters in Inspector.json are reordered as required.
90
91         * inspector/InjectedScriptExterns.js:
92         (InjectedScriptHost.prototype.setFunctionVariableValue):
93         (JavaScriptCallFrame.prototype.setVariableValue):
94         * inspector/InjectedScriptSource.js:
95         (.):
96         * inspector/Inspector.json:
97         * inspector/InspectorDebuggerAgent.cpp:
98         (WebCore::InspectorDebuggerAgent::setVariableValue):
99         * inspector/InspectorDebuggerAgent.h:
100         (InspectorDebuggerAgent):
101
102 2013-02-14  Tommy Widenflycht  <tommyw@google.com>
103
104         MediaStream API: RTCDataChannel triggers a use-after-free
105         https://bugs.webkit.org/show_bug.cgi?id=109806
106
107         Reviewed by Adam Barth.
108
109         Making sure RTCPeerConnection::stop() is always called at least once.
110         Also making sure that RTCDataChannels state gets set to Closed correctly.
111
112         Hard to test in WebKit but covered by Chromium tests.
113
114         * Modules/mediastream/RTCDataChannel.cpp:
115         (WebCore::RTCDataChannel::stop):
116         * Modules/mediastream/RTCPeerConnection.cpp:
117         (WebCore::RTCPeerConnection::~RTCPeerConnection):
118         (WebCore::RTCPeerConnection::stop):
119
120 2013-02-14  Vsevolod Vlasov  <vsevik@chromium.org>
121
122         Web Inspector: [Regression] When several consecutive characters are typed each of them is marked as undoable state.
123         https://bugs.webkit.org/show_bug.cgi?id=109823
124
125         Reviewed by Pavel Feldman.
126
127         * inspector/front-end/TextEditorModel.js:
128         (WebInspector.TextEditorModel.endsWithBracketRegex.):
129
130 2013-02-14  Sheriff Bot  <webkit.review.bot@gmail.com>
131
132         Unreviewed, rolling out r142820.
133         http://trac.webkit.org/changeset/142820
134         https://bugs.webkit.org/show_bug.cgi?id=109839
135
136         Causing crashes on chromium canaries (Requested by atwilson_
137         on #webkit).
138
139         * dom/Document.cpp:
140         (WebCore::Document::updateLayout):
141         (WebCore::Document::implicitClose):
142         * rendering/RenderQuote.h:
143         (RenderQuote):
144         * rendering/RenderView.cpp:
145         * rendering/RenderView.h:
146
147 2013-02-14  Mario Sanchez Prada  <mario.prada@samsung.com>
148
149         [GTK] Missing call to g_object_ref while retrieving accessible table cells
150         https://bugs.webkit.org/show_bug.cgi?id=106903
151
152         Reviewed by Martin Robinson.
153
154         Add missing extra ref to implementation of atk_table_ref_at().
155
156         Test: accessibility/table-cell-for-column-and-row-crash.html
157
158         * accessibility/atk/WebKitAccessibleInterfaceTable.cpp:
159         (webkitAccessibleTableRefAt): This method transfers full ownership
160         over the returned AtkObject, so an extra reference is needed here.
161
162 2013-02-14  Mike Fenton  <mifenton@rim.com>
163
164         [BlackBerry] Update keyboard event details to match platform details.
165         https://bugs.webkit.org/show_bug.cgi?id=109693
166
167         Reviewed by Yong Li.
168
169         PR 220170.
170
171         Update the keyboard event details to match the
172         platform details available.
173
174         Rename helper function to better describe the conversion.
175
176         Reviewed Internally by Nima Ghanavatian and Gen Mak.
177
178         * platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:
179         (WebCore::windowsKeyCodeForBlackBerryKeycode):
180         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
181
182 2013-02-08  Andrey Kosyakov  <caseq@chromium.org>
183
184         Web Inspector: expose did{Begin,Cancel}Frame() and {will,did}Composite() on WebDebToolsAgent
185         https://bugs.webkit.org/show_bug.cgi?id=109192
186
187         Reviewed by Pavel Feldman.
188
189         - remove frame and compositing instrumentation methods from InspectorInstrumentation;
190         - expose those methods on InspectorController instead.
191
192         * WebCore.exp.in:
193         * inspector/InspectorController.cpp:
194         (WebCore::InspectorController::didBeginFrame):
195         (WebCore):
196         (WebCore::InspectorController::didCancelFrame):
197         (WebCore::InspectorController::willComposite):
198         (WebCore::InspectorController::didComposite):
199         * inspector/InspectorController.h:
200         (InspectorController):
201         * inspector/InspectorInstrumentation.cpp:
202         (WebCore):
203         * inspector/InspectorInstrumentation.h:
204         (InspectorInstrumentation):
205         * testing/Internals.cpp:
206         (WebCore::Internals::emitInspectorDidBeginFrame):
207         (WebCore::Internals::emitInspectorDidCancelFrame):
208
209 2013-02-14  Vladislav Kaznacheev  <kaznacheev@chromium.org>
210
211         Web Inspector: Fixed a layout regression in CanvasProfileView.
212         https://bugs.webkit.org/show_bug.cgi?id=109835
213
214         Reviewed by Pavel Feldman.
215
216         Changed splitView.css to supported nested SplitView instances.
217
218         * inspector/front-end/splitView.css:
219         (.split-view-vertical > .split-view-contents):
220         (.split-view-vertical > .split-view-contents-first):
221         (.split-view-vertical > .split-view-contents-first.maximized):
222         (.split-view-vertical > .split-view-contents-second):
223         (.split-view-vertical > .split-view-contents-second.maximized):
224         (.split-view-horizontal > .split-view-contents):
225         (.split-view-horizontal > .split-view-contents-first):
226         (.split-view-horizontal > .split-view-contents-first.maximized):
227         (.split-view-horizontal > .split-view-contents-second):
228         (.split-view-horizontal > .split-view-contents-second.maximized):
229         (.split-view-vertical > .split-view-sidebar.split-view-contents-first:not(.maximized)):
230         (.split-view-vertical > .split-view-sidebar.split-view-contents-second:not(.maximized)):
231         (.split-view-horizontal > .split-view-sidebar.split-view-contents-first:not(.maximized)):
232         (.split-view-horizontal > .split-view-sidebar.split-view-contents-second:not(.maximized)):
233         (.split-view-vertical > .split-view-resizer):
234         (.split-view-horizontal > .split-view-resizer):
235
236 2013-02-14  Vladislav Kaznacheev  <kaznacheev@chromium.org>
237
238         Web Inspector: Color picker should not be available in Computed Styles pane.
239         https://bugs.webkit.org/show_bug.cgi?id=109697
240
241         Reviewed by Alexander Pavlov.
242
243         Changed the parentPane parameter of WebInspector.ComputedStylePropertiesSection to the correct value
244         (the ComputedStyleSidebarPane instance).
245
246         * inspector/front-end/StylesSidebarPane.js:
247         (WebInspector.StylesSidebarPane.prototype._rebuildSectionsForStyleRules):
248
249 2013-02-14  Yury Semikhatsky  <yurys@chromium.org>
250
251         Web Inspector: don't create static local string for program literal in InspectorTimelineAgent
252         https://bugs.webkit.org/show_bug.cgi?id=109811
253
254         Reviewed by Pavel Feldman.
255
256         Use const char* constant value instead of creating String from it in thread-unsafe
257         static local variable.
258
259         * inspector/InspectorTimelineAgent.cpp:
260         (WebCore::InspectorTimelineAgent::innerAddRecordToTimeline):
261
262 2013-02-14  Pan Deng  <pan.deng@intel.com>
263
264         [Web Inspector] Fix initiator name issue in reload scenario for Network Panel.
265         https://bugs.webkit.org/show_bug.cgi?id=108746.
266
267         Reviewed by Vsevolod Vlasov.
268
269         WebInspector.displayNameForURL() does not work as expected in the reload scenario,
270         for example, "http://www.yahoo.com/" was trimed to "/" at one time, but at another,
271         the full host name will be displayed.
272         This fix return host + "/" in the issue scenario, and keep with get displayName() in ParsedURL.
273
274         No new tests.
275
276         * inspector/front-end/ParsedURL.js:
277         (WebInspector.ParsedURL.prototype.get displayName): append "/" in the display host scenario.
278         * inspector/front-end/ResourceUtils.js:
279         (WebInspector.displayNameForURL): add host in the head if url trimed as a "/".
280
281 2013-02-14  Alexei Filippov  <alph@chromium.org>
282
283         Web Inspector: fix to record button remaining red after heap snapshot is taken
284         https://bugs.webkit.org/show_bug.cgi?id=109804
285
286         Reviewed by Yury Semikhatsky.
287
288         Revert part of r142243 fix. Namely heap snapshot taking button made
289         stateless as it was before.
290
291         * inspector/front-end/HeapSnapshotView.js:
292         (WebInspector.HeapSnapshotProfileType.prototype.buttonClicked):
293         * inspector/front-end/ProfilesPanel.js:
294         (WebInspector.ProfilesPanel.prototype.toggleRecordButton):
295
296 2013-02-14  Alexander Pavlov  <apavlov@chromium.org>
297
298         Web Inspector: Consistently use SecurityOrigin::toRawString() for serialization across the backend code
299         https://bugs.webkit.org/show_bug.cgi?id=109801
300
301         Reviewed by Yury Semikhatsky.
302
303         No new tests, as existing tests cover the change.
304
305         * inspector/InspectorAgent.cpp:
306         (WebCore::InspectorAgent::didClearWindowObjectInWorld):
307         * inspector/InspectorIndexedDBAgent.cpp:
308         (WebCore::InspectorIndexedDBAgent::requestDatabaseNamesForFrame):
309         * inspector/InspectorPageAgent.cpp:
310         (WebCore::InspectorPageAgent::buildObjectForFrame):
311         * inspector/PageRuntimeAgent.cpp:
312         (WebCore::PageRuntimeAgent::notifyContextCreated):
313
314 2013-02-14  Sergio Villar Senin  <svillar@igalia.com>
315
316         Add logging support to IndexedDB for non-Chromium platforms
317         https://bugs.webkit.org/show_bug.cgi?id=109809
318
319         Reviewed by Kentaro Hara.
320
321         Enable logging of IndexedDB through the StorageAPI log channel for
322         non-Chromium architectures.
323
324         No new tests required, we're just enabling logging for IndexedDB
325         using the currently available logging framework.
326
327         * Modules/indexeddb/IDBTracing.h:
328
329 2013-02-14  Vsevolod Vlasov  <vsevik@chromium.org>
330
331         Web Inspector: Remove uriForFile and fileForURI methods from FileSystemMapping.
332         https://bugs.webkit.org/show_bug.cgi?id=109704
333
334         Reviewed by Alexander Pavlov.
335
336         Replaced this methods with one line implementation on the only call site.
337
338         * inspector/front-end/FileSystemMapping.js:
339         * inspector/front-end/FileSystemProjectDelegate.js:
340         (WebInspector.FileSystemProjectDelegate.prototype._filePathForURI):
341         (WebInspector.FileSystemProjectDelegate.prototype.setFileContent):
342         (WebInspector.FileSystemProjectDelegate.prototype._populate.filesLoaded):
343         (WebInspector.FileSystemProjectDelegate.prototype._populate):
344
345 2013-02-14  Anton Vayvod  <avayvod@chromium.org>
346
347         [Text Autosizing] Process narrow descendants with the same multiplier for the font size.
348         https://bugs.webkit.org/show_bug.cgi?id=109573
349
350         Reviewed by Julien Chaffraix.
351
352         Combine narrow descendants of the same autosizing cluster into a group that is autosized
353         with the same multiplier.
354
355         For example, on sites with a sidebar, sometimes the paragraphs next to the sidebar will have
356         a large margin individually applied (via a CSS selector), causing them all to individually
357         appear narrower than their enclosing blockContainingAllText. Rather than making each of
358         these paragraphs into a separate cluster, we want them all to share the same multiplier, as
359         if they were a single cluster.
360
361         Test: fast/text-autosizing/narrow-descendants-combined.html
362
363         * rendering/TextAutosizer.cpp:
364         (WebCore::TextAutosizer::processClusterInternal):
365
366             Common implementation for processCluster() and processCompositeCluster that accepts the
367             text width and whether the cluster should be autosized as parameters instead of
368             calculating it inline.
369
370         (WebCore::TextAutosizer::processCluster):
371
372             Calculates the text width for a single cluster and whether it should be autosized, then
373             calls processClusterInternal() to apply the multiplier and process the cluster's
374             descendants.
375
376         (WebCore::TextAutosizer::processCompositeCluster):
377
378             Calculates the text width for a group of renderers and if the group should be autosized,
379             then calls processClusterInternal() repeatedly with the same multiplier to apply it and
380             process all the descendants of the group.
381
382         (WebCore::TextAutosizer::clusterShouldBeAutosized):
383
384             Calls the multiple renderers version to avoid code duplication.
385
386         (WebCore::TextAutosizer::compositeClusterShouldBeAutosized):
387
388             The multiple renderers version of clusterShouldBeAutosized.
389
390         * rendering/TextAutosizer.h:
391
392             Updated method declarations.
393
394 2013-02-14  Andrey Adaikin  <aandrey@chromium.org>
395
396         Look into possibilities of typedef in webkit idl files
397         https://bugs.webkit.org/show_bug.cgi?id=52340
398
399         Reviewed by Kentaro Hara.
400
401         Add typedef support for WebKit IDL parser.
402         Drive by: fixed a bug of generating "unrestrictedfloat" without a space.
403
404         Added a new IDL test TestTypedefs.idl. The results were generated without typedefs.
405
406         * bindings/scripts/IDLParser.pm:
407         (assertNoExtendedAttributesInTypedef):
408         (parseDefinitions):
409         (applyTypedefs):
410         (applyTypedefsForSignature):
411         (parseTypedef):
412         (parseUnrestrictedFloatType):
413         * bindings/scripts/test/CPP/WebDOMTestTypedefs.cpp: Added.
414         (WebDOMTestTypedefs::WebDOMTestTypedefsPrivate::WebDOMTestTypedefsPrivate):
415         (WebDOMTestTypedefs::WebDOMTestTypedefsPrivate):
416         (WebDOMTestTypedefs::WebDOMTestTypedefs):
417         (WebDOMTestTypedefs::operator=):
418         (WebDOMTestTypedefs::impl):
419         (WebDOMTestTypedefs::~WebDOMTestTypedefs):
420         (WebDOMTestTypedefs::unsignedLongLongAttr):
421         (WebDOMTestTypedefs::setUnsignedLongLongAttr):
422         (WebDOMTestTypedefs::immutableSerializedScriptValue):
423         (WebDOMTestTypedefs::setImmutableSerializedScriptValue):
424         (WebDOMTestTypedefs::func):
425         (WebDOMTestTypedefs::multiTransferList):
426         (WebDOMTestTypedefs::setShadow):
427         (WebDOMTestTypedefs::nullableArrayArg):
428         (WebDOMTestTypedefs::immutablePointFunction):
429         (toWebCore):
430         (toWebKit):
431         * bindings/scripts/test/CPP/WebDOMTestTypedefs.h: Added.
432         (WebCore):
433         (WebDOMTestTypedefs):
434         * bindings/scripts/test/GObject/WebKitDOMTestTypedefs.cpp: Added.
435         (_WebKitDOMTestTypedefsPrivate):
436         (WebKit):
437         (WebKit::kit):
438         (WebKit::core):
439         (WebKit::wrapTestTypedefs):
440         (webkit_dom_test_typedefs_finalize):
441         (webkit_dom_test_typedefs_set_property):
442         (webkit_dom_test_typedefs_get_property):
443         (webkit_dom_test_typedefs_constructor):
444         (webkit_dom_test_typedefs_class_init):
445         (webkit_dom_test_typedefs_init):
446         (webkit_dom_test_typedefs_func):
447         (webkit_dom_test_typedefs_multi_transfer_list):
448         (webkit_dom_test_typedefs_set_shadow):
449         (webkit_dom_test_typedefs_nullable_array_arg):
450         (webkit_dom_test_typedefs_immutable_point_function):
451         (webkit_dom_test_typedefs_string_array_function):
452         (webkit_dom_test_typedefs_get_unsigned_long_long_attr):
453         (webkit_dom_test_typedefs_set_unsigned_long_long_attr):
454         (webkit_dom_test_typedefs_get_immutable_serialized_script_value):
455         (webkit_dom_test_typedefs_set_immutable_serialized_script_value):
456         * bindings/scripts/test/GObject/WebKitDOMTestTypedefs.h: Added.
457         (_WebKitDOMTestTypedefs):
458         (_WebKitDOMTestTypedefsClass):
459         * bindings/scripts/test/GObject/WebKitDOMTestTypedefsPrivate.h: Added.
460         (WebKit):
461         * bindings/scripts/test/JS/JSTestTypedefs.cpp: Added.
462         (WebCore):
463         (WebCore::JSTestTypedefsConstructor::constructJSTestTypedefs):
464         (WebCore::JSTestTypedefsConstructor::JSTestTypedefsConstructor):
465         (WebCore::JSTestTypedefsConstructor::finishCreation):
466         (WebCore::JSTestTypedefsConstructor::getOwnPropertySlot):
467         (WebCore::JSTestTypedefsConstructor::getOwnPropertyDescriptor):
468         (WebCore::JSTestTypedefsConstructor::getConstructData):
469         (WebCore::JSTestTypedefsPrototype::self):
470         (WebCore::JSTestTypedefsPrototype::getOwnPropertySlot):
471         (WebCore::JSTestTypedefsPrototype::getOwnPropertyDescriptor):
472         (WebCore::JSTestTypedefs::JSTestTypedefs):
473         (WebCore::JSTestTypedefs::finishCreation):
474         (WebCore::JSTestTypedefs::createPrototype):
475         (WebCore::JSTestTypedefs::destroy):
476         (WebCore::JSTestTypedefs::~JSTestTypedefs):
477         (WebCore::JSTestTypedefs::getOwnPropertySlot):
478         (WebCore::JSTestTypedefs::getOwnPropertyDescriptor):
479         (WebCore::jsTestTypedefsUnsignedLongLongAttr):
480         (WebCore::jsTestTypedefsImmutableSerializedScriptValue):
481         (WebCore::jsTestTypedefsConstructorTestSubObj):
482         (WebCore::jsTestTypedefsConstructor):
483         (WebCore::JSTestTypedefs::put):
484         (WebCore::setJSTestTypedefsUnsignedLongLongAttr):
485         (WebCore::setJSTestTypedefsImmutableSerializedScriptValue):
486         (WebCore::JSTestTypedefs::getConstructor):
487         (WebCore::jsTestTypedefsPrototypeFunctionFunc):
488         (WebCore::jsTestTypedefsPrototypeFunctionMultiTransferList):
489         (WebCore::jsTestTypedefsPrototypeFunctionSetShadow):
490         (WebCore::jsTestTypedefsPrototypeFunctionMethodWithSequenceArg):
491         (WebCore::jsTestTypedefsPrototypeFunctionNullableArrayArg):
492         (WebCore::jsTestTypedefsPrototypeFunctionFuncWithClamp):
493         (WebCore::jsTestTypedefsPrototypeFunctionImmutablePointFunction):
494         (WebCore::jsTestTypedefsPrototypeFunctionStringArrayFunction):
495         (WebCore::isObservable):
496         (WebCore::JSTestTypedefsOwner::isReachableFromOpaqueRoots):
497         (WebCore::JSTestTypedefsOwner::finalize):
498         (WebCore::toJS):
499         (WebCore::toTestTypedefs):
500         * bindings/scripts/test/JS/JSTestTypedefs.h: Added.
501         (WebCore):
502         (JSTestTypedefs):
503         (WebCore::JSTestTypedefs::create):
504         (WebCore::JSTestTypedefs::createStructure):
505         (WebCore::JSTestTypedefs::impl):
506         (WebCore::JSTestTypedefs::releaseImpl):
507         (WebCore::JSTestTypedefs::releaseImplIfNotNull):
508         (JSTestTypedefsOwner):
509         (WebCore::wrapperOwner):
510         (WebCore::wrapperContext):
511         (JSTestTypedefsPrototype):
512         (WebCore::JSTestTypedefsPrototype::create):
513         (WebCore::JSTestTypedefsPrototype::createStructure):
514         (WebCore::JSTestTypedefsPrototype::JSTestTypedefsPrototype):
515         (JSTestTypedefsConstructor):
516         (WebCore::JSTestTypedefsConstructor::create):
517         (WebCore::JSTestTypedefsConstructor::createStructure):
518         * bindings/scripts/test/ObjC/DOMTestTypedefs.h: Added.
519         * bindings/scripts/test/ObjC/DOMTestTypedefs.mm: Added.
520         (-[DOMTestTypedefs dealloc]):
521         (-[DOMTestTypedefs finalize]):
522         (-[DOMTestTypedefs unsignedLongLongAttr]):
523         (-[DOMTestTypedefs setUnsignedLongLongAttr:]):
524         (-[DOMTestTypedefs immutableSerializedScriptValue]):
525         (-[DOMTestTypedefs setImmutableSerializedScriptValue:]):
526         (-[DOMTestTypedefs multiTransferList:tx:second:txx:]):
527         (-[DOMTestTypedefs setShadow:height:blur:color:alpha:]):
528         (-[DOMTestTypedefs immutablePointFunction]):
529         (core):
530         (kit):
531         * bindings/scripts/test/ObjC/DOMTestTypedefsInternal.h: Added.
532         (WebCore):
533         * bindings/scripts/test/TestTypedefs.idl: Added.
534         * bindings/scripts/test/V8/V8TestTypedefs.cpp: Added.
535         (WebCore):
536         (WebCore::checkTypeOrDieTrying):
537         (TestTypedefsV8Internal):
538         (WebCore::TestTypedefsV8Internal::V8_USE):
539         (WebCore::TestTypedefsV8Internal::unsignedLongLongAttrAttrGetter):
540         (WebCore::TestTypedefsV8Internal::unsignedLongLongAttrAttrSetter):
541         (WebCore::TestTypedefsV8Internal::immutableSerializedScriptValueAttrGetter):
542         (WebCore::TestTypedefsV8Internal::immutableSerializedScriptValueAttrSetter):
543         (WebCore::TestTypedefsV8Internal::TestTypedefsConstructorGetter):
544         (WebCore::TestTypedefsV8Internal::TestTypedefsReplaceableAttrSetter):
545         (WebCore::TestTypedefsV8Internal::funcCallback):
546         (WebCore::TestTypedefsV8Internal::multiTransferListCallback):
547         (WebCore::TestTypedefsV8Internal::setShadowCallback):
548         (WebCore::TestTypedefsV8Internal::methodWithSequenceArgCallback):
549         (WebCore::TestTypedefsV8Internal::nullableArrayArgCallback):
550         (WebCore::TestTypedefsV8Internal::funcWithClampCallback):
551         (WebCore::TestTypedefsV8Internal::immutablePointFunctionCallback):
552         (WebCore::TestTypedefsV8Internal::stringArrayFunctionCallback):
553         (WebCore::V8TestTypedefs::constructorCallback):
554         (WebCore::ConfigureV8TestTypedefsTemplate):
555         (WebCore::V8TestTypedefs::GetRawTemplate):
556         (WebCore::V8TestTypedefs::GetTemplate):
557         (WebCore::V8TestTypedefs::HasInstance):
558         (WebCore::V8TestTypedefs::createWrapper):
559         (WebCore::V8TestTypedefs::derefObject):
560         * bindings/scripts/test/V8/V8TestTypedefs.h: Added.
561         (WebCore):
562         (V8TestTypedefs):
563         (WebCore::V8TestTypedefs::toNative):
564         (WebCore::V8TestTypedefs::installPerContextProperties):
565         (WebCore::V8TestTypedefs::installPerContextPrototypeProperties):
566         (WebCore::wrap):
567         (WebCore::toV8):
568         (WebCore::toV8Fast):
569
570 2013-02-13  Kentaro Hara  <haraken@chromium.org>
571
572         [V8] Rename XXXAccessorGetter() to XXXAttrGetterCustom(),
573         and XXXAccessorSetter() to XXXAttrSetterCustom()
574         https://bugs.webkit.org/show_bug.cgi?id=109679
575
576         Reviewed by Adam Barth.
577
578         For naming consistency and clarification.
579
580         No tests. No change in behavior.
581
582         * bindings/scripts/CodeGeneratorV8.pm:
583         (GenerateHeader):
584         (GenerateHeaderCustomCall):
585         (GenerateNormalAttrGetter):
586         (GenerateNormalAttrSetter):
587         (GenerateImplementation):
588         * bindings/scripts/test/V8/V8TestInterface.cpp:
589         (WebCore::TestInterfaceV8Internal::supplementalStr3AttrGetter):
590         (WebCore::TestInterfaceV8Internal::supplementalStr3AttrSetter):
591         * bindings/scripts/test/V8/V8TestObj.cpp:
592         (WebCore::TestObjV8Internal::customAttrAttrGetter):
593         (WebCore::TestObjV8Internal::customAttrAttrSetter):
594         * bindings/scripts/test/V8/V8TestObj.h:
595         (V8TestObj):
596         * bindings/v8/custom/V8AudioBufferSourceNodeCustom.cpp:
597         (WebCore::V8AudioBufferSourceNode::bufferAttrSetterCustom):
598         * bindings/v8/custom/V8BiquadFilterNodeCustom.cpp:
599         (WebCore::V8BiquadFilterNode::typeAttrSetterCustom):
600         * bindings/v8/custom/V8CanvasRenderingContext2DCustom.cpp:
601         (WebCore::V8CanvasRenderingContext2D::strokeStyleAttrGetterCustom):
602         (WebCore::V8CanvasRenderingContext2D::strokeStyleAttrSetterCustom):
603         (WebCore::V8CanvasRenderingContext2D::fillStyleAttrGetterCustom):
604         (WebCore::V8CanvasRenderingContext2D::fillStyleAttrSetterCustom):
605         * bindings/v8/custom/V8ClipboardCustom.cpp:
606         (WebCore::V8Clipboard::typesAttrGetterCustom):
607         * bindings/v8/custom/V8CoordinatesCustom.cpp:
608         (WebCore::V8Coordinates::altitudeAttrGetterCustom):
609         (WebCore::V8Coordinates::altitudeAccuracyAttrGetterCustom):
610         (WebCore::V8Coordinates::headingAttrGetterCustom):
611         (WebCore::V8Coordinates::speedAttrGetterCustom):
612         * bindings/v8/custom/V8CustomEventCustom.cpp:
613         (WebCore::V8CustomEvent::detailAttrGetterCustom):
614         * bindings/v8/custom/V8DOMWindowCustom.cpp:
615         (WebCore::V8DOMWindow::eventAttrGetterCustom):
616         (WebCore::V8DOMWindow::eventAttrSetterCustom):
617         (WebCore::V8DOMWindow::locationAttrSetterCustom):
618         (WebCore::V8DOMWindow::openerAttrSetterCustom):
619         * bindings/v8/custom/V8DeviceMotionEventCustom.cpp:
620         (WebCore::V8DeviceMotionEvent::accelerationAttrGetterCustom):
621         (WebCore::V8DeviceMotionEvent::accelerationIncludingGravityAttrGetterCustom):
622         (WebCore::V8DeviceMotionEvent::rotationRateAttrGetterCustom):
623         (WebCore::V8DeviceMotionEvent::intervalAttrGetterCustom):
624         * bindings/v8/custom/V8DeviceOrientationEventCustom.cpp:
625         (WebCore::V8DeviceOrientationEvent::alphaAttrGetterCustom):
626         (WebCore::V8DeviceOrientationEvent::betaAttrGetterCustom):
627         (WebCore::V8DeviceOrientationEvent::gammaAttrGetterCustom):
628         (WebCore::V8DeviceOrientationEvent::absoluteAttrGetterCustom):
629         * bindings/v8/custom/V8DocumentLocationCustom.cpp:
630         (WebCore::V8Document::locationAttrGetterCustom):
631         (WebCore::V8Document::locationAttrSetterCustom):
632         * bindings/v8/custom/V8EventCustom.cpp:
633         (WebCore::V8Event::dataTransferAttrGetterCustom):
634         (WebCore::V8Event::clipboardDataAttrGetterCustom):
635         * bindings/v8/custom/V8FileReaderCustom.cpp:
636         (WebCore::V8FileReader::resultAttrGetterCustom):
637         * bindings/v8/custom/V8HTMLDocumentCustom.cpp:
638         (WebCore::V8HTMLDocument::allAttrSetterCustom):
639         * bindings/v8/custom/V8HTMLElementCustom.cpp:
640         (WebCore::V8HTMLElement::itemValueAttrGetterCustom):
641         (WebCore::V8HTMLElement::itemValueAttrSetterCustom):
642         * bindings/v8/custom/V8HTMLFrameElementCustom.cpp:
643         (WebCore::V8HTMLFrameElement::locationAttrSetterCustom):
644         * bindings/v8/custom/V8HTMLInputElementCustom.cpp:
645         (WebCore::V8HTMLInputElement::selectionStartAttrGetterCustom):
646         (WebCore::V8HTMLInputElement::selectionStartAttrSetterCustom):
647         (WebCore::V8HTMLInputElement::selectionEndAttrGetterCustom):
648         (WebCore::V8HTMLInputElement::selectionEndAttrSetterCustom):
649         (WebCore::V8HTMLInputElement::selectionDirectionAttrGetterCustom):
650         (WebCore::V8HTMLInputElement::selectionDirectionAttrSetterCustom):
651         * bindings/v8/custom/V8HTMLLinkElementCustom.cpp:
652         (WebCore::V8HTMLLinkElement::sizesAttrGetterCustom):
653         (WebCore::V8HTMLLinkElement::sizesAttrSetterCustom):
654         * bindings/v8/custom/V8HTMLMediaElementCustom.cpp:
655         (WebCore::V8HTMLMediaElement::controllerAttrSetterCustom):
656         * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:
657         (WebCore::V8HTMLOptionsCollection::lengthAttrSetterCustom):
658         * bindings/v8/custom/V8HistoryCustom.cpp:
659         (WebCore::V8History::stateAttrGetterCustom):
660         * bindings/v8/custom/V8JavaScriptCallFrameCustom.cpp:
661         (WebCore::V8JavaScriptCallFrame::scopeChainAttrGetterCustom):
662         (WebCore::V8JavaScriptCallFrame::thisObjectAttrGetterCustom):
663         (WebCore::V8JavaScriptCallFrame::typeAttrGetterCustom):
664         * bindings/v8/custom/V8LocationCustom.cpp:
665         (WebCore::V8Location::hashAttrSetterCustom):
666         (WebCore::V8Location::hostAttrSetterCustom):
667         (WebCore::V8Location::hostnameAttrSetterCustom):
668         (WebCore::V8Location::hrefAttrSetterCustom):
669         (WebCore::V8Location::pathnameAttrSetterCustom):
670         (WebCore::V8Location::portAttrSetterCustom):
671         (WebCore::V8Location::protocolAttrSetterCustom):
672         (WebCore::V8Location::searchAttrSetterCustom):
673         (WebCore::V8Location::reloadAttrGetterCustom):
674         (WebCore::V8Location::replaceAttrGetterCustom):
675         (WebCore::V8Location::assignAttrGetterCustom):
676         * bindings/v8/custom/V8MessageEventCustom.cpp:
677         (WebCore::V8MessageEvent::dataAttrGetterCustom):
678         (WebCore::V8MessageEvent::portsAttrGetterCustom):
679         * bindings/v8/custom/V8OscillatorNodeCustom.cpp:
680         (WebCore::V8OscillatorNode::typeAttrSetterCustom):
681         * bindings/v8/custom/V8PannerNodeCustom.cpp:
682         (WebCore::V8PannerNode::panningModelAttrSetterCustom):
683         (WebCore::V8PannerNode::distanceModelAttrSetterCustom):
684         * bindings/v8/custom/V8PopStateEventCustom.cpp:
685         (WebCore::V8PopStateEvent::stateAttrGetterCustom):
686         * bindings/v8/custom/V8SVGLengthCustom.cpp:
687         (WebCore::V8SVGLength::valueAttrGetterCustom):
688         (WebCore::V8SVGLength::valueAttrSetterCustom):
689         * bindings/v8/custom/V8TrackEventCustom.cpp:
690         (WebCore::V8TrackEvent::trackAttrGetterCustom):
691         * bindings/v8/custom/V8WebKitAnimationCustom.cpp:
692         (WebCore::V8WebKitAnimation::iterationCountAttrGetterCustom):
693         * bindings/v8/custom/V8XMLHttpRequestCustom.cpp:
694         (WebCore::V8XMLHttpRequest::responseTextAttrGetterCustom):
695         (WebCore::V8XMLHttpRequest::responseAttrGetterCustom):
696
697 2013-02-14  Yury Semikhatsky  <yurys@chromium.org>
698
699         Web Inspector: extract DOM counters graph implementation into its own class
700         https://bugs.webkit.org/show_bug.cgi?id=109796
701
702         Reviewed by Alexander Pavlov.
703
704         Extracted DOM counters graph implementation into DOMCountersGraph.js leaving
705         in MemoryStatistics.js only common parts shared with NativeMemoryGraph.js
706         Added some closure annotations and converted object literals into classes
707         with named constructors.
708
709         * WebCore.gypi:
710         * WebCore.vcproj/WebCore.vcproj:
711         * inspector/compile-front-end.py:
712         * inspector/front-end/DOMCountersGraph.js: Added.
713         (WebInspector.DOMCountersGraph):
714         (WebInspector.DOMCounterUI):
715         (WebInspector.DOMCountersGraph.Counter):
716         (WebInspector.DOMCounterUI.prototype.setRange):
717         (WebInspector.DOMCounterUI.prototype.updateCurrentValue):
718         (WebInspector.DOMCounterUI.prototype.clearCurrentValueAndMarker):
719         (WebInspector.DOMCounterUI.prototype.saveImageUnderMarker):
720         (WebInspector.DOMCounterUI.prototype.restoreImageUnderMarker):
721         (WebInspector.DOMCounterUI.prototype.discardImageUnderMarker):
722         (WebInspector.DOMCountersGraph.prototype._createCurrentValuesBar):
723         (WebInspector.DOMCountersGraph.prototype._createCounterUIList):
724         (WebInspector.DOMCountersGraph.prototype._createCounterUIList.getNodeCount):
725         (WebInspector.DOMCountersGraph.prototype._createCounterUIList.getListenerCount):
726         (WebInspector.DOMCountersGraph.prototype._canvasHeight):
727         (WebInspector.DOMCountersGraph.prototype._onRecordAdded):
728         (WebInspector.DOMCountersGraph.prototype._draw):
729         (WebInspector.DOMCountersGraph.prototype._restoreImageUnderMarker):
730         (WebInspector.DOMCountersGraph.prototype._saveImageUnderMarker):
731         (WebInspector.DOMCountersGraph.prototype._drawMarker):
732         (WebInspector.DOMCountersGraph.prototype._drawGraph):
733         (WebInspector.DOMCountersGraph.prototype._discardImageUnderMarker):
734         * inspector/front-end/MemoryStatistics.js:
735         (WebInspector.MemoryStatistics):
736         (WebInspector.MemoryStatistics.Counter):
737         (WebInspector.MemoryStatistics.prototype._createCurrentValuesBar):
738         (WebInspector.MemoryStatistics.prototype._createCounterUIList):
739         (WebInspector.MemoryStatistics.prototype.setTopPosition):
740         (WebInspector.MemoryStatistics.prototype._canvasHeight):
741         (WebInspector.MemoryStatistics.prototype._onRecordAdded):
742         (WebInspector.MemoryStatistics.prototype._draw):
743         (WebInspector.MemoryStatistics.prototype._onClick):
744         (WebInspector.MemoryStatistics.prototype._onMouseOut):
745         (WebInspector.MemoryStatistics.prototype._onMouseOver):
746         (WebInspector.MemoryStatistics.prototype._onMouseMove):
747         (WebInspector.MemoryStatistics.prototype._restoreImageUnderMarker):
748         (WebInspector.MemoryStatistics.prototype._drawMarker):
749         (WebInspector.MemoryStatistics.prototype._discardImageUnderMarker):
750         * inspector/front-end/NativeMemoryGraph.js:
751         (WebInspector.NativeMemoryGraph.Counter):
752         (WebInspector.NativeMemoryGraph.prototype._onRecordAdded.addStatistics):
753         (WebInspector.NativeMemoryGraph.prototype._onRecordAdded):
754         (WebInspector.NativeMemoryGraph.prototype._draw):
755         * inspector/front-end/TimelinePanel.js:
756         * inspector/front-end/WebKit.qrc:
757
758 2013-02-14  Aivo Paas  <aivopaas@gmail.com>
759
760         Updating mouse cursor on style changes without emitting fake mousemove event
761         https://bugs.webkit.org/show_bug.cgi?id=101857
762
763         Reviewed by Allan Sandfeld Jensen.
764
765         Mouse cursor changes in styles used to be reflected in UI through dispatching a fake
766         mousemove event. The old approach has some flaws: it emits a mousemove event in
767         javascript when there is no mouse movement involved (bug 85343); the fake mousemove
768         event is cancelled while there is a mouse button held down - cursor won't change
769         until mouse is moved or the button released (bug 53341); it has extra overhead of
770         using a timer which was introduced to make scrolling smoother.
771
772         The new approach does not use the fake mousemove event. Instead, it uses only the logic
773         needed for the actual cursor change to happen. This bypasses all the mousemove event related
774         overhead. The remaining code is a stripped version of what was run through the mousemove
775         event path. Everything that was not needed for changing a cursor is stripped off, everything
776         that is needed, remains the same.
777
778         The call to update cursor was moved up in the call tree from RenderObject::StyleDidChange
779         to RenderObject::SetStyle right after the StyleDidChange call. This allows to any updates
780         and style propagations in StyleDidChange to happen and makes sure that a cursor change is
781         not missed. Previous place was at the end of RenderObject::StyleDidChange, where it could
782         have been missed because of an early exit. For example, cursor change on mousedown/up on
783         a text node missed the correct cursor in the first pass.
784
785         Refactored EventHandler::selectCursor to not take a whole mouse event but instead work with
786         HitTestResult so that EventHandler::updateCursor must not create a useless PlatformEvent.
787
788         Fixes: https://bugs.webkit.org/show_bug.cgi?id=85343 (mousemove event on cursor change)
789                https://bugs.webkit.org/show_bug.cgi?id=53341 (no cursor change when mouse button down)
790
791         Tests: fast/events/mouse-cursor-change.html
792                fast/events/mouse-cursor-no-mousemove.html
793
794         * page/EventHandler.cpp:
795         (WebCore::EventHandler::updateCursor): Newly added method for updating mouse cursor
796         (WebCore):
797         (WebCore::EventHandler::selectCursor):
798         (WebCore::EventHandler::handleMouseMoveEvent):
799         * page/EventHandler.h:
800         (EventHandler):
801         * rendering/RenderObject.cpp:
802         (WebCore::areNonIdenticalCursorListsEqual):
803         (WebCore):
804         (WebCore::areCursorsEqual):
805         (WebCore::RenderObject::setStyle):
806         (WebCore::RenderObject::styleDidChange):
807
808 2013-02-13  Ilya Tikhonovsky  <loislo@chromium.org>
809
810         Web Inspector: Native Memory Instrumentation: Report child nodes as direct members of a container node to make them look like a tree in the snapshot.
811         https://bugs.webkit.org/show_bug.cgi?id=109703
812
813         Also we need to traverse the tree from the top root element down to the leaves.
814
815         Reviewed by Yury Semikhatsky.
816
817         * dom/ContainerNode.cpp:
818         (WebCore::ContainerNode::reportMemoryUsage):
819         * dom/Node.cpp:
820         (WebCore::Node::reportMemoryUsage):
821         * inspector/InspectorMemoryAgent.cpp:
822         (WebCore):
823
824 2013-02-13  Hayato Ito  <hayato@chromium.org>
825
826         [Shadow DOM] Implements a '::distributed()' pseudo element.
827         https://bugs.webkit.org/show_bug.cgi?id=82169
828
829         Reviewed by Dimitri Glazkov.
830
831         Implements a '::distributed()' pseudo element.
832         See the Shadow DOM specification and the filed bug for the detail.
833
834         - http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#selecting-nodes-distributed-to-insertion-points
835         - https://www.w3.org/Bugs/Public/show_bug.cgi?id=19684
836
837         For example, suppose we are given the following DOM tree and shadow tree:
838
839         - <A>
840           - <B>
841             - <C>
842
843         [A's ShadowRoot]
844           <D>
845           - <style>
846               E content::distributed(B C) { color: green; }
847           - <E>
848             - <content>  (Node B is distributed to this insertion point.)
849
850         In this case, the style rule defined in the shadow tree matches node 'C'.
851
852         A '::distributed()' pseudo element can not be a pseudo class since
853         an intersection between matched_elements(some_selector) and
854         matched_elements(some_selector::distributed(...)) is always an
855         empty set. A '::distributed()' pseudo element is the first-ever
856         *functional* pseudo element which takes a parameter, which can be
857         a selector.
858
859         This rule crosses the shadow boundary from a shadow tree to the
860         tree of its shadow host. That means a rule which includes
861         '::distributed()' pseudo element is defined in shadow tree, but
862         the node which is matched in the rule, the subject of the
863         selector, is outside of the shadow tree. Therefore, we cannot
864         predict where the subject of the selector will be beforehand.
865         Current CSS implementation assumes the subject of the selector
866         must exist in the current scope.
867
868         To overcome this issue, DocumentRuleSets now has a instance of
869         ShadowDistributedRules class.  A style rule will be stored in this
870         instance if the rule includes a '::distributed()' pseudo element.
871         This class also keeps track of each RuleSet by mapping it with a
872         scope where the rule was originally defined. In the example, the
873         scope is A's ShadowRoot.  The scope is used to check whether the
874         left-most matched element (in the example, it's a node 'E') exists
875         in the scope.
876
877         Internally, a '::distributed' pseudo element is represented by a
878         newly introduced 'ShadowDistributed' relation.  That makes an
879         implementation of SelectorChecker::checkSelector() much simpler.
880         A transformation from a distributed pseudo element to a
881         ShadowDistributed is done in parsing stage of CSS.
882
883         Since '::distributed()' is an experimental feature, it's actually
884         prefixed with '-webkit-' and guarded by SHADOW_DOM flag.
885
886         Tests: fast/dom/shadow/distributed-pseudo-element-for-shadow-element.html
887                fast/dom/shadow/distributed-pseudo-element-match-all.html
888                fast/dom/shadow/distributed-pseudo-element-match-descendant.html
889                fast/dom/shadow/distributed-pseudo-element-nested.html
890                fast/dom/shadow/distributed-pseudo-element-no-match.html
891                fast/dom/shadow/distributed-pseudo-element-reprojection.html
892                fast/dom/shadow/distributed-pseudo-element-scoped.html
893                fast/dom/shadow/distributed-pseudo-element-support-selector.html
894                fast/dom/shadow/distributed-pseudo-element-used-in-selector-list.html
895                fast/dom/shadow/distributed-pseudo-element-with-any.html
896                fast/dom/shadow/distributed-pseudo-element.html
897
898         * css/CSSGrammar.y.in:
899         CSS Grammar was updated to support '::distrbuted(selector)'.
900         This pseudo element is the first pseudo element which can take a selector as a parameter.
901         * css/CSSParser.cpp:
902         (WebCore::CSSParser::detectDashToken):
903         (WebCore::CSSParser::rewriteSpecifiersWithNamespaceIfNeeded):
904         (WebCore::CSSParser::rewriteSpecifiersWithElementName):
905         Here we are converting a '::distributed' pseudo element into a
906         ShadowDistributed relation internally.  To support the conversion,
907         these rewriteSpecifiersXXX functions (formally called
908         updateSpecifiersXXX) now return the specifiers which may be
909         converted.
910         (WebCore::CSSParser::rewriteSpecifiers):
911         * css/CSSParser.h:
912         * css/CSSParserValues.cpp:
913         (WebCore::CSSParserSelector::CSSParserSelector):
914         * css/CSSParserValues.h:
915         (CSSParserSelector):
916         (WebCore::CSSParserSelector::functionArgumentSelector):
917         To hold an intermediate selector which appears at the position of an argument in
918         functional pseudo element when parsing CSS.
919         (WebCore::CSSParserSelector::setFunctionArgumentSelector):
920         (WebCore::CSSParserSelector::isDistributedPseudoElement):
921         * css/CSSSelector.cpp:
922         Add new pseudo element, PseudoDistributed, and its internal representation, ShadowDistributed relation.
923         (WebCore::CSSSelector::pseudoId):
924         (WebCore::nameToPseudoTypeMap):
925         (WebCore::CSSSelector::extractPseudoType):
926         (WebCore::CSSSelector::selectorText):
927         * css/CSSSelector.h:
928         (CSSSelector):
929         (WebCore):
930         (WebCore::CSSSelector::isDistributedPseudoElement):
931         (WebCore::CSSSelector::isShadowDistributed):
932         * css/CSSSelectorList.cpp:
933         (WebCore):
934         (SelectorHasShadowDistributed):
935         (WebCore::SelectorHasShadowDistributed::operator()):
936         (WebCore::CSSSelectorList::hasShadowDistributedAt):
937         * css/CSSSelectorList.h:
938         (CSSSelectorList):
939         * css/DocumentRuleSets.cpp:
940         (WebCore):
941         (WebCore::ShadowDistributedRules::addRule):
942         Every CSS rule which includes '::distributed(...)' should be managed by calling this function.
943         (WebCore::ShadowDistributedRules::collectMatchRequests):
944         (WebCore::DocumentRuleSets::resetAuthorStyle):
945         * css/DocumentRuleSets.h:
946         (WebCore):
947         (ShadowDistributedRules):
948         (WebCore::ShadowDistributedRules::clear):
949         (DocumentRuleSets):
950         (WebCore::DocumentRuleSets::shadowDistributedRules)
951         DocumentRuleSets owns an instance of ShadowDistributedRules.
952         * css/RuleSet.cpp:
953         (WebCore::RuleSet::addChildRules):
954         Updated to check whether the rule contains '::distributed()' or not.
955         * css/SelectorChecker.cpp:
956         (WebCore::SelectorChecker::match):
957         Support ShadowDistributed relation. Check all possible insertion points where a node is distributed.
958         * css/SelectorChecker.h:
959         (WebCore::SelectorChecker::SelectorCheckingContext::SelectorCheckingContext):
960         Adds enum of BehaviorAtBoundary. '::distributed()' is the only
961         rule which uses 'CrossedBoundary' since it is the only rule which
962         crosses shadow boundaries.
963         (SelectorCheckingContext):
964         * css/SelectorFilter.cpp:
965         (WebCore::SelectorFilter::collectIdentifierHashes):
966         * css/StyleResolver.cpp:
967         (WebCore::StyleResolver::collectMatchingRules):
968         (WebCore::StyleResolver::matchAuthorRules):
969         (WebCore::StyleResolver::collectMatchingRulesForList):
970         (WebCore::StyleResolver::ruleMatches):
971         * css/StyleResolver.h:
972         (MatchRequest):
973         (WebCore::MatchRequest::MatchRequest): Add behaviorAtBoundary field.
974         (WebCore):
975         (StyleResolver):
976         * html/shadow/InsertionPoint.cpp:
977         (WebCore::collectInsertionPointsWhereNodeIsDistributed):
978         (WebCore):
979         * html/shadow/InsertionPoint.h:
980         (WebCore):
981
982 2013-02-13  Kentaro Hara  <haraken@chromium.org>
983
984         [V8] Generate wrapper methods for custom methods
985         https://bugs.webkit.org/show_bug.cgi?id=109678
986
987         Reviewed by Adam Barth.
988
989         Currently V8 directly calls back custom methods written
990         in custom binding files. This makes it impossible for code
991         generators to hook custom methods (e.g. Code generators cannot
992         insert a code for FeatureObservation into custom methods).
993         To solve the problem, we should generate wrapper methods for
994         custom methods.
995
996         No tests. No change in behavior.
997
998         * page/DOMWindow.idl: Removed overloaded methods. The fact that methods in an IDL
999         file are overloaded but they are not overloaded in custom bindings confuses code
1000         generators. (For some reason, this problem hasn't appeared before this change.)
1001         * xml/XMLHttpRequest.idl: Ditto.
1002
1003         * bindings/scripts/CodeGeneratorV8.pm:
1004         (GenerateHeader):
1005         (GenerateDomainSafeFunctionGetter):
1006         (GenerateEventListenerCallback):
1007         (GenerateFunctionCallback):
1008         (GenerateNonStandardFunction):
1009         (GenerateImplementation):
1010         * bindings/scripts/test/V8/V8TestInterface.cpp:
1011         (WebCore::TestInterfaceV8Internal::supplementalMethod3Callback):
1012         (TestInterfaceV8Internal):
1013         (WebCore):
1014         * bindings/scripts/test/V8/V8TestObj.cpp:
1015         (WebCore::TestObjV8Internal::customMethodCallback):
1016         (TestObjV8Internal):
1017         (WebCore::TestObjV8Internal::customMethodWithArgsCallback):
1018         (WebCore::TestObjV8Internal::classMethod2Callback):
1019         (WebCore):
1020         (WebCore::ConfigureV8TestObjTemplate):
1021         * bindings/scripts/test/V8/V8TestObj.h:
1022         (V8TestObj):
1023         * bindings/v8/custom/V8ClipboardCustom.cpp:
1024         (WebCore::V8Clipboard::clearDataCallbackCustom):
1025         (WebCore::V8Clipboard::setDragImageCallbackCustom):
1026         * bindings/v8/custom/V8ConsoleCustom.cpp:
1027         (WebCore::V8Console::traceCallbackCustom):
1028         (WebCore::V8Console::assertCallbackCustom):
1029         (WebCore::V8Console::profileCallbackCustom):
1030         (WebCore::V8Console::profileEndCallbackCustom):
1031         * bindings/v8/custom/V8CryptoCustom.cpp:
1032         (WebCore::V8Crypto::getRandomValuesCallbackCustom):
1033         * bindings/v8/custom/V8DOMFormDataCustom.cpp:
1034         (WebCore::V8DOMFormData::appendCallbackCustom):
1035         * bindings/v8/custom/V8DOMWindowCustom.cpp:
1036         (WebCore::V8DOMWindow::addEventListenerCallbackCustom):
1037         (WebCore::V8DOMWindow::removeEventListenerCallbackCustom):
1038         (WebCore::V8DOMWindow::postMessageCallbackCustom):
1039         (WebCore::V8DOMWindow::toStringCallbackCustom):
1040         (WebCore::V8DOMWindow::releaseEventsCallbackCustom):
1041         (WebCore::V8DOMWindow::captureEventsCallbackCustom):
1042         (WebCore::V8DOMWindow::showModalDialogCallbackCustom):
1043         (WebCore::V8DOMWindow::openCallbackCustom):
1044         (WebCore::V8DOMWindow::setTimeoutCallbackCustom):
1045         (WebCore::V8DOMWindow::setIntervalCallbackCustom):
1046         * bindings/v8/custom/V8DataViewCustom.cpp:
1047         (WebCore::V8DataView::getInt8CallbackCustom):
1048         (WebCore::V8DataView::getUint8CallbackCustom):
1049         (WebCore::V8DataView::setInt8CallbackCustom):
1050         (WebCore::V8DataView::setUint8CallbackCustom):
1051         * bindings/v8/custom/V8DedicatedWorkerContextCustom.cpp:
1052         (WebCore::V8DedicatedWorkerContext::postMessageCallbackCustom):
1053         * bindings/v8/custom/V8DeviceMotionEventCustom.cpp:
1054         (WebCore::V8DeviceMotionEvent::initDeviceMotionEventCallbackCustom):
1055         * bindings/v8/custom/V8DeviceOrientationEventCustom.cpp:
1056         (WebCore::V8DeviceOrientationEvent::initDeviceOrientationEventCallbackCustom):
1057         * bindings/v8/custom/V8DocumentCustom.cpp:
1058         (WebCore::V8Document::evaluateCallbackCustom):
1059         (WebCore::V8Document::createTouchListCallbackCustom):
1060         * bindings/v8/custom/V8GeolocationCustom.cpp:
1061         (WebCore::V8Geolocation::getCurrentPositionCallbackCustom):
1062         (WebCore::V8Geolocation::watchPositionCallbackCustom):
1063         * bindings/v8/custom/V8HTMLAllCollectionCustom.cpp:
1064         (WebCore::V8HTMLAllCollection::itemCallbackCustom):
1065         (WebCore::V8HTMLAllCollection::namedItemCallbackCustom):
1066         * bindings/v8/custom/V8HTMLCanvasElementCustom.cpp:
1067         (WebCore::V8HTMLCanvasElement::getContextCallbackCustom):
1068         (WebCore::V8HTMLCanvasElement::toDataURLCallbackCustom):
1069         * bindings/v8/custom/V8HTMLDocumentCustom.cpp:
1070         (WebCore::V8HTMLDocument::writeCallbackCustom):
1071         (WebCore::V8HTMLDocument::writelnCallbackCustom):
1072         (WebCore::V8HTMLDocument::openCallbackCustom):
1073         * bindings/v8/custom/V8HTMLFormControlsCollectionCustom.cpp:
1074         (WebCore::V8HTMLFormControlsCollection::namedItemCallbackCustom):
1075         * bindings/v8/custom/V8HTMLImageElementConstructor.cpp:
1076         (WebCore::v8HTMLImageElementConstructorCallbackCustom):
1077         (WebCore::V8HTMLImageElementConstructor::GetTemplate):
1078         * bindings/v8/custom/V8HTMLInputElementCustom.cpp:
1079         (WebCore::V8HTMLInputElement::setSelectionRangeCallbackCustom):
1080         * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:
1081         (WebCore::V8HTMLOptionsCollection::namedItemCallbackCustom):
1082         (WebCore::V8HTMLOptionsCollection::removeCallbackCustom):
1083         (WebCore::V8HTMLOptionsCollection::addCallbackCustom):
1084         * bindings/v8/custom/V8HTMLSelectElementCustom.cpp:
1085         (WebCore::V8HTMLSelectElement::removeCallbackCustom):
1086         * bindings/v8/custom/V8HistoryCustom.cpp:
1087         (WebCore::V8History::pushStateCallbackCustom):
1088         (WebCore::V8History::replaceStateCallbackCustom):
1089         * bindings/v8/custom/V8InjectedScriptHostCustom.cpp:
1090         (WebCore::V8InjectedScriptHost::inspectedObjectCallbackCustom):
1091         (WebCore::V8InjectedScriptHost::internalConstructorNameCallbackCustom):
1092         (WebCore::V8InjectedScriptHost::isHTMLAllCollectionCallbackCustom):
1093         (WebCore::V8InjectedScriptHost::typeCallbackCustom):
1094         (WebCore::V8InjectedScriptHost::functionDetailsCallbackCustom):
1095         (WebCore::V8InjectedScriptHost::getInternalPropertiesCallbackCustom):
1096         (WebCore::V8InjectedScriptHost::getEventListenersCallbackCustom):
1097         (WebCore::V8InjectedScriptHost::inspectCallbackCustom):
1098         (WebCore::V8InjectedScriptHost::databaseIdCallbackCustom):
1099         (WebCore::V8InjectedScriptHost::storageIdCallbackCustom):
1100         (WebCore::V8InjectedScriptHost::evaluateCallbackCustom):
1101         (WebCore::V8InjectedScriptHost::setFunctionVariableValueCallbackCustom):
1102         * bindings/v8/custom/V8InspectorFrontendHostCustom.cpp:
1103         (WebCore::V8InspectorFrontendHost::platformCallbackCustom):
1104         (WebCore::V8InspectorFrontendHost::portCallbackCustom):
1105         (WebCore::V8InspectorFrontendHost::showContextMenuCallbackCustom):
1106         (WebCore::V8InspectorFrontendHost::recordActionTakenCallbackCustom):
1107         (WebCore::V8InspectorFrontendHost::recordPanelShownCallbackCustom):
1108         (WebCore::V8InspectorFrontendHost::recordSettingChangedCallbackCustom):
1109         * bindings/v8/custom/V8JavaScriptCallFrameCustom.cpp:
1110         (WebCore::V8JavaScriptCallFrame::evaluateCallbackCustom):
1111         (WebCore::V8JavaScriptCallFrame::restartCallbackCustom):
1112         (WebCore::V8JavaScriptCallFrame::setVariableValueCallbackCustom):
1113         (WebCore::V8JavaScriptCallFrame::scopeTypeCallbackCustom):
1114         * bindings/v8/custom/V8LocationCustom.cpp:
1115         (WebCore::V8Location::reloadAccessorGetter):
1116         (WebCore::V8Location::replaceAccessorGetter):
1117         (WebCore::V8Location::assignAccessorGetter):
1118         (WebCore::V8Location::reloadCallbackCustom):
1119         (WebCore::V8Location::replaceCallbackCustom):
1120         (WebCore::V8Location::assignCallbackCustom):
1121         (WebCore::V8Location::valueOfCallbackCustom):
1122         (WebCore::V8Location::toStringCallbackCustom):
1123         * bindings/v8/custom/V8MessageEventCustom.cpp:
1124         (WebCore::V8MessageEvent::initMessageEventCallbackCustom):
1125         (WebCore::V8MessageEvent::webkitInitMessageEventCallbackCustom):
1126         * bindings/v8/custom/V8MessagePortCustom.cpp:
1127         (WebCore::V8MessagePort::postMessageCallbackCustom):
1128         * bindings/v8/custom/V8NodeCustom.cpp:
1129         (WebCore::V8Node::insertBeforeCallbackCustom):
1130         (WebCore::V8Node::replaceChildCallbackCustom):
1131         (WebCore::V8Node::removeChildCallbackCustom):
1132         (WebCore::V8Node::appendChildCallbackCustom):
1133         * bindings/v8/custom/V8NotificationCenterCustom.cpp:
1134         (WebCore::V8NotificationCenter::requestPermissionCallbackCustom):
1135         * bindings/v8/custom/V8NotificationCustom.cpp:
1136         (WebCore::V8Notification::requestPermissionCallbackCustom):
1137         * bindings/v8/custom/V8SQLResultSetRowListCustom.cpp:
1138         (WebCore::V8SQLResultSetRowList::itemCallbackCustom):
1139         * bindings/v8/custom/V8SQLTransactionCustom.cpp:
1140         (WebCore::V8SQLTransaction::executeSqlCallbackCustom):
1141         * bindings/v8/custom/V8SQLTransactionSyncCustom.cpp:
1142         (WebCore::V8SQLTransactionSync::executeSqlCallbackCustom):
1143         * bindings/v8/custom/V8SVGLengthCustom.cpp:
1144         (WebCore::V8SVGLength::convertToSpecifiedUnitsCallbackCustom):
1145         * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:
1146         (WebCore::V8WebGLRenderingContext::getAttachedShadersCallbackCustom):
1147         (WebCore::V8WebGLRenderingContext::getBufferParameterCallbackCustom):
1148         (WebCore::V8WebGLRenderingContext::getExtensionCallbackCustom):
1149         (WebCore::V8WebGLRenderingContext::getFramebufferAttachmentParameterCallbackCustom):
1150         (WebCore::V8WebGLRenderingContext::getParameterCallbackCustom):
1151         (WebCore::V8WebGLRenderingContext::getProgramParameterCallbackCustom):
1152         (WebCore::V8WebGLRenderingContext::getRenderbufferParameterCallbackCustom):
1153         (WebCore::V8WebGLRenderingContext::getShaderParameterCallbackCustom):
1154         (WebCore::V8WebGLRenderingContext::getSupportedExtensionsCallbackCustom):
1155         (WebCore::V8WebGLRenderingContext::getTexParameterCallbackCustom):
1156         (WebCore::V8WebGLRenderingContext::getUniformCallbackCustom):
1157         (WebCore::V8WebGLRenderingContext::getVertexAttribCallbackCustom):
1158         (WebCore::V8WebGLRenderingContext::uniform1fvCallbackCustom):
1159         (WebCore::V8WebGLRenderingContext::uniform1ivCallbackCustom):
1160         (WebCore::V8WebGLRenderingContext::uniform2fvCallbackCustom):
1161         (WebCore::V8WebGLRenderingContext::uniform2ivCallbackCustom):
1162         (WebCore::V8WebGLRenderingContext::uniform3fvCallbackCustom):
1163         (WebCore::V8WebGLRenderingContext::uniform3ivCallbackCustom):
1164         (WebCore::V8WebGLRenderingContext::uniform4fvCallbackCustom):
1165         (WebCore::V8WebGLRenderingContext::uniform4ivCallbackCustom):
1166         (WebCore::V8WebGLRenderingContext::uniformMatrix2fvCallbackCustom):
1167         (WebCore::V8WebGLRenderingContext::uniformMatrix3fvCallbackCustom):
1168         (WebCore::V8WebGLRenderingContext::uniformMatrix4fvCallbackCustom):
1169         (WebCore::V8WebGLRenderingContext::vertexAttrib1fvCallbackCustom):
1170         (WebCore::V8WebGLRenderingContext::vertexAttrib2fvCallbackCustom):
1171         (WebCore::V8WebGLRenderingContext::vertexAttrib3fvCallbackCustom):
1172         (WebCore::V8WebGLRenderingContext::vertexAttrib4fvCallbackCustom):
1173         * bindings/v8/custom/V8WorkerContextCustom.cpp:
1174         (WebCore::V8WorkerContext::importScriptsCallbackCustom):
1175         (WebCore::V8WorkerContext::setTimeoutCallbackCustom):
1176         (WebCore::V8WorkerContext::setIntervalCallbackCustom):
1177         * bindings/v8/custom/V8WorkerCustom.cpp:
1178         (WebCore::V8Worker::postMessageCallbackCustom):
1179         * bindings/v8/custom/V8XMLHttpRequestCustom.cpp:
1180         (WebCore::V8XMLHttpRequest::openCallbackCustom):
1181         (WebCore::V8XMLHttpRequest::sendCallbackCustom):
1182         * bindings/v8/custom/V8XSLTProcessorCustom.cpp:
1183         (WebCore::V8XSLTProcessor::setParameterCallbackCustom):
1184         (WebCore::V8XSLTProcessor::getParameterCallbackCustom):
1185         (WebCore::V8XSLTProcessor::removeParameterCallbackCustom):
1186
1187 2013-02-13  Praveen R Jadhav  <praveen.j@samsung.com>
1188
1189         JSObject for ChannelSplitterNode and ChannelMergerNode are not created.
1190         https://bugs.webkit.org/show_bug.cgi?id=109542
1191
1192         Reviewed by Kentaro Hara.
1193
1194         "JSGenerateToJSObject" should be included in IDL files
1195         of ChannelSplitterNode and ChannelMergerNode in WebAudio.
1196         This ensures html files to access corresponding objects.
1197
1198         * Modules/webaudio/ChannelMergerNode.idl:
1199         * Modules/webaudio/ChannelSplitterNode.idl:
1200
1201 2013-02-13   Vineet Chaudhary  <rgf748@motorola.com>
1202
1203         [Regression] After r142831  collection-null-like-arguments.html layout test failing
1204         https://bugs.webkit.org/show_bug.cgi?id=109780
1205
1206         Reviewed by Kentaro Hara.
1207
1208         No new tests. LayoutTests/fast/dom/collection-null-like-arguments.html
1209         Should pass now.
1210
1211         * bindings/js/JSHTMLAllCollectionCustom.cpp: Return null for namedItem() only.
1212         (WebCore::getNamedItems):
1213         (WebCore::JSHTMLAllCollection::namedItem):
1214         * bindings/js/JSHTMLFormControlsCollectionCustom.cpp: Ditto.
1215         (WebCore::getNamedItems):
1216         (WebCore::JSHTMLFormControlsCollection::namedItem):
1217         * bindings/js/JSHTMLOptionsCollectionCustom.cpp: Ditto.
1218         (WebCore::getNamedItems):
1219         (WebCore::JSHTMLOptionsCollection::namedItem):
1220
1221 2013-02-13  Soo-Hyun Choi  <sh9.choi@samsung.com>
1222
1223         Fix indentation error in MediaPlayerPrivateGStreamer.h
1224         https://bugs.webkit.org/show_bug.cgi?id=109768
1225
1226         Reviewed by Kentaro Hara.
1227
1228         No new tests as this patch just changes indentation style.
1229
1230         * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
1231         (MediaPlayerPrivateGStreamer):
1232         (WebCore::MediaPlayerPrivateGStreamer::hasVideo):
1233         (WebCore::MediaPlayerPrivateGStreamer::hasAudio):
1234         (WebCore::MediaPlayerPrivateGStreamer::engineDescription):
1235         (WebCore::MediaPlayerPrivateGStreamer::isLiveStream):
1236
1237 2013-02-13  Adam Barth  <abarth@webkit.org>
1238
1239         TokenPreloadScanner should be (mostly!) thread-safe
1240         https://bugs.webkit.org/show_bug.cgi?id=109760
1241
1242         Reviewed by Eric Seidel.
1243
1244         This patch makes the bulk of TokenPreloadScanner thread-safe.  The one
1245         remaining wart is processPossibleBaseTag because it wants to grub
1246         around in the base tag's attributes. I have a plan for that, but it's
1247         going to need to wait for the next patch.
1248
1249         * html/parser/HTMLPreloadScanner.cpp:
1250         (WebCore::isStartTag):
1251         (WebCore::isStartOrEndTag):
1252         (WebCore::TokenPreloadScanner::identifierFor):
1253         (WebCore::TokenPreloadScanner::inititatorFor):
1254         (WebCore::TokenPreloadScanner::StartTagScanner::StartTagScanner):
1255         (WebCore::TokenPreloadScanner::StartTagScanner::processAttributes):
1256         (TokenPreloadScanner::StartTagScanner):
1257         (WebCore::TokenPreloadScanner::processPossibleTemplateTag):
1258         (WebCore::TokenPreloadScanner::processPossibleStyleTag):
1259         (WebCore::TokenPreloadScanner::processPossibleBaseTag):
1260         (WebCore::TokenPreloadScanner::scan):
1261         (WebCore::HTMLPreloadScanner::scan):
1262         * html/parser/HTMLPreloadScanner.h:
1263         (WebCore):
1264
1265 2013-02-13  Adam Barth  <abarth@webkit.org>
1266
1267         StartTagScanner should be thread-safe
1268         https://bugs.webkit.org/show_bug.cgi?id=109750
1269
1270         Reviewed by Eric Seidel.
1271
1272         This patch weens the StartTagScanner off AtomicString using two
1273         techniques:
1274
1275         1) This patch creates an enum to represent the four tag names that the
1276            StartTagScanner needs to understand. Using an enum is better than
1277            using an AtomicString because we can use the enum on both the main
1278            thread and on the background thread.
1279
1280         2) For attributes, this patch uses threadSafeMatch. We're not able to
1281            use threadSafeMatch everywhere due to performance, but using it for
1282            attributes appears to be ok becaues we only call threadSafeMatch on
1283            the attributes of "interesting" tags.
1284
1285         I tested the performance of this patch using
1286         PerformanceTests/Parser/html-parser.html and did not see any slowdown.
1287         (There actually appeared to be a <1% speedup, but I'm attributing that
1288         to noise.)
1289
1290         * html/parser/HTMLPreloadScanner.cpp:
1291         (WebCore::identifierFor):
1292         (WebCore):
1293         (WebCore::inititatorFor):
1294         (WebCore::StartTagScanner::StartTagScanner):
1295         (WebCore::StartTagScanner::processAttributes):
1296         (StartTagScanner):
1297         (WebCore::StartTagScanner::createPreloadRequest):
1298         (WebCore::StartTagScanner::processAttribute):
1299         (WebCore::StartTagScanner::charset):
1300         (WebCore::StartTagScanner::resourceType):
1301         (WebCore::StartTagScanner::shouldPreload):
1302         (WebCore::HTMLPreloadScanner::processToken):
1303
1304 2013-02-13  Huang Dongsung  <luxtella@company100.net>
1305
1306         Coordinated Graphics: a long page is scaled vertically while loading.
1307         https://bugs.webkit.org/show_bug.cgi?id=109645
1308
1309         Reviewed by Noam Rosenthal.
1310
1311         When loading http://www.w3.org/TR/xpath-datamodel/, Coordinated Graphics draws
1312         vertically scaled contents. It is because there is the difference between the
1313         size of a layer and the size of CoordinatedBackingStore.
1314
1315         Currently, CoordinatedGraphicsScene notifies the size to CoordinatedBackingStore
1316         at the moment of creating, updating and removing a tile. However, it is not
1317         necessary to send tile-related messages when the size of layer is changed.
1318         So this patch resets the size of CoordinatedBackingStore when receiving the
1319         message that is created when the size is changed: SyncLayerState.
1320
1321         There is no current way to reliably test flicker issues.
1322
1323         * platform/graphics/texmap/coordinated/CoordinatedBackingStore.cpp:
1324           Add m_pendingSize to set m_size at the moment of flushing.
1325           After http://webkit.org/b/108294, m_pendingSize will be removed
1326           because the bug makes CoordinatedGraphicsScene execute all messages at
1327           the moment of flushing.
1328         (WebCore::CoordinatedBackingStore::setSize):
1329         (WebCore::CoordinatedBackingStore::commitTileOperations):
1330         * platform/graphics/texmap/coordinated/CoordinatedBackingStore.h:
1331         (CoordinatedBackingStore):
1332         * platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:
1333         (WebCore::CoordinatedGraphicsScene::prepareContentBackingStore):
1334         (WebCore::CoordinatedGraphicsScene::createBackingStoreIfNeeded):
1335         (WebCore::CoordinatedGraphicsScene::resetBackingStoreSizeToLayerSize):
1336         (WebCore::CoordinatedGraphicsScene::createTile):
1337         (WebCore::CoordinatedGraphicsScene::removeTile):
1338         (WebCore::CoordinatedGraphicsScene::updateTile):
1339
1340 2013-02-13  Kentaro Hara  <haraken@chromium.org>
1341
1342         [V8] Rename XXXAccessorGetter() to XXXAttrGetterCustom(),
1343         and XXXAccessorSetter() to XXXAttrSetterCustom()
1344         https://bugs.webkit.org/show_bug.cgi?id=109679
1345
1346         Reviewed by Adam Barth.
1347
1348         For naming consistency and clarification.
1349
1350         No tests. No change in behavior.
1351
1352         * bindings/scripts/CodeGeneratorV8.pm:
1353         (GenerateHeader):
1354         (GenerateHeaderCustomCall):
1355         (GenerateNormalAttrGetter):
1356         (GenerateNormalAttrSetter):
1357         (GenerateImplementation):
1358         * bindings/scripts/test/V8/V8TestInterface.cpp:
1359         (WebCore::TestInterfaceV8Internal::supplementalStr3AttrGetter):
1360         (WebCore::TestInterfaceV8Internal::supplementalStr3AttrSetter):
1361         * bindings/scripts/test/V8/V8TestObj.cpp:
1362         (WebCore::TestObjV8Internal::customAttrAttrGetter):
1363         (WebCore::TestObjV8Internal::customAttrAttrSetter):
1364         * bindings/scripts/test/V8/V8TestObj.h:
1365         (V8TestObj):
1366         * bindings/v8/custom/V8AudioBufferSourceNodeCustom.cpp:
1367         (WebCore::V8AudioBufferSourceNode::bufferAttrSetterCustom):
1368         * bindings/v8/custom/V8BiquadFilterNodeCustom.cpp:
1369         (WebCore::V8BiquadFilterNode::typeAttrSetterCustom):
1370         * bindings/v8/custom/V8CanvasRenderingContext2DCustom.cpp:
1371         (WebCore::V8CanvasRenderingContext2D::strokeStyleAttrGetterCustom):
1372         (WebCore::V8CanvasRenderingContext2D::strokeStyleAttrSetterCustom):
1373         (WebCore::V8CanvasRenderingContext2D::fillStyleAttrGetterCustom):
1374         (WebCore::V8CanvasRenderingContext2D::fillStyleAttrSetterCustom):
1375         * bindings/v8/custom/V8ClipboardCustom.cpp:
1376         (WebCore::V8Clipboard::typesAttrGetterCustom):
1377         * bindings/v8/custom/V8CoordinatesCustom.cpp:
1378         (WebCore::V8Coordinates::altitudeAttrGetterCustom):
1379         (WebCore::V8Coordinates::altitudeAccuracyAttrGetterCustom):
1380         (WebCore::V8Coordinates::headingAttrGetterCustom):
1381         (WebCore::V8Coordinates::speedAttrGetterCustom):
1382         * bindings/v8/custom/V8CustomEventCustom.cpp:
1383         (WebCore::V8CustomEvent::detailAttrGetterCustom):
1384         * bindings/v8/custom/V8DOMWindowCustom.cpp:
1385         (WebCore::V8DOMWindow::eventAttrGetterCustom):
1386         (WebCore::V8DOMWindow::eventAttrSetterCustom):
1387         (WebCore::V8DOMWindow::locationAttrSetterCustom):
1388         (WebCore::V8DOMWindow::openerAttrSetterCustom):
1389         * bindings/v8/custom/V8DeviceMotionEventCustom.cpp:
1390         (WebCore::V8DeviceMotionEvent::accelerationAttrGetterCustom):
1391         (WebCore::V8DeviceMotionEvent::accelerationIncludingGravityAttrGetterCustom):
1392         (WebCore::V8DeviceMotionEvent::rotationRateAttrGetterCustom):
1393         (WebCore::V8DeviceMotionEvent::intervalAttrGetterCustom):
1394         * bindings/v8/custom/V8DeviceOrientationEventCustom.cpp:
1395         (WebCore::V8DeviceOrientationEvent::alphaAttrGetterCustom):
1396         (WebCore::V8DeviceOrientationEvent::betaAttrGetterCustom):
1397         (WebCore::V8DeviceOrientationEvent::gammaAttrGetterCustom):
1398         (WebCore::V8DeviceOrientationEvent::absoluteAttrGetterCustom):
1399         * bindings/v8/custom/V8DocumentLocationCustom.cpp:
1400         (WebCore::V8Document::locationAttrGetterCustom):
1401         (WebCore::V8Document::locationAttrSetterCustom):
1402         * bindings/v8/custom/V8EventCustom.cpp:
1403         (WebCore::V8Event::dataTransferAttrGetterCustom):
1404         (WebCore::V8Event::clipboardDataAttrGetterCustom):
1405         * bindings/v8/custom/V8FileReaderCustom.cpp:
1406         (WebCore::V8FileReader::resultAttrGetterCustom):
1407         * bindings/v8/custom/V8HTMLDocumentCustom.cpp:
1408         (WebCore::V8HTMLDocument::allAttrSetterCustom):
1409         * bindings/v8/custom/V8HTMLElementCustom.cpp:
1410         (WebCore::V8HTMLElement::itemValueAttrGetterCustom):
1411         (WebCore::V8HTMLElement::itemValueAttrSetterCustom):
1412         * bindings/v8/custom/V8HTMLFrameElementCustom.cpp:
1413         (WebCore::V8HTMLFrameElement::locationAttrSetterCustom):
1414         * bindings/v8/custom/V8HTMLInputElementCustom.cpp:
1415         (WebCore::V8HTMLInputElement::selectionStartAttrGetterCustom):
1416         (WebCore::V8HTMLInputElement::selectionStartAttrSetterCustom):
1417         (WebCore::V8HTMLInputElement::selectionEndAttrGetterCustom):
1418         (WebCore::V8HTMLInputElement::selectionEndAttrSetterCustom):
1419         (WebCore::V8HTMLInputElement::selectionDirectionAttrGetterCustom):
1420         (WebCore::V8HTMLInputElement::selectionDirectionAttrSetterCustom):
1421         * bindings/v8/custom/V8HTMLLinkElementCustom.cpp:
1422         (WebCore::V8HTMLLinkElement::sizesAttrGetterCustom):
1423         (WebCore::V8HTMLLinkElement::sizesAttrSetterCustom):
1424         * bindings/v8/custom/V8HTMLMediaElementCustom.cpp:
1425         (WebCore::V8HTMLMediaElement::controllerAttrSetterCustom):
1426         * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:
1427         (WebCore::V8HTMLOptionsCollection::lengthAttrSetterCustom):
1428         * bindings/v8/custom/V8HistoryCustom.cpp:
1429         (WebCore::V8History::stateAttrGetterCustom):
1430         * bindings/v8/custom/V8JavaScriptCallFrameCustom.cpp:
1431         (WebCore::V8JavaScriptCallFrame::scopeChainAttrGetterCustom):
1432         (WebCore::V8JavaScriptCallFrame::thisObjectAttrGetterCustom):
1433         (WebCore::V8JavaScriptCallFrame::typeAttrGetterCustom):
1434         * bindings/v8/custom/V8LocationCustom.cpp:
1435         (WebCore::V8Location::hashAttrSetterCustom):
1436         (WebCore::V8Location::hostAttrSetterCustom):
1437         (WebCore::V8Location::hostnameAttrSetterCustom):
1438         (WebCore::V8Location::hrefAttrSetterCustom):
1439         (WebCore::V8Location::pathnameAttrSetterCustom):
1440         (WebCore::V8Location::portAttrSetterCustom):
1441         (WebCore::V8Location::protocolAttrSetterCustom):
1442         (WebCore::V8Location::searchAttrSetterCustom):
1443         (WebCore::V8Location::reloadAttrGetterCustom):
1444         (WebCore::V8Location::replaceAttrGetterCustom):
1445         (WebCore::V8Location::assignAttrGetterCustom):
1446         * bindings/v8/custom/V8MessageEventCustom.cpp:
1447         (WebCore::V8MessageEvent::dataAttrGetterCustom):
1448         (WebCore::V8MessageEvent::portsAttrGetterCustom):
1449         * bindings/v8/custom/V8OscillatorNodeCustom.cpp:
1450         (WebCore::V8OscillatorNode::typeAttrSetterCustom):
1451         * bindings/v8/custom/V8PannerNodeCustom.cpp:
1452         (WebCore::V8PannerNode::panningModelAttrSetterCustom):
1453         (WebCore::V8PannerNode::distanceModelAttrSetterCustom):
1454         * bindings/v8/custom/V8PopStateEventCustom.cpp:
1455         (WebCore::V8PopStateEvent::stateAttrGetterCustom):
1456         * bindings/v8/custom/V8SVGLengthCustom.cpp:
1457         (WebCore::V8SVGLength::valueAttrGetterCustom):
1458         (WebCore::V8SVGLength::valueAttrSetterCustom):
1459         * bindings/v8/custom/V8TrackEventCustom.cpp:
1460         (WebCore::V8TrackEvent::trackAttrGetterCustom):
1461         * bindings/v8/custom/V8WebKitAnimationCustom.cpp:
1462         (WebCore::V8WebKitAnimation::iterationCountAttrGetterCustom):
1463         * bindings/v8/custom/V8XMLHttpRequestCustom.cpp:
1464         (WebCore::V8XMLHttpRequest::responseTextAttrGetterCustom):
1465         (WebCore::V8XMLHttpRequest::responseAttrGetterCustom):
1466
1467 2013-02-12  Kentaro Hara  <haraken@chromium.org>
1468
1469         [V8] Generate wrapper methods for custom getters/setters
1470         https://bugs.webkit.org/show_bug.cgi?id=109666
1471
1472         Reviewed by Adam Barth.
1473
1474         Currently V8 directly calls back custom getters/setters written
1475         in custom binding files. This makes it impossible for code generators
1476         to hook custom getters/setters (e.g. Code generators cannot insert a code
1477         for FeatureObservation into custom getters/setters). To solve the problem,
1478         we should generate wrapper methods for custom getters/setters.
1479
1480         No tests. No change in behavior.
1481
1482         * bindings/scripts/CodeGeneratorV8.pm:
1483         (GenerateNormalAttrGetter):
1484         (GenerateNormalAttrSetter):
1485         (GenerateSingleBatchedAttribute):
1486         (GenerateImplementation):
1487         * bindings/scripts/test/V8/V8TestInterface.cpp:
1488         (WebCore::TestInterfaceV8Internal::supplementalStr3AttrGetter):
1489         (TestInterfaceV8Internal):
1490         (WebCore::TestInterfaceV8Internal::supplementalStr3AttrSetter):
1491         (WebCore):
1492         * bindings/scripts/test/V8/V8TestObj.cpp:
1493         (WebCore::TestObjV8Internal::customAttrAttrGetter):
1494         (TestObjV8Internal):
1495         (WebCore::TestObjV8Internal::customAttrAttrSetter):
1496         (WebCore):
1497
1498 2013-02-13   Vineet Chaudhary  <rgf748@motorola.com>
1499
1500         HTMLCollections namedItem() methods should return null than undefined for empty collections.
1501         https://bugs.webkit.org/show_bug.cgi?id=104096
1502
1503         Reviewed by Kentaro Hara.
1504
1505         As per specification namedItem() should return null if collection is empty.
1506         Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#htmlallcollection
1507
1508         Test: fast/dom/htmlcollection-namedItem.html
1509
1510         * bindings/js/JSHTMLAllCollectionCustom.cpp: Returning null.
1511         (WebCore::getNamedItems):
1512         * bindings/js/JSHTMLFormControlsCollectionCustom.cpp: Ditto.
1513         (WebCore::getNamedItems):
1514         * bindings/js/JSHTMLOptionsCollectionCustom.cpp: Ditto.
1515         (WebCore::getNamedItems):
1516         * bindings/v8/custom/V8HTMLAllCollectionCustom.cpp: Ditto.
1517         (WebCore::V8HTMLAllCollection::namedItemCallback):
1518         * bindings/v8/custom/V8HTMLFormControlsCollectionCustom.cpp: Ditto.
1519         (WebCore::V8HTMLFormControlsCollection::namedItemCallback):
1520         * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp: Ditto.
1521         (WebCore::V8HTMLOptionsCollection::namedItemCallback):
1522
1523 2013-02-13  Tony Gentilcore  <tonyg@chromium.org>
1524
1525         Fix svg/in-html/script-write.html with threaded HTML parser
1526         https://bugs.webkit.org/show_bug.cgi?id=109495
1527
1528         Reviewed by Eric Seidel.
1529
1530         This patch makes the background parser's simulateTreeBuilder() more realistic.
1531         1. The HTMLTreeBuilder does not call the updateStateFor() setState()s when in foreign content mode so we shouldn't do it when simulating the tree builder.
1532         2. HTMLTreeBuilder::processTokenInForeignContent has a list of tags which exit foreign content mode. We need to respect those.
1533         3. Support the <foreignObject> tag which enters and leaves foreign content mode.
1534         4. The tree builder sets state to DataState upon a </script> tag when not in foreign content mode. We need to do the same.
1535
1536         This involved creating a namespace stack where we push upon entering each namespace and pop upon leaving.
1537         We are in foreign content if the topmost namespace is SVG or MathML.
1538
1539         This fixes svg/in-html/script-write.html and likely others.
1540
1541         * html/parser/BackgroundHTMLParser.cpp:
1542         (WebCore::BackgroundHTMLParser::simulateTreeBuilder):
1543         * html/parser/BackgroundHTMLParser.h:
1544         (BackgroundHTMLParser):
1545         * html/parser/CompactHTMLToken.cpp:
1546         (WebCore::CompactHTMLToken::getAttributeItem): Returns the attribute of the given name. Necessary to test for <font> attributes in simulateTreeBuilder.
1547         (WebCore):
1548         * html/parser/CompactHTMLToken.h:
1549         (WebCore):
1550         (CompactHTMLToken):
1551
1552 2013-02-13  Andreas Kling  <akling@apple.com>
1553
1554         Remove Element::getAttributeItem() overload that returned a mutable Attribute*.
1555         <http://webkit.org/b/109756>
1556
1557         Reviewed by Antti Koivisto.
1558
1559         Remove this to prevent callers from accidentally causing elements to convert to UniqueElementData.
1560         There are two call sites (Attr and HTMLSelectElement) that legitimately need to mutate Attribute
1561         objects in-place, they now use Element::ensureUniqueElementData()->getAttributeItem() directly instead.
1562
1563         Small progression on Membuster3, mostly for peace of mind.
1564
1565         * dom/Attr.cpp:
1566         (WebCore::Attr::elementAttribute):
1567         * dom/Element.h:
1568         (Element):
1569         * html/HTMLInputElement.cpp:
1570         (WebCore::HTMLInputElement::updateType):
1571         * html/HTMLSelectElement.cpp:
1572         (WebCore::HTMLSelectElement::parseAttribute):
1573         * svg/SVGStyledElement.cpp:
1574         (WebCore::SVGStyledElement::getPresentationAttribute):
1575
1576 2013-02-13  Andreas Kling  <akling@apple.com>
1577
1578         Stronger ElementData pointer typing.
1579         <http://webkit.org/b/109752>
1580
1581         Reviewed by Antti Koivisto.
1582
1583         Use ShareableElementData/UniqueElementData pointers instead of generic ElementData pointers
1584         where possible. Moved some methods from base class into leaf classes that don't make sense
1585         for both classes.
1586
1587         * dom/DocumentSharedObjectPool.cpp:
1588         (WebCore::ShareableElementDataCacheEntry::ShareableElementDataCacheEntry):
1589         (ShareableElementDataCacheEntry):
1590         (WebCore::DocumentSharedObjectPool::cachedShareableElementDataWithAttributes):
1591         * dom/DocumentSharedObjectPool.h:
1592         (DocumentSharedObjectPool):
1593         * dom/Element.cpp:
1594         (WebCore::Element::parserSetAttributes):
1595         (WebCore::Element::setAttributeNode):
1596         (WebCore::Element::removeAttributeInternal):
1597         (WebCore::Element::cloneAttributesFromElement):
1598         (WebCore::Element::createUniqueElementData):
1599         (WebCore::ShareableElementData::createWithAttributes):
1600         (WebCore::UniqueElementData::create):
1601         (WebCore::ElementData::makeUniqueCopy):
1602         (WebCore::UniqueElementData::makeShareableCopy):
1603         * dom/Element.h:
1604         (ElementData):
1605         (ShareableElementData):
1606         (UniqueElementData):
1607         (Element):
1608         (WebCore::Element::ensureUniqueElementData):
1609         * dom/StyledElement.cpp:
1610         (WebCore::StyledElement::rebuildPresentationAttributeStyle):
1611
1612 2013-02-13  Antti Koivisto  <antti@apple.com>
1613
1614         Reschedule shared CFRunLoopTimer instead of reconstructing it
1615         https://bugs.webkit.org/show_bug.cgi?id=109765
1616
1617         Reviewed by Andreas Kling and Anders Carlsson.
1618
1619         Using CFRunLoopTimerSetNextFireDate is over 2x faster than deleting and reconstructing timers.
1620
1621         * platform/mac/SharedTimerMac.mm:
1622         (WebCore):
1623         (WebCore::PowerObserver::restartSharedTimer):
1624         (WebCore::sharedTimer):
1625         (WebCore::setSharedTimerFireInterval):
1626         (WebCore::stopSharedTimer):
1627
1628 2013-02-13  Emil A Eklund  <eae@chromium.org>
1629
1630         getComputedStyle returns truncated value for margin-right
1631         https://bugs.webkit.org/show_bug.cgi?id=109759
1632
1633         Reviewed by Tony Chang.
1634         
1635         Due to an unfortunate cast in CSSComputedStyleDeclaration::
1636         getPropertyCSSValue getComputedStyle returns truncated styles
1637         for margin-right in cases where it isn't set to a specific pixel
1638         value.
1639
1640         Test: fast/sub-pixel/computedstylemargin.html
1641
1642         * css/CSSComputedStyleDeclaration.cpp:
1643         (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
1644         Change type of temporary value variable to float to prevent loss of precision.
1645
1646 2013-02-13  Max Vujovic  <mvujovic@adobe.com>
1647
1648         [CSS Filters] Refactor filter outsets into a class
1649         https://bugs.webkit.org/show_bug.cgi?id=109330
1650
1651         Reviewed by Dean Jackson.
1652
1653         In filters related code, we're often operating on 4 ints representing the top, right,
1654         bottom, and left filter outsets. These outsets come from a filter like blur or drop-shadow.
1655         This patch packages those ints and their related operations into a class called
1656         IntRectExtent.
1657
1658         Here are some signs that we should make a class to hold those 4 ints:
1659         1) In RenderLayer.cpp, we have a expandRectForFilterOutsets function, which looks like
1660            feature envy.
1661         2) RenderStyle and other classes have methods like getFilterOutsets which set the 4 ints by
1662            reference. The calling code has to define 4 ints, which looks bloated.
1663         3) To fix bug 109098, we will need to check if filter outsets changed, which sounds like a
1664            nice job for an inequality operator. (https://bugs.webkit.org/show_bug.cgi?id=109098)
1665
1666         No new tests. No change in behavior. Just refactoring.
1667
1668         * GNUmakefile.list.am:
1669         * Target.pri:
1670         * WebCore.gypi:
1671         * WebCore.xcodeproj/project.pbxproj:
1672         * platform/graphics/IntRectExtent.h: Added.
1673         (WebCore):
1674         (IntRectExtent):
1675         (WebCore::IntRectExtent::IntRectExtent):
1676         (WebCore::IntRectExtent::top):
1677         (WebCore::IntRectExtent::setTop):
1678         (WebCore::IntRectExtent::right):
1679         (WebCore::IntRectExtent::setRight):
1680         (WebCore::IntRectExtent::bottom):
1681         (WebCore::IntRectExtent::setBottom):
1682         (WebCore::IntRectExtent::left):
1683         (WebCore::IntRectExtent::setLeft):
1684         (WebCore::IntRectExtent::expandRect):
1685         (WebCore::IntRectExtent::isZero):
1686         (WebCore::operator==):
1687         (WebCore::operator!=):
1688         (WebCore::operator+=):
1689         * platform/graphics/filters/FilterOperations.cpp:
1690         (WebCore::FilterOperations::outsets):
1691         * platform/graphics/filters/FilterOperations.h:
1692         (FilterOperations):
1693         * platform/graphics/texmap/TextureMapperLayer.cpp:
1694         (WebCore::TextureMapperLayer::intermediateSurfaceRect):
1695         * rendering/FilterEffectRenderer.cpp:
1696         (WebCore::FilterEffectRenderer::FilterEffectRenderer):
1697         (WebCore::FilterEffectRenderer::build):
1698         (WebCore::FilterEffectRenderer::computeSourceImageRectForDirtyRect):
1699         * rendering/FilterEffectRenderer.h:
1700         (FilterEffectRenderer):
1701         * rendering/RenderLayer.cpp:
1702         (WebCore::RenderLayer::setFilterBackendNeedsRepaintingInRect):
1703         (WebCore::transparencyClipBox):
1704         (WebCore::RenderLayer::calculateLayerBounds):
1705         * rendering/style/RenderStyle.h:
1706
1707 2013-02-13  Adam Barth  <abarth@webkit.org>
1708
1709         Factor HTMLTokenScanner out of HTMLPreloadScanner
1710         https://bugs.webkit.org/show_bug.cgi?id=109754
1711
1712         Reviewed by Eric Seidel.
1713
1714         This patch is just a mechanical separation of the per-token "scanning"
1715         logic from HTMLPreloadScanner into a separate class.
1716         HTMLPreloadScanner's job is now to keep track of the input stream and
1717         to pump the tokenizer.
1718
1719         This factorization class will let us use HTMLTokenScanner on the
1720         background thread (once we finish making it thread-safe). In a follow
1721         up patch, I'll move HTMLTokenScanner to its own file.
1722
1723         * html/parser/HTMLPreloadScanner.cpp:
1724         (WebCore::HTMLTokenScanner::HTMLTokenScanner):
1725         (WebCore::HTMLTokenScanner::~HTMLTokenScanner):
1726         (WebCore::HTMLTokenScanner::processPossibleTemplateTag):
1727         (WebCore::HTMLTokenScanner::processPossibleStyleTag):
1728         (WebCore::HTMLTokenScanner::processPossibleBaseTag):
1729         (WebCore::HTMLTokenScanner::scan):
1730         (WebCore::HTMLPreloadScanner::HTMLPreloadScanner):
1731         (WebCore):
1732         (WebCore::HTMLPreloadScanner::~HTMLPreloadScanner):
1733         (WebCore::HTMLPreloadScanner::appendToEnd):
1734         (WebCore::HTMLPreloadScanner::scan):
1735         * html/parser/HTMLPreloadScanner.h:
1736         (HTMLTokenScanner):
1737         (WebCore::HTMLTokenScanner::setPredictedBaseElementURL):
1738         (HTMLPreloadScanner):
1739         (WebCore):
1740
1741 2013-02-13  Elliott Sprehn  <esprehn@chromium.org>
1742
1743         ASSERT(!renderer()->needsLayout()) when calling Element::focus() with generated content
1744         https://bugs.webkit.org/show_bug.cgi?id=109616
1745
1746         Reviewed by Julien Chaffraix.
1747
1748         Test: fast/css-generated-content/quote-layout-focus-crash.html
1749
1750         In some cases RenderQuote may mark itself and containing blocks as needing layout
1751         during a layout, but then one of it's containing blocks will mark itself as having
1752         finished layout so the RenderQuote and potentially some of it's ancestor renderers
1753         needLayout(), but the ancestors above those do not.
1754
1755         Until we have proper pre-layout tasks we should just walk the list of quotes
1756         right before layout and mark all their ancestors as needing layout if the quote
1757         needs layout.
1758
1759         * dom/Document.cpp:
1760         (WebCore::Document::updateLayout): Call markQuoteContainingBlocksForLayoutIfNeeded.
1761         (WebCore::Document::implicitClose): Call markQuoteContainingBlocksForLayoutIfNeeded.
1762         * rendering/RenderQuote.h:
1763         (WebCore::RenderQuote::next): Added.
1764         * rendering/RenderView.cpp:
1765         (WebCore::RenderView::markQuoteContainingBlocksForLayoutIfNeeded): Added.
1766         * rendering/RenderView.h:
1767         (RenderView):
1768
1769 2013-02-13  Jer Noble  <jer.noble@apple.com>
1770
1771         EME: MediaPlayer::keyNeede() should return a bool indicating whether an event listener was triggered.
1772         https://bugs.webkit.org/show_bug.cgi?id=109701
1773
1774         Reviewed by Eric Carlson.
1775
1776         Clients of MediaPlayer may need to do cleanup if calling keyNeeded()
1777         results in no event listener being triggered. Return a bool (like the
1778         v1 equivalent keyNeeded method) to indicate this.
1779
1780         * html/HTMLMediaElement.cpp:
1781         (WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
1782         * html/HTMLMediaElement.h:
1783         * platform/graphics/MediaPlayer.cpp:
1784         (WebCore::MediaPlayer::keyNeeded):
1785         * platform/graphics/MediaPlayer.h:
1786         (WebCore::MediaPlayerClient::mediaPlayerKeyNeeded):
1787
1788 2013-02-13  Abhishek Arya  <inferno@chromium.org>
1789
1790         ASSERTION FAILED: !object || object->isBox(), Bad cast in RenderBox::computeLogicalHeight
1791         https://bugs.webkit.org/show_bug.cgi?id=107748
1792
1793         Reviewed by Levi Weintraub.
1794
1795         Make sure that body renderer is not an inline-block display
1796         when determining that it stretches to viewport or when paginated
1797         content needs base height.
1798
1799         Test: fast/block/body-inline-block-crash.html
1800
1801         * rendering/RenderBox.cpp:
1802         (WebCore::RenderBox::computeLogicalHeight):
1803         * rendering/RenderBox.h:
1804         (WebCore::RenderBox::stretchesToViewport):
1805
1806 2013-02-13  Shawn Singh  <shawnsingh@chromium.org>
1807
1808         Fix debug assertion being triggered because we may access dirty normalFlowList.
1809         https://bugs.webkit.org/show_bug.cgi?id=109740
1810
1811         A debug assertion in RenderLayer.h is being hit when trying to
1812         access the normalFlowList when it is dirty.  This is caused by a
1813         new recursion that I added in RenderLayerBacking::hasVisibleNonCompositingDescendant(),
1814         but I overlooked the need to call updateLayerListsIfNeeded()
1815         recursively as well.
1816
1817         Reviewed by Simon Fraser.
1818
1819         No test, because there's no reliable way to test this (same as bug 85512).
1820
1821         * rendering/RenderLayerBacking.cpp:
1822         (WebCore::hasVisibleNonCompositingDescendant):
1823         (WebCore::RenderLayerBacking::hasVisibleNonCompositingDescendantLayers):
1824
1825 2013-02-13  Antti Koivisto  <antti@apple.com>
1826
1827         Don't restart shared timer if both the current and the new fire time are in the past
1828         https://bugs.webkit.org/show_bug.cgi?id=109731
1829
1830         Reviewed by Andreas Kling.
1831
1832         In 40-50% of cases we reschedule the shared timer both the old and the new fire time have already passed. This can happen at least when rescheduling 
1833         a zero duration timer and when stopping a timer that was ready to fire.
1834
1835         We can skip rescheduling in this case, the shared timer will fire immediately anyway.
1836         
1837         Scheduling timers calls into platform layer and can be slow. This about halves the time under setSharedTimerFireInterval in PLT3
1838         for ~0.1% total CPU time reduction.
1839
1840         * platform/ThreadTimers.cpp:
1841         (WebCore::ThreadTimers::ThreadTimers):
1842         (WebCore::ThreadTimers::setSharedTimer):
1843         (WebCore::ThreadTimers::updateSharedTimer):
1844         (WebCore::ThreadTimers::sharedTimerFiredInternal):
1845         * platform/ThreadTimers.h:
1846         (ThreadTimers):
1847
1848 2013-02-13  Zan Dobersek  <zdobersek@igalia.com>
1849
1850         The 'global isinf/isnan' compiler quirk required when using clang with libstdc++
1851         https://bugs.webkit.org/show_bug.cgi?id=109325
1852
1853         Reviewed by Anders Carlsson.
1854
1855         Prefix calls to the isinf and isnan methods with std::, declaring we want to use the
1856         two methods as they're provided by the C++ standard library being used.
1857
1858         No new tests as there's no change in functionality.
1859
1860         * Modules/mediasource/MediaSource.cpp:
1861         (WebCore::MediaSource::setDuration):
1862         * Modules/webaudio/AudioBufferSourceNode.cpp:
1863         (WebCore::AudioBufferSourceNode::totalPitchRate):
1864         * Modules/webaudio/AudioParam.cpp:
1865         (WebCore::AudioParam::setValue):
1866         * Modules/webaudio/AudioParamTimeline.cpp:
1867         (WebCore::isValidNumber):
1868         * Modules/webaudio/PannerNode.cpp:
1869         (WebCore::fixNANs):
1870         * bindings/js/IDBBindingUtilities.cpp:
1871         (WebCore::createIDBKeyFromValue):
1872         * bindings/js/JSDataViewCustom.cpp:
1873         (WebCore::getDataViewMember):
1874         * bindings/js/JSGeolocationCustom.cpp:
1875         (WebCore::setTimeout):
1876         (WebCore::setMaximumAge):
1877         * bindings/js/JSHTMLOptionsCollectionCustom.cpp:
1878         (WebCore::JSHTMLOptionsCollection::setLength):
1879         * bindings/js/JSWebKitPointCustom.cpp:
1880         (WebCore::JSWebKitPointConstructor::constructJSWebKitPoint):
1881         * bindings/scripts/CodeGeneratorJS.pm:
1882         (GenerateImplementation):
1883         (GenerateParametersCheck):
1884         * bindings/scripts/CodeGeneratorV8.pm:
1885         (GenerateParametersCheck):
1886         * bindings/scripts/test/JS/JSFloat64Array.cpp:
1887         (WebCore::JSFloat64Array::getByIndex):
1888         * bindings/scripts/test/JS/JSTestObj.cpp:
1889         (WebCore::jsTestObjPrototypeFunctionClassMethodWithClamp):
1890         * bindings/scripts/test/V8/V8TestObj.cpp:
1891         (WebCore::TestObjV8Internal::classMethodWithClampCallback):
1892         * bindings/v8/IDBBindingUtilities.cpp:
1893         (WebCore::createIDBKeyFromValue):
1894         * bindings/v8/V8Binding.cpp:
1895         (WebCore::toInt32):
1896         (WebCore::toUInt32):
1897         * bindings/v8/custom/V8GeolocationCustom.cpp:
1898         (WebCore::createPositionOptions):
1899         * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:
1900         (WebCore::V8HTMLOptionsCollection::lengthAccessorSetter):
1901         * bindings/v8/custom/V8WebKitPointCustom.cpp:
1902         (WebCore::V8WebKitPoint::constructorCallbackCustom):
1903         * bridge/qt/qt_runtime.cpp:
1904         (JSC::Bindings::convertValueToQVariant):
1905         * css/WebKitCSSMatrix.cpp:
1906         (WebCore::WebKitCSSMatrix::translate):
1907         (WebCore::WebKitCSSMatrix::scale):
1908         (WebCore::WebKitCSSMatrix::rotate):
1909         (WebCore::WebKitCSSMatrix::rotateAxisAngle):
1910         (WebCore::WebKitCSSMatrix::skewX):
1911         (WebCore::WebKitCSSMatrix::skewY):
1912         * html/HTMLMediaElement.cpp:
1913         (WebCore::HTMLMediaElement::percentLoaded):
1914         (WebCore::HTMLMediaElement::mediaPlayerTimeChanged):
1915         (WebCore::HTMLMediaElement::endedPlayback):
1916         * html/MediaController.cpp:
1917         (MediaController::duration):
1918         * html/canvas/WebGLRenderingContext.cpp:
1919         (WebCore):
1920         (WebCore::WebGLRenderingContext::clearColor):
1921         * html/track/TextTrack.cpp:
1922         (WebCore::TextTrack::addCue):
1923         * html/track/TextTrackCue.cpp:
1924         (WebCore::TextTrackCue::setStartTime):
1925         (WebCore::TextTrackCue::setEndTime):
1926         * page/DOMWindow.cpp:
1927         (WebCore::DOMWindow::adjustWindowRect):
1928         * page/WindowFeatures.cpp:
1929         (WebCore::WindowFeatures::floatFeature): Also include an opportunistic style fix.
1930         * platform/CalculationValue.cpp:
1931         (WebCore::CalculationValue::evaluate):
1932         * platform/Decimal.cpp:
1933         (WebCore::Decimal::fromDouble):
1934         * platform/Length.cpp:
1935         (WebCore::Length::nonNanCalculatedValue):
1936         * platform/audio/AudioResampler.cpp:
1937         (WebCore::AudioResampler::setRate):
1938         * platform/audio/DynamicsCompressorKernel.cpp:
1939         (WebCore::DynamicsCompressorKernel::process):
1940         * platform/audio/Reverb.cpp:
1941         (WebCore::calculateNormalizationScale):
1942         * platform/graphics/Font.cpp:
1943         (WebCore::Font::width):
1944         * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
1945         (WebCore::MediaPlayerPrivateAVFoundation::isLiveStream):
1946         * platform/graphics/gpu/LoopBlinnMathUtils.cpp:
1947         (LoopBlinnMathUtils):
1948         * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
1949         (WebCore::MediaPlayerPrivateGStreamer::buffered):
1950         (WebCore::MediaPlayerPrivateGStreamer::maxTimeSeekable):
1951         * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
1952         (WebCore::MediaPlayerPrivateQTKit::maxTimeSeekable):
1953         * platform/graphics/opentype/OpenTypeVerticalData.cpp:
1954         (WebCore::OpenTypeVerticalData::getVerticalTranslationsForGlyphs):
1955         * platform/graphics/transforms/TransformationMatrix.cpp:
1956         (WebCore::clampEdgeValue):
1957         (WebCore::TransformationMatrix::clampedBoundsOfProjectedQuad):
1958         * platform/network/ResourceResponseBase.cpp:
1959         (WebCore::ResourceResponseBase::parseCacheControlDirectives):
1960         * rendering/RenderMediaControlsChromium.cpp:
1961         (WebCore::paintMediaSlider):
1962         (WebCore::paintMediaVolumeSlider):
1963         * rendering/RenderThemeMac.mm:
1964         (WebCore::RenderThemeMac::paintMediaSliderTrack):
1965         * svg/SVGAnimationElement.cpp:
1966         (WebCore::SVGAnimationElement::beginElementAt):
1967         (WebCore::SVGAnimationElement::endElementAt):
1968         * svg/SVGSVGElement.cpp:
1969         (WebCore::SVGSVGElement::setCurrentTime):
1970         * svg/animation/SMILTime.h:
1971         (WebCore::SMILTime::SMILTime):
1972         * svg/animation/SVGSMILElement.cpp:
1973         (WebCore::SVGSMILElement::addBeginTime):
1974         (WebCore::SVGSMILElement::addEndTime):
1975         * xml/XPathFunctions.cpp:
1976         (WebCore::XPath::FunSubstring::evaluate):
1977         (WebCore::XPath::FunRound::round):
1978         * xml/XPathValue.cpp:
1979         (WebCore::XPath::Value::toBoolean): Also include an opportunistic style fix.
1980         (WebCore::XPath::Value::toString):
1981
1982 2013-02-13  Eric Carlson  <eric.carlson@apple.com>
1983
1984         [Mac] Caption menu should have only one item selected
1985         https://bugs.webkit.org/show_bug.cgi?id=109730
1986
1987         Reviewed by Dean Jackson.
1988
1989         No new tests, media/track/track-user-preferences.html was modified to test the changes.
1990
1991         * CMakeLists.txt: Add CaptionUserPreferences.cpp.
1992         * GNUmakefile.list.am: Ditto.
1993         * Target.pri: Ditto.
1994         * WebCore.gypi: Ditto.
1995         * WebCore.vcproj/WebCore.vcproj: Ditto.
1996         * WebCore.vcxproj/WebCore.vcxproj: Ditto.
1997         * WebCore.xcodeproj/project.pbxproj: Ditto.
1998
1999         * html/HTMLMediaElement.cpp:
2000         (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_processingPreferenceChange.
2001         (WebCore::HTMLMediaElement::configureTextTrackGroup): Only end up with one selected track when
2002             called because of a preferences change.
2003         (WebCore::HTMLMediaElement::captionPreferencesChanged): Call setClosedCaptionsVisible instead
2004             of calling markCaptionAndSubtitleTracksAsUnconfigured directly.
2005         (WebCore::HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured): Process all tracks, 
2006             not just track elements.
2007         * html/HTMLMediaElement.h:
2008
2009         * page/CaptionUserPreferences.cpp: Added so the functionality can be tested in DRT.
2010         (WebCore::CaptionUserPreferences::registerForPreferencesChangedCallbacks):
2011         (WebCore::CaptionUserPreferences::unregisterForPreferencesChangedCallbacks):
2012         (WebCore::CaptionUserPreferences::setUserPrefersCaptions):
2013         (WebCore::CaptionUserPreferences::captionPreferencesChanged):
2014         (WebCore::CaptionUserPreferences::preferredLanguages):
2015         (WebCore::CaptionUserPreferences::setPreferredLanguage):
2016         (WebCore::CaptionUserPreferences::displayNameForTrack):
2017         * page/CaptionUserPreferences.h:
2018
2019         * page/CaptionUserPreferencesMac.h:
2020         * page/CaptionUserPreferencesMac.mm:
2021         (WebCore::CaptionUserPreferencesMac::registerForPreferencesChangedCallbacks): Moved some logic
2022             to base class.
2023         (WebCore::CaptionUserPreferencesMac::captionPreferencesChanged): Ditto.
2024
2025 2013-02-13  Hans Muller  <hmuller@adobe.com>
2026
2027         [CSS Exclusions] ExclusionPolygon reflex vertices should constrain the first fit location.
2028         https://bugs.webkit.org/show_bug.cgi?id=107568
2029
2030         Reviewed by Dirk Schulze.
2031
2032         The ExclusionPolygon::firstIncludedIntervalLogicalTop() method now includes offset edges
2033         for each of the polygon's reflex vertices. The motivation for this change is explained
2034         here: http://hansmuller-webkit.blogspot.com/2013/01/getting-to-point-reflex-vertices.html.
2035
2036         Test: fast/exclusions/shape-inside/shape-inside-first-fit-reflex.html
2037
2038         * rendering/ExclusionPolygon.cpp:
2039         (WebCore::isReflexVertex): Given three vertices that represent a pair of connected polygon edges, return true if the second vertex is a reflex vertex.
2040         (WebCore::ExclusionPolygon::firstIncludedIntervalLogicalTop): This method now includes offset edges for reflex vertices.
2041         * rendering/ExclusionPolygon.h:
2042         (WebCore::OffsetPolygonEdge::OffsetPolygonEdge): Added a constructor for creating an OffsetPolygonEdge given a reflex vertex.
2043         (WebCore::OffsetPolygonEdge::edgeIndex): Changed this property from unsigned to int. Now using -1 to indicate that the offset edge doesn't correspond to a single polygon edge.
2044
2045 2013-02-13  Adam Barth  <abarth@webkit.org>
2046
2047         CSSPreloadScanner should not depend on HTMLToken
2048         https://bugs.webkit.org/show_bug.cgi?id=109742
2049
2050         Reviewed by Eric Seidel.
2051
2052         There's no need for the CSSPreloadScanner to depend on HTMLToken. On
2053         the background thread, we'll likely want to use a CompactHTMLToken for
2054         preload scanning, so this dependency is problematic. This patch also
2055         teaches the CSSPreloadScanner how to scan LChars.
2056
2057         * html/parser/CSSPreloadScanner.cpp:
2058         (WebCore::CSSPreloadScanner::~CSSPreloadScanner):
2059         (WebCore):
2060         (WebCore::CSSPreloadScanner::scan):
2061         * html/parser/CSSPreloadScanner.h:
2062         (CSSPreloadScanner):
2063         * html/parser/HTMLPreloadScanner.cpp:
2064         (WebCore::HTMLPreloadScanner::processToken):
2065
2066 2013-02-13  Julien Chaffraix  <jchaffraix@webkit.org>
2067
2068         [CSS Grid Layout] Adding or removing grid items doesn't properly recompute the track sizes
2069         https://bugs.webkit.org/show_bug.cgi?id=109100
2070
2071         Reviewed by Ojan Vafai.
2072
2073         Test: fast/css-grid-layout/grid-item-removal-track-breadth-update.html
2074
2075         The test uncovered several bugs in our implementation that is fixed as part
2076         of this change. They will be detailed below.
2077
2078         * rendering/RenderGrid.cpp:
2079         (WebCore::RenderGrid::logicalContentHeightForChild):
2080         Added this function to share the code between minContentForChild and maxContentForChild.
2081         Also forced a relayout in this case to avoid getting a wrong answer (e.g. the logical height
2082         constrained by the previous layout's grid breadth).
2083
2084         (WebCore::RenderGrid::minContentForChild):
2085         (WebCore::RenderGrid::maxContentForChild):
2086         Updated to use logicalContentHeightForChild.
2087
2088         (WebCore::RenderGrid::resolveContentBasedTrackSizingFunctions):
2089         Updated to match the specification and set max breadth to current breadth per the specification.
2090         This made us over-grow some cases in the test.
2091
2092         (WebCore::RenderGrid::distributeSpaceToTracks):
2093         Updated to match the specification and use an extra variable to do the intermediate spreading. Also removed
2094         a now unneeded max. This fixes the case of multiple grid items in the same grid area that was completely broken.
2095
2096         (WebCore::RenderGrid::layoutGridItems):
2097         Added a FIXME about always relaying out content sized tracks' children.
2098
2099         * rendering/RenderGrid.h:
2100         Added logicalContentHeightForChild.
2101
2102 2013-02-13  Adam Barth  <abarth@webkit.org>
2103
2104         Clean up some style nits in HTMLPreloadScanner
2105         https://bugs.webkit.org/show_bug.cgi?id=109738
2106
2107         Reviewed by Tony Gentilcore.
2108
2109         This patch just fixes a few style nits I noticed when reading through
2110         the code.
2111
2112         * html/parser/HTMLPreloadScanner.cpp:
2113         (WebCore::StartTagScanner::StartTagScanner):
2114         (WebCore::HTMLPreloadScanner::processPossibleStyleTag):
2115         (WebCore::HTMLPreloadScanner::processPossibleBaseTag):
2116         * html/parser/HTMLResourcePreloader.cpp:
2117         (WebCore::PreloadRequest::isSafeToSendToAnotherThread):
2118         * html/parser/HTMLResourcePreloader.h:
2119         (PreloadRequest):
2120         (WebCore::PreloadRequest::PreloadRequest):
2121         (WebCore::HTMLResourcePreloader::HTMLResourcePreloader):
2122
2123 2013-02-13  Sheriff Bot  <webkit.review.bot@gmail.com>
2124
2125         Unreviewed, rolling out r142747.
2126         http://trac.webkit.org/changeset/142747
2127         https://bugs.webkit.org/show_bug.cgi?id=109746
2128
2129         broke component build (Requested by alecf_gardening on
2130         #webkit).
2131
2132         * inspector/HeapGraphSerializer.cpp:
2133         (WebCore::HeapGraphSerializer::HeapGraphSerializer):
2134         (WebCore::HeapGraphSerializer::pushUpdate):
2135         (WebCore::HeapGraphSerializer::reportNode):
2136         (WebCore::HeapGraphSerializer::toNodeId):
2137         (WebCore::HeapGraphSerializer::addRootNode):
2138         * inspector/HeapGraphSerializer.h:
2139         (WebCore):
2140         (HeapGraphSerializer):
2141         * inspector/InspectorMemoryAgent.cpp:
2142         (WebCore::InspectorMemoryAgent::getProcessMemoryDistributionImpl):
2143
2144 2013-02-13  Levi Weintraub  <leviw@chromium.org>
2145
2146         Bidi-Isolated inlines can cause subsequent content to not be rendered
2147         https://bugs.webkit.org/show_bug.cgi?id=108137
2148
2149         Reviewed by Eric Seidel.
2150
2151         First step in fixing how inline isolates behave with collapsed spaces.
2152         webkit.org/b/109624 tracks the overarching issue.
2153
2154         Test: fast/text/content-following-inline-isolate-with-collapsed-whitespace.html
2155
2156         * rendering/InlineIterator.h:
2157         (WebCore::IsolateTracker::addFakeRunIfNecessary): If we enter an isolate while
2158         ignoring spaces, ensure we leave it considering them again. This can result in
2159         including spaces that should be ignored following the isolate on the line, but
2160         failing to do so results in those contents not being rendered at all.
2161
2162 2013-02-13  Andreas Kling  <akling@apple.com>
2163
2164         Better names for ElementAttributeData & subclasses.
2165         <http://webkit.org/b/109529>
2166
2167         Reviewed by Antti Koivisto.
2168
2169         - ElementAttributeData => ElementData
2170
2171             Because ElementAttributeData won't be a good name once we move some non-attribute related
2172             things to this structure.
2173
2174         - ImmutableElementAttributeData => ShareableElementData
2175
2176             These objects can be shared with other Elements that have the same attribute name/value pairs.
2177
2178         - MutableElementAttributeData => UniqueElementData
2179
2180             These objects contain data that is unique to a specific Element, and cannot be shared with
2181             other Elements. This is what's important about it, not that its underlying storage is mutable.
2182
2183         - attributeData() -> elementData()
2184         - updatedAttributeData() -> elementDataWithSynchronizedAttributes()
2185         - ensureUpdatedAttributeData() -> ensureElementDataWithSynchronizedAttributes()
2186         - mutableAttributeData() -> ensureUniqueElementData()
2187
2188             Ride-along renames. Much less vague than previous names IMO.
2189
2190         * css/StyleResolver.cpp:
2191         (WebCore::StyleResolver::canShareStyleWithControl):
2192         (WebCore::StyleResolver::sharingCandidateHasIdenticalStyleAffectingAttributes):
2193         * dom/Attr.cpp:
2194         (WebCore::Attr::elementAttribute):
2195         * dom/DocumentSharedObjectPool.cpp:
2196         (WebCore::ShareableElementDataCacheKey::ShareableElementDataCacheKey):
2197         (WebCore::ShareableElementDataCacheKey::operator!=):
2198         (WebCore::ShareableElementDataCacheEntry::ShareableElementDataCacheEntry):
2199         (ShareableElementDataCacheEntry):
2200         (WebCore::DocumentSharedObjectPool::cachedShareableElementDataWithAttributes):
2201         * dom/DocumentSharedObjectPool.h:
2202         (DocumentSharedObjectPool):
2203         * dom/Element.cpp:
2204         (WebCore::Element::detachAttribute):
2205         (WebCore::Element::removeAttribute):
2206         (WebCore::Element::attributes):
2207         (WebCore::Element::getAttribute):
2208         (WebCore::Element::setAttribute):
2209         (WebCore::Element::setSynchronizedLazyAttribute):
2210         (WebCore::Element::setAttributeInternal):
2211         (WebCore::Element::attributeChanged):
2212         (WebCore::Element::classAttributeChanged):
2213         (WebCore::Element::shouldInvalidateDistributionWhenAttributeChanged):
2214         (WebCore::Element::parserSetAttributes):
2215         (WebCore::Element::hasAttributes):
2216         (WebCore::Element::hasEquivalentAttributes):
2217         (WebCore::Element::setAttributeNode):
2218         (WebCore::Element::removeAttributeNode):
2219         (WebCore::Element::removeAttributeInternal):
2220         (WebCore::Element::addAttributeInternal):
2221         (WebCore::Element::getAttributeNode):
2222         (WebCore::Element::getAttributeNodeNS):
2223         (WebCore::Element::hasAttribute):
2224         (WebCore::Element::hasAttributeNS):
2225         (WebCore::Element::computeInheritedLanguage):
2226         (WebCore::Element::getURLAttribute):
2227         (WebCore::Element::getNonEmptyURLAttribute):
2228         (WebCore::Element::cloneAttributesFromElement):
2229         (WebCore::Element::createUniqueElementData):
2230         (WebCore::Element::reportMemoryUsage):
2231         (WebCore::ElementData::deref):
2232         (WebCore::ElementData::ElementData):
2233         (WebCore::sizeForShareableElementDataWithAttributeCount):
2234         (WebCore::ElementData::createShareableWithAttributes):
2235         (WebCore::ElementData::createUnique):
2236         (WebCore::ShareableElementData::ShareableElementData):
2237         (WebCore::ShareableElementData::~ShareableElementData):
2238         (WebCore::UniqueElementData::UniqueElementData):
2239         (WebCore::ElementData::makeMutableCopy):
2240         (WebCore::ElementData::makeImmutableCopy):
2241         (WebCore::ElementData::setPresentationAttributeStyle):
2242         (WebCore::ElementData::addAttribute):
2243         (WebCore::ElementData::removeAttribute):
2244         (WebCore::ElementData::isEquivalent):
2245         (WebCore::ElementData::reportMemoryUsage):
2246         (WebCore::ElementData::getAttributeItemIndexSlowCase):
2247         * dom/Element.h:
2248         (ElementData):
2249         (WebCore::ElementData::isUnique):
2250         (ShareableElementData):
2251         (UniqueElementData):
2252         (WebCore::Element::getAttributeItemIndex):
2253         (WebCore::Element::elementData):
2254         (Element):
2255         (WebCore::Element::elementDataWithSynchronizedAttributes):
2256         (WebCore::Element::ensureElementDataWithSynchronizedAttributes):
2257         (WebCore::Element::fastHasAttribute):
2258         (WebCore::Element::fastGetAttribute):
2259         (WebCore::Element::hasAttributesWithoutUpdate):
2260         (WebCore::Element::idForStyleResolution):
2261         (WebCore::Element::classNames):
2262         (WebCore::Element::attributeCount):
2263         (WebCore::Element::attributeItem):
2264         (WebCore::Element::getAttributeItem):
2265         (WebCore::Element::updateInvalidAttributes):
2266         (WebCore::Element::hasID):
2267         (WebCore::Element::hasClass):
2268         (WebCore::Element::ensureUniqueElementData):
2269         (WebCore::ElementData::mutableAttributeVector):
2270         (WebCore::ElementData::immutableAttributeArray):
2271         (WebCore::ElementData::length):
2272         (WebCore::ElementData::presentationAttributeStyle):
2273         (WebCore::ElementData::getAttributeItem):
2274         (WebCore::ElementData::getAttributeItemIndex):
2275         (WebCore::ElementData::attributeItem):
2276         * dom/Node.cpp:
2277         (WebCore::Node::dumpStatistics):
2278         (WebCore::Node::compareDocumentPosition):
2279         * dom/StyledElement.cpp:
2280         (WebCore::StyledElement::updateStyleAttribute):
2281         (WebCore::StyledElement::ensureMutableInlineStyle):
2282         (WebCore::StyledElement::attributeChanged):
2283         (WebCore::StyledElement::inlineStyleCSSOMWrapper):
2284         (WebCore::StyledElement::setInlineStyleFromString):
2285         (WebCore::StyledElement::styleAttributeChanged):
2286         (WebCore::StyledElement::inlineStyleChanged):
2287         (WebCore::StyledElement::addSubresourceAttributeURLs):
2288         (WebCore::StyledElement::rebuildPresentationAttributeStyle):
2289         * dom/StyledElement.h:
2290         (WebCore::StyledElement::inlineStyle):
2291         (WebCore::StyledElement::invalidateStyleAttribute):
2292         (WebCore::StyledElement::presentationAttributeStyle):
2293         * html/ClassList.cpp:
2294         (WebCore::ClassList::classNames):
2295         * html/HTMLInputElement.cpp:
2296         (WebCore::HTMLInputElement::updateType):
2297         * html/parser/HTMLConstructionSite.cpp:
2298         (WebCore::HTMLConstructionSite::mergeAttributesFromTokenIntoElement):
2299         * svg/SVGElement.cpp:
2300         (WebCore::SVGElement::updateAnimatedSVGAttribute):
2301         * svg/SVGElement.h:
2302         (WebCore::SVGElement::invalidateSVGAttributes):
2303         * xml/parser/XMLDocumentParserQt.cpp:
2304         (WebCore::XMLDocumentParser::XMLDocumentParser):
2305
2306 2013-02-13  Christian Biesinger  <cbiesinger@chromium.org>
2307
2308         Crash when encountering <object style="resize:both;">
2309         https://bugs.webkit.org/show_bug.cgi?id=109728
2310
2311         See also https://code.google.com/p/chromium/issues/detail?id=175535
2312         This bug can be reproduced on
2313         http://dramalink.net/tudou.y/?xink=162601060
2314
2315         Reviewed by Eric Seidel.
2316
2317         Test: fast/css/resize-object-crash.html
2318
2319         * rendering/RenderWidget.cpp:
2320         (WebCore::RenderWidget::paint):
2321         Only call paintResizer() if we have a layer and canResize() is true
2322
2323 2013-02-13  Arko Saha  <arko@motorola.com>
2324
2325         [Microdata] HTMLPropertiesCollection code cleanup
2326         https://bugs.webkit.org/show_bug.cgi?id=109721
2327
2328         Reviewed by Ryosuke Niwa.
2329
2330         Removed forward declaration of DOMStringList class.
2331         Removed unused findRefElements() method declaration.
2332         Also Removed unused parameter Element* from updatePropertyCache() method.
2333
2334         No new test since no change in behavior.
2335
2336         * html/HTMLPropertiesCollection.cpp:
2337         (WebCore::HTMLPropertiesCollection::updateNameCache):
2338         * html/HTMLPropertiesCollection.h:
2339         (WebCore):
2340         (HTMLPropertiesCollection):
2341         (WebCore::HTMLPropertiesCollection::updatePropertyCache):
2342
2343 2013-02-13  Kondapally Kalyan  <kalyan.kondapally@intel.com>
2344
2345         [WebGL][EFL][GTK][Qt]Add support for OES_vertex_array_object.
2346         https://bugs.webkit.org/show_bug.cgi?id=109382
2347
2348         Reviewed by Kenneth Russell.
2349
2350         Covered by fast/canvas/webgl/oes-vertex-array-object.html
2351
2352         This patch adds support for using Vertex Array Object with OpenGl.
2353         The patch adds support for loading necessary opengl functions
2354         and support for checking GL_ARB_vertex_array_object. The support
2355         for OES_vertex_array_object is advertised if GL_ARB_vertex_array_object is
2356         supported.
2357
2358         * platform/graphics/OpenGLShims.cpp:
2359         (WebCore::initializeOpenGLShims):
2360         * platform/graphics/OpenGLShims.h:
2361         (_OpenGLFunctionTable):
2362         Added support for loading the necessary functions.
2363
2364         * platform/graphics/opengl/Extensions3DOpenGL.cpp:
2365         (WebCore::Extensions3DOpenGL::createVertexArrayOES):
2366         (WebCore::Extensions3DOpenGL::deleteVertexArrayOES):
2367         (WebCore::Extensions3DOpenGL::isVertexArrayOES):
2368         (WebCore::Extensions3DOpenGL::bindVertexArrayOES):
2369         (WebCore::Extensions3DOpenGL::supportsExtension):
2370
2371         (WebCore):
2372         (WebCore::Extensions3DOpenGL::isVertexArrayObjectSupported):
2373         * platform/graphics/opengl/Extensions3DOpenGL.h:
2374         (Extensions3DOpenGL):
2375
2376 2013-02-13  Eberhard Graether  <egraether@google.com>
2377
2378         chromium: remove CompositorHUDFontAtlas
2379         https://bugs.webkit.org/show_bug.cgi?id=109328
2380
2381         Reviewed by James Robinson.
2382
2383         After switching the HudLayer to use skia's font rendering the
2384         CompositorHUDFontAtlas has become obsolete. This change removes
2385         this class and the related WebLayerTreeView API.
2386
2387         No new tests.
2388
2389         * WebCore.gypi:
2390         * platform/graphics/chromium/CompositorHUDFontAtlas.cpp: Removed.
2391         * platform/graphics/chromium/CompositorHUDFontAtlas.h: Removed.
2392
2393 2013-02-13  Dean Jackson  <dino@apple.com>
2394
2395         Small update to speech bubble for captions menu [Mac]
2396         https://bugs.webkit.org/show_bug.cgi?id=109641
2397
2398         Reviewed by Eric Carlson
2399
2400         Small adjustment to the embedded SVG that draws a speech bubble
2401         for the captions button. Remove a polygon that was so small
2402         it looked like a rendering error.
2403
2404         * css/mediaControlsQuickTime.css:
2405         (video::-webkit-media-controls-toggle-closed-captions-button):
2406
2407 2013-02-13  Dean Jackson  <dino@apple.com>
2408
2409         Clicking outside captions menu should dismiss it
2410         https://bugs.webkit.org/show_bug.cgi?id=109648
2411
2412         Reviewed by Eric Carlson.
2413
2414         Add a virtual override to the platform-specific
2415         defaultEventHandler to intercept any click in the controls,
2416         and hide the captions menu if it is showing.
2417
2418         Test: media/video-controls-captions-trackmenu-hide-on-click.html
2419
2420         * html/shadow/MediaControlsApple.cpp:
2421         (WebCore::MediaControlsApple::defaultEventHandler): Override from MediaControls. Hide
2422             captions menu if a click event comes in.
2423         * html/shadow/MediaControlsApple.h:
2424
2425 2013-02-13  Tommy Widenflycht  <tommyw@google.com>
2426
2427         MediaStream API: Use the source id when creating new tracks
2428         https://bugs.webkit.org/show_bug.cgi?id=109688
2429
2430         Reviewed by Adam Barth.
2431
2432         This patch reuses the ids from the source when creating tracks instead of creating a new one.
2433         This was requested by the chromium port to greatly simplify their implementation.
2434         In the longer run the API should be rewritten to only use tracks instead of sources.
2435
2436         Covered by existing tests.
2437
2438         * platform/chromium/support/WebMediaStream.cpp:
2439         (WebKit::WebMediaStream::audioTracks):
2440         (WebKit::WebMediaStream::videoTracks):
2441         (WebKit::WebMediaStream::initialize):
2442         (WebKit):
2443         * platform/chromium/support/WebMediaStreamTrack.cpp:
2444         (WebKit::WebMediaStreamTrack::initialize):
2445         (WebKit):
2446         * platform/mediastream/MediaStreamComponent.h:
2447         (WebCore::MediaStreamComponent::create):
2448         (MediaStreamComponent):
2449         (WebCore::MediaStreamComponent::MediaStreamComponent):
2450         (WebCore):
2451         * platform/mediastream/MediaStreamDescriptor.h:
2452         (WebCore::MediaStreamDescriptor::create):
2453         (MediaStreamDescriptor):
2454         (WebCore::MediaStreamDescriptor::MediaStreamDescriptor):
2455
2456 2013-02-13  Eric Seidel  <eric@webkit.org>
2457
2458         Use fancy new Vector-based String constructors in the WebVTT parser
2459         https://bugs.webkit.org/show_bug.cgi?id=109619
2460
2461         Reviewed by Benjamin Poulain.
2462
2463         No change in behavior. Added some FIXMEs for future perf optimization.
2464
2465         * html/track/WebVTTParser.cpp:
2466         (WebCore::WebVTTParser::constructTreeFromToken):
2467
2468 2013-02-13  Morten Stenshorne  <mstensho@opera.com>
2469
2470         WebKit ignores column-rules wider than column-gap
2471         https://bugs.webkit.org/show_bug.cgi?id=15553
2472
2473         Paint column rules even if they are wider than the gap.
2474         Rules wider than the gap should just overlap with column contents.
2475
2476         Reviewed by Eric Seidel.
2477
2478         Test: fast/multicol/rule-thicker-than-gap.html
2479
2480         * rendering/RenderBlock.cpp:
2481         (WebCore::RenderBlock::paintColumnRules):
2482
2483 2013-02-13  Philip Rogers  <pdr@google.com>
2484
2485         Replace SVG bitmap cache with directly-rendered SVG
2486         https://bugs.webkit.org/show_bug.cgi?id=106159
2487
2488         Reviewed by Tim Horton.
2489
2490         This patch removes the caching of SVG bitmaps so SVG images are rendered directly. This
2491         enables WebKit to pass the IE Chalkboard demo in 10s on a Z620:
2492         http://ie.microsoft.com/testdrive/Performance/Chalkboard/
2493
2494         On a simple scaled SVG benchmark similar to the IE10 Chalkboard demo
2495         (http://philbit.com/SvgImagePerformance/viewport.html):
2496             without patch: ~20FPS
2497             with patch: ~55FPS
2498
2499         The bitmap SVG image cache had several shortcomings:
2500             - The bitmap cache prevented viewport rendering. (WK104693)
2501             - Bitmap memory usage was high. (WK106484)
2502             - Caching animating images was expensive.
2503
2504         This change removes almost all of the SVGImageCache implementation, replacing it with
2505         directly-rendered SVG. Instead of caching bitmaps, an SVGImageForContainer is cached which
2506         is a thin wrapper around an SVG image with the associated container size and scale.
2507         When rendering patterns (e.g., tiled backgrounds), a temporary bitmap is used for
2508         performance. This change also removes the redraw timer of the old cache, instead relying
2509         on the SVG image to notify clients if the image changes (e.g., during animations).
2510
2511         This patch fixes two existing bugs (WK99481 and WK104189) that were due to caching bitmaps
2512         at a fixed size. A test has been added for each of these bugs.
2513
2514         Tests: svg/as-image/svg-image-scaled.html
2515                svg/as-image/svg-image-viewbox.html
2516
2517         * CMakeLists.txt:
2518         * GNUmakefile.list.am:
2519         * Target.pri:
2520         * WebCore.gypi:
2521         * WebCore.vcproj/WebCore.vcproj:
2522         * WebCore.xcodeproj/project.pbxproj:
2523         * loader/cache/CachedImage.cpp:
2524         (WebCore::CachedImage::lookupOrCreateImageForRenderer):
2525         (WebCore::CachedImage::setContainerSizeForRenderer):
2526         (WebCore::CachedImage::clear):
2527         (WebCore::CachedImage::changedInRect):
2528
2529             SVG images are no longer special-cased here. When the SVG image changes, users are
2530             notified through this function, and users can then request their content to be redrawn.
2531
2532         * svg/graphics/SVGImage.cpp:
2533         (WebCore::SVGImage::setContainerSize):
2534         (WebCore::SVGImage::drawForContainer):
2535
2536             drawForContainer lays out the SVG content for a specific container size and renders it.
2537             The logic is fairly straightforward but a note about the scales and zooms here:
2538                 the destination rect parameter is zoomed but not scaled
2539                 the source rect parameter is zoomed but not scaled
2540                 the context is scaled but not zoomed
2541             SVGImage::draw(...) only accepts a source and destination rect but does not consider
2542             scale or zoom. Therefore, drawForContainer removes the zoom component from the source
2543             so SVGImage::draw(...) will draw from the pre-zoom source to the post-zoom destination.
2544
2545         (WebCore::SVGImage::drawPatternForContainer):
2546
2547             For performance, drawPatternForContainer renders the SVG content onto a bitmap, then
2548             has the bitmap image draw the pattern. This is necessary because drawPattern is used
2549             for tiling.
2550
2551         (WebCore):
2552         (WebCore::SVGImage::startAnimation):
2553         (WebCore::SVGImage::stopAnimation):
2554         (WebCore::SVGImage::resetAnimation):
2555         (WebCore::SVGImage::reportMemoryUsage):
2556         * svg/graphics/SVGImage.h:
2557         (WebCore):
2558         (SVGImage):
2559         * svg/graphics/SVGImageCache.cpp:
2560
2561             Instead of storing a SizeAndScales values for each renderer, a SVGImageForContainer
2562             is stored which is just a thin wrapper around an SVG image that contains container
2563             sizing information. By combining the image and size information, the two maps of
2564             SVGImageCache have been merged into one.
2565
2566             To make this patch easier to review, SVGImageCache still exists and works similar to
2567             how it did before the patch. Now, SVGImageCache simply stores the SVGImageForContainers.
2568             In a followup patch it will be removed.
2569
2570             Note: the redraw timer of SVGImageCache has been removed because animation
2571             invalidation is now properly propagated back to the image clients.
2572
2573         (WebCore):
2574         (WebCore::SVGImageCache::SVGImageCache):
2575         (WebCore::SVGImageCache::~SVGImageCache):
2576         (WebCore::SVGImageCache::removeClientFromCache):
2577         (WebCore::SVGImageCache::setContainerSizeForRenderer):
2578         (WebCore::SVGImageCache::imageSizeForRenderer):
2579
2580             Previously, this function returned the scaled image size which was incorrect. The image
2581             size is used by clients such as GraphicsContext2D to determine the source size
2582             for drawing the image. draw() accepts zoomed but not scaled values, so this has been
2583             changed.
2584
2585         (WebCore::SVGImageCache::imageForRenderer):
2586
2587             A FIXME has been added here to not set the scale on every lookup. This can be improved
2588             by setting the page scale factor in setContainerSizeForRenderer() in a future patch.
2589
2590         * svg/graphics/SVGImageCache.h:
2591         (WebCore):
2592         (SVGImageCache):
2593         * svg/graphics/SVGImageForContainer.cpp: Added.
2594         (WebCore):
2595
2596             SVGImageForContainer is a thin wrapper around an SVG image. The lifetime of the
2597             SVGImage will be longer than the image cache.
2598
2599         (WebCore::SVGImageForContainer::size):
2600
2601             This is the only logic in SVGImageForContainer. The size returned needs to be zoomed
2602             but not scaled because it is used (e.g., by RenderImage) to pass back into draw() which
2603             takes zoomed but not scaled values.
2604
2605         (WebCore::SVGImageForContainer::draw):
2606         (WebCore::SVGImageForContainer::drawPattern):
2607         * svg/graphics/SVGImageForContainer.h: Added.
2608         (WebCore):
2609         (SVGImageForContainer):
2610
2611             In a future patch SVGImageForContainer can be made immutable but without a refactoring
2612             for not setting the page scale factor in SVGImageCache::lookupOrCreateImageForRenderer,
2613             setters are needed.
2614
2615         (WebCore::SVGImageForContainer::create):
2616         (WebCore::SVGImageForContainer::containerSize):
2617         (WebCore::SVGImageForContainer::pageScale):
2618         (WebCore::SVGImageForContainer::zoom):
2619         (WebCore::SVGImageForContainer::setSize):
2620         (WebCore::SVGImageForContainer::setZoom):
2621         (WebCore::SVGImageForContainer::setPageScale):
2622         (WebCore::SVGImageForContainer::SVGImageForContainer):
2623         (WebCore::SVGImageForContainer::destroyDecodedData):
2624         (WebCore::SVGImageForContainer::decodedSize):
2625
2626 2013-02-12  Antti Koivisto  <antti@apple.com>
2627
2628         Avoid updating timer heap when nothing changes
2629         https://bugs.webkit.org/show_bug.cgi?id=109630
2630
2631         Reviewed by Andreas Kling.
2632
2633         When the fire time of a Timer is changed we remove it from the timer heap and reinsert it. This is pretty slow. 
2634         Turns out that in ~80% of cases we are already in the heap and the insertion position is the same as the 
2635         original position. We can check if anything is actually going to change before doing this work.
2636         
2637         This makes starting a timer ~30% faster in average, ~0.1% progression in PLT3.
2638         
2639         * platform/Timer.cpp:
2640         (TimerHeapLessThanFunction):
2641         (WebCore::TimerHeapLessThanFunction::operator()):
2642         (WebCore::parentHeapPropertyHolds):
2643         (WebCore):
2644         (WebCore::childHeapPropertyHolds):
2645         (WebCore::TimerBase::hasValidHeapPosition):
2646         
2647             The code here assumes that STL heap is a normal binary heap. If there is a different implementation
2648             somewhere the assertions will catch it.
2649
2650         (WebCore::TimerBase::updateHeapIfNeeded):
2651         
2652             Skip updating the heap if it is already valid.
2653
2654         (WebCore::TimerBase::setNextFireTime):
2655         * platform/Timer.h:
2656         (TimerBase):
2657
2658 2013-02-13  Martin Robinson  <mrobinson@igalia.com>
2659
2660         [GTK] Remove remaining dead code from the GLib unicode backend
2661         https://bugs.webkit.org/show_bug.cgi?id=109707
2662
2663         Reviewed by Philippe Normand.
2664
2665         * platform/KURL.cpp:
2666         (WebCore::appendEncodedHostname):
2667         * platform/text/TextEncoding.cpp:
2668         (WebCore::TextEncoding::encode):
2669         * platform/text/TextEncodingRegistry.cpp:
2670         (WebCore::buildBaseTextCodecMaps):
2671         (WebCore::extendTextCodecMaps):
2672
2673 2013-02-13  Xianzhu Wang  <wangxianzhu@chromium.org>
2674
2675         Heap-use-after-free in WebCore::ScrollingCoordinator::hasVisibleSlowRepaintViewportConstrainedObjects
2676         https://bugs.webkit.org/show_bug.cgi?id=108695
2677
2678         See comments of RenderLayerModelObject::willBeDestroyed() below for details.
2679
2680         Reviewed by Abhishek Arya.
2681
2682         Test: ManulTests/scrolling-coordinator-viewport-constrained-crash.html
2683         Unable to write a normal layout test because
2684         1) must waitUntilDone() to reproduce the crash but the redirected URL can't notifyDone();
2685         2) Can't use a frame to contain the test because ScrollingCoordinator handles only the main frame.
2686
2687         * rendering/RenderBoxModelObject.cpp:
2688         (WebCore::RenderBoxModelObject::willBeDestroyed): Moved removeViewportConstrainedObject() call into RenderLayerModelObject::willBeDestroyed() because only RenderLayerModelObjects can be added as viewportConstrainedObjects.
2689         * rendering/RenderLayerModelObject.cpp:
2690         (WebCore::RenderLayerModelObject::willBeDestroyed): Changed this->view() (then view->frameView()) to this->frame() (then frame->view()) because when willBeDestroyed() is called, the document has set its renderView to 0 thus this->view() will return 0, causing removeViewportConstrainedObject() not called and a deleted RenderLayerModelObject in FrameView's viewportConstrainedObjects.
2691
2692 2013-02-13  Florin Malita  <fmalita@chromium.org>
2693
2694         [SVG] OOB access in SVGListProperty::replaceItemValues()
2695         https://bugs.webkit.org/show_bug.cgi?id=109293
2696
2697         Replacing a list property item with itself should be a no-op. This patch updates the related
2698         APIs and logic to detect the self-replace case and prevent removal of the item from the list.
2699
2700         To avoid scanning the list multiple times, removeItemFromList() is updated to operate on
2701         indices and a findItem() method is added to resolve an item to an index.
2702
2703         Reviewed by Dirk Schulze.
2704
2705         No new tests: updated existing tests cover the change.
2706
2707         * svg/properties/SVGAnimatedListPropertyTearOff.h:
2708         (WebCore::SVGAnimatedListPropertyTearOff::findItem):
2709         (SVGAnimatedListPropertyTearOff):
2710         (WebCore::SVGAnimatedListPropertyTearOff::removeItemFromList):
2711         * svg/properties/SVGAnimatedPathSegListPropertyTearOff.h:
2712         (WebCore::SVGAnimatedPathSegListPropertyTearOff::findItem):
2713         (SVGAnimatedPathSegListPropertyTearOff):
2714         (WebCore::SVGAnimatedPathSegListPropertyTearOff::removeItemFromList):
2715         Add a findItem() delegating method, and update removeItemFromList() to use the new
2716         index-based API.
2717
2718         * svg/properties/SVGListProperty.h:
2719         (WebCore::SVGListProperty::insertItemBeforeValues):
2720         (WebCore::SVGListProperty::insertItemBeforeValuesAndWrappers):
2721         (WebCore::SVGListProperty::replaceItemValues):
2722         (WebCore::SVGListProperty::replaceItemValuesAndWrappers):
2723         (SVGListProperty):
2724         Updated to handle the no-op case for insertItemBefore() & replaceItem().
2725
2726         * svg/properties/SVGListPropertyTearOff.h:
2727         (WebCore::SVGListPropertyTearOff::findItem):
2728         (WebCore::SVGListPropertyTearOff::removeItemFromList):
2729         Index-based API updates.
2730
2731         (WebCore::SVGListPropertyTearOff::processIncomingListItemValue):
2732         (WebCore::SVGListPropertyTearOff::processIncomingListItemWrapper):
2733         * svg/properties/SVGPathSegListPropertyTearOff.cpp:
2734         (WebCore::SVGPathSegListPropertyTearOff::processIncomingListItemValue):
2735         Detect the self-replace case and return without removing the item from the list.
2736
2737         * svg/properties/SVGPathSegListPropertyTearOff.h:
2738         (WebCore::SVGPathSegListPropertyTearOff::findItem):
2739         (WebCore::SVGPathSegListPropertyTearOff::removeItemFromList):
2740         (SVGPathSegListPropertyTearOff):
2741         (WebCore::SVGPathSegListPropertyTearOff::processIncomingListItemWrapper):
2742         * svg/properties/SVGStaticListPropertyTearOff.h:
2743         (WebCore::SVGStaticListPropertyTearOff::processIncomingListItemValue):
2744         (WebCore::SVGStaticListPropertyTearOff::processIncomingListItemWrapper):
2745         Index-based API updates.
2746
2747 2013-02-13  Takashi Sakamoto  <tasak@google.com>
2748
2749         [Refactoring] StyleResolver::State should have methods to access its member variables.
2750         https://bugs.webkit.org/show_bug.cgi?id=108563
2751
2752         Reviewed by Antti Koivisto.
2753
2754         Made all member variables private and added methods to access the
2755         variables, because most of the member variables are read-only.
2756         We don't need to update those read-only variables while resolving
2757         styles.
2758
2759         No new tests, because just refactoring.
2760
2761         * css/SVGCSSStyleSelector.cpp:
2762         (WebCore::StyleResolver::applySVGProperty):
2763         * css/StyleResolver.cpp:
2764         (WebCore):
2765         (WebCore::StyleResolver::collectMatchingRules):
2766         (WebCore::StyleResolver::collectMatchingRulesForRegion):
2767         (WebCore::StyleResolver::sortAndTransferMatchedRules):
2768         (WebCore::StyleResolver::matchScopedAuthorRules):
2769         (WebCore::StyleResolver::styleSharingCandidateMatchesHostRules):
2770         (WebCore::StyleResolver::matchHostRules):
2771         (WebCore::StyleResolver::matchAuthorRules):
2772         (WebCore::StyleResolver::matchUserRules):
2773         (WebCore::StyleResolver::matchUARules):
2774         (WebCore::StyleResolver::collectMatchingRulesForList):
2775         (WebCore::StyleResolver::sortMatchedRules):
2776         (WebCore::StyleResolver::matchAllRules):
2777         (WebCore::StyleResolver::State::initElement):
2778         (WebCore::StyleResolver::initElement):
2779         Modified to invoke m_state.initElement if a given element is
2780         different from current m_state's element.
2781         (WebCore::StyleResolver::State::initForStyleResolve):
2782         Moved from StyleResolver.
2783         (WebCore::StyleResolver::styleSharingCandidateMatchesRuleSet):
2784         (WebCore::StyleResolver::canShareStyleWithControl):
2785         (WebCore::StyleResolver::sharingCandidateHasIdenticalStyleAffectingAttributes):
2786         (WebCore::StyleResolver::canShareStyleWithElement):
2787         (WebCore::StyleResolver::locateSharedStyle):
2788         (WebCore::StyleResolver::styleForElement):
2789         (WebCore::StyleResolver::styleForKeyframe):
2790         (WebCore::StyleResolver::keyframeStylesForAnimation):
2791         (WebCore::StyleResolver::pseudoStyleForElement):
2792         Changed ASSERT in the first line. ASSERT(m_state.parentStyle) would be
2793         wrong, because it depends on previous resolving. However,
2794         initForStyleResolve will also update m_state.parentStyle. No code in
2795         pseudoStyleForElement depends on previous resolving state.
2796         (WebCore::StyleResolver::styleForPage):
2797         (WebCore::StyleResolver::defaultStyleForElement):
2798         (WebCore::StyleResolver::adjustRenderStyle):
2799         (WebCore::StyleResolver::updateFont):
2800         (WebCore::StyleResolver::pseudoStyleRulesForElement):
2801         (WebCore::StyleResolver::ruleMatches):
2802         Added one more parameter, dynamicPseudo, because dynamicPseudo in
2803         State class is just used for returning matched pseudo style from
2804         this ruleMatches to collectMatchingRulesForList. No need to keep
2805         dynamicPseudo while resolving styles.
2806         (WebCore::StyleResolver::checkRegionSelector):
2807         Removed m_pseudoStyle = NOPSEUDO, because this method uses just
2808         SelectorChecker::matched. SelectorChecker doesn't see StyleResolver's
2809         m_pseudoStyle directly. Need to use SelectorCheckerContext. So no
2810         need to set m_pseudoStyle to be NOPSEUDO.
2811         (WebCore::StyleResolver::applyProperties):
2812         (WebCore::StyleResolver::applyMatchedProperties):
2813         (WebCore::StyleResolver::isLeftPage):
2814         (WebCore::StyleResolver::applyPropertyToStyle):
2815         (WebCore::StyleResolver::useSVGZoomRules):
2816         (WebCore::createGridTrackBreadth):
2817         (WebCore::StyleResolver::resolveVariables):
2818         (WebCore::StyleResolver::applyProperty):
2819         (WebCore::StyleResolver::cachedOrPendingFromValue):
2820         (WebCore::StyleResolver::generatedOrPendingFromValue):
2821         (WebCore::StyleResolver::setOrPendingFromValue):
2822         (WebCore::StyleResolver::cursorOrPendingFromValue):
2823         (WebCore::StyleResolver::checkForTextSizeAdjust):
2824         (WebCore::StyleResolver::initializeFontStyle):
2825         (WebCore::StyleResolver::setFontSize):
2826         (WebCore::StyleResolver::colorFromPrimitiveValue):
2827         (WebCore::StyleResolver::loadPendingSVGDocuments):
2828         (WebCore::StyleResolver::cachedOrPendingStyleShaderFromValue):
2829         (WebCore::StyleResolver::loadPendingShaders):
2830         (WebCore::StyleResolver::parseCustomFilterTransformParameter):
2831         (WebCore::StyleResolver::createFilterOperations):
2832         (WebCore::StyleResolver::loadPendingImage):
2833         (WebCore::StyleResolver::loadPendingImages):
2834         * css/StyleResolver.h:
2835         (WebCore::StyleResolver::style):
2836         (WebCore::StyleResolver::parentStyle):
2837         (WebCore::StyleResolver::rootElementStyle):
2838         (WebCore::StyleResolver::element):
2839         (WebCore::StyleResolver::hasParentNode):
2840         (StyleResolver):
2841         (WebCore::StyleResolver::State::State):
2842         (State):
2843         (WebCore::StyleResolver::State::clear):
2844         Modified to use clear at the end of styleForElement.
2845         (WebCore::StyleResolver::State::document):
2846         (WebCore::StyleResolver::State::element):
2847         (WebCore::StyleResolver::State::styledElement):
2848         (WebCore::StyleResolver::State::setStyle):
2849         (WebCore::StyleResolver::State::style):
2850         (WebCore::StyleResolver::State::takeStyle):
2851         (WebCore::StyleResolver::State::ensureRuleList):
2852         (WebCore::StyleResolver::State::takeRuleList):
2853         (WebCore::StyleResolver::State::parentNode):
2854         (WebCore::StyleResolver::State::setParentStyle):
2855         (WebCore::StyleResolver::State::parentStyle):
2856         (WebCore::StyleResolver::State::rootElementStyle):
2857         (WebCore::StyleResolver::State::regionForStyling):
2858         (WebCore::StyleResolver::State::setSameOriginOnly):
2859         (WebCore::StyleResolver::State::isSameOriginOnly):
2860         (WebCore::StyleResolver::State::pseudoStyle):
2861         (WebCore::StyleResolver::State::elementLinkState):
2862         (WebCore::StyleResolver::State::distributedToInsertionPoint):
2863         (WebCore::StyleResolver::State::setElementAffectedByClassRules):
2864         (WebCore::StyleResolver::State::elementAffectedByClassRules):
2865         (WebCore::StyleResolver::State::setApplyPropertyToRegularStyle):
2866         (WebCore::StyleResolver::State::setApplyPropertyToVisitedLinkStyle):
2867         (WebCore::StyleResolver::State::applyPropertyToRegularStyle):
2868         (WebCore::StyleResolver::State::applyPropertyToVisitedLinkStyle):
2869         (WebCore::StyleResolver::State::pendingImageProperties):
2870         (WebCore::StyleResolver::State::pendingSVGDocuments):
2871         (WebCore::StyleResolver::State::setHasPendingShaders):
2872         (WebCore::StyleResolver::State::hasPendingShaders):
2873         (WebCore::StyleResolver::State::setLineHeightValue):
2874         (WebCore::StyleResolver::State::lineHeightValue):
2875         (WebCore::StyleResolver::State::setFontDirty):
2876         (WebCore::StyleResolver::State::fontDirty):
2877         (WebCore::StyleResolver::State::cacheBorderAndBackground):
2878         (WebCore::StyleResolver::State::hasUAAppearance):
2879         (WebCore::StyleResolver::State::borderData):
2880         (WebCore::StyleResolver::State::backgroundData):
2881         (WebCore::StyleResolver::State::backgroundColor):
2882         (WebCore::StyleResolver::State::fontDescription):
2883         (WebCore::StyleResolver::State::parentFontDescription):
2884         (WebCore::StyleResolver::State::setFontDescription):
2885         (WebCore::StyleResolver::State::setZoom):
2886         (WebCore::StyleResolver::State::setEffectiveZoom):
2887         (WebCore::StyleResolver::State::setTextSizeAdjust):
2888         (WebCore::StyleResolver::State::setWritingMode):
2889         (WebCore::StyleResolver::State::setTextOrientation):
2890         fontDescription, ... and setTextOrientation were moved from
2891         StyleResolver.
2892         (WebCore::StyleResolver::State::matchedRules):
2893         (WebCore::StyleResolver::State::addMatchedRule):
2894         Moved from StyleResolver.
2895         (WebCore::StyleResolver::applyPropertyToRegularStyle):
2896         (WebCore::StyleResolver::applyPropertyToVisitedLinkStyle):
2897         (WebCore::StyleResolver::fontDescription):
2898         (WebCore::StyleResolver::parentFontDescription):
2899         (WebCore::StyleResolver::setFontDescription):
2900         (WebCore::StyleResolver::setZoom):
2901         (WebCore::StyleResolver::setEffectiveZoom):
2902         (WebCore::StyleResolver::setTextSizeAdjust):
2903         (WebCore::StyleResolver::setWritingMode):
2904         (WebCore::StyleResolver::setTextOrientation):
2905         These fontDescription, ..., setTextOrientation are wrappers to
2906         invoke State's methods. StyleBuilder still depends on StyleResolver
2907         and invokes these methods. So we need these wrappers.
2908
2909 2013-02-13  Allan Sandfeld Jensen  <allan.jensen@digia.com>
2910
2911         [Qt] window.open passes height and width parameters even if not defined in a page
2912         https://bugs.webkit.org/show_bug.cgi?id=107705
2913
2914         Reviewed by Kenneth Rohde Christiansen.
2915
2916         Do not override width or height of 0, as that indicates default size, and not minimum size.
2917
2918         Tested by tst_qwebpage.
2919
2920         * page/DOMWindow.cpp:
2921         (WebCore::DOMWindow::adjustWindowRect):
2922
2923 2013-02-13  Rashmi Shyamasundar  <rashmi.s2@samsung.com>
2924
2925         The 2D Canvas functions fillText()/strokeText() should display nothing when maxWidth is less then or equal to zero
2926         https://bugs.webkit.org/show_bug.cgi?id=102656
2927
2928         Reviewed by Dirk Schulze.
2929
2930         The functions fillText()/strokeText() should not display anything when 
2931         maxWidth is less than or equal to zero, according to spec :
2932         http://www.w3.org/TR/2dcontext/#text-preparation-algorithm
2933
2934         Test: fast/canvas/canvas-fillText-maxWidth-zero.html
2935
2936         * html/canvas/CanvasRenderingContext2D.cpp:
2937         (WebCore::CanvasRenderingContext2D::drawTextInternal):
2938
2939 2013-02-13  ChangSeok Oh  <shivamidow@gmail.com>
2940
2941         [GTK][AC] Implement basic transform animations with clutter ac backend
2942         https://bugs.webkit.org/show_bug.cgi?id=109363
2943
2944         Reviewed by Gustavo Noronha Silva.
2945
2946         Implement basic transform animation with clutter ac backend.
2947         GraphicsLayerClutter is almost same with GraphicsLayerCA. And PlatformClutterAnimation
2948         interfaces are also similar with PlatformCAAnimation, but they are implemented
2949         with native clutter APIs. Clutter backend AC supports a basic single transform animation
2950         with this patch now, but additive animation combination and keyframe animation
2951         are not supported yet.
2952
2953         Covered by existing animation tests.
2954
2955         * platform/graphics/clutter/GraphicsLayerActor.cpp:
2956         (graphicsLayerActorSetTransform):
2957         * platform/graphics/clutter/GraphicsLayerClutter.cpp:
2958         (WebCore::isTransformTypeTransformationMatrix):
2959         (WebCore):
2960         (WebCore::isTransformTypeFloatPoint3D):
2961         (WebCore::isTransformTypeNumber):
2962         (WebCore::getTransformFunctionValue):
2963         (WebCore::getValueFunctionNameForTransformOperation):
2964         (WebCore::GraphicsLayerClutter::setTransformAnimationEndpoints):
2965         (WebCore::GraphicsLayerClutter::appendToUncommittedAnimations):
2966         (WebCore::GraphicsLayerClutter::createTransformAnimationsFromKeyframes):
2967         * platform/graphics/clutter/GraphicsLayerClutter.h:
2968         (GraphicsLayerClutter):
2969         * platform/graphics/clutter/PlatformClutterAnimation.cpp:
2970         (WebCore::toClutterActorPropertyString):
2971         (WebCore):
2972         (WebCore::PlatformClutterAnimation::supportsValueFunction):
2973         (WebCore::PlatformClutterAnimation::duration):
2974         (WebCore::PlatformClutterAnimation::setDuration):
2975         (WebCore::PlatformClutterAnimation::setAdditive):
2976         (WebCore::PlatformClutterAnimation::valueFunction):
2977         (WebCore::PlatformClutterAnimation::setValueFunction):
2978         (WebCore::PlatformClutterAnimation::setFromValue):
2979         (WebCore::PlatformClutterAnimation::setToValue):
2980         (WebCore::PlatformClutterAnimation::timeline):
2981         (WebCore::PlatformClutterAnimation::addClutterTransitionForProperty):
2982         (WebCore::PlatformClutterAnimation::addOpacityTransition):
2983         (WebCore::PlatformClutterAnimation::addTransformTransition):
2984         (WebCore::PlatformClutterAnimation::addAnimationForKey):
2985         * platform/graphics/clutter/PlatformClutterAnimation.h:
2986         (PlatformClutterAnimation):
2987
2988 2013-02-13  Ilya Tikhonovsky  <loislo@chromium.org>
2989
2990         Web Inspector: Native Memory Instrumentation: reportLeaf method doesn't report the leaf node properly.
2991         https://bugs.webkit.org/show_bug.cgi?id=109554
2992
2993         In some cases leaves have no pointer so with the old schema we can't generate nodeId for them because we
2994         can't insert 0 into hashmap. It happens when we call addPrivateBuffer method.
2995
2996         Drive by fix: I introduced a client interface for the HeapGraphSerializer.
2997         It helps me to do the tests for the serializer.
2998
2999         Reviewed by Yury Semikhatsky.
3000
3001         It is covered by newly added tests in TestWebKitAPI.
3002
3003         * inspector/HeapGraphSerializer.cpp:
3004         (WebCore::HeapGraphSerializer::HeapGraphSerializer):
3005         (WebCore::HeapGraphSerializer::pushUpdate):
3006         (WebCore::HeapGraphSerializer::reportNode):
3007         (WebCore::HeapGraphSerializer::toNodeId):
3008         (WebCore::HeapGraphSerializer::addRootNode):
3009         * inspector/HeapGraphSerializer.h:
3010         (HeapGraphSerializer):
3011         (Client):
3012         (WebCore::HeapGraphSerializer::Client::~Client):
3013         * inspector/InspectorMemoryAgent.cpp:
3014         (WebCore):
3015         (WebCore::InspectorMemoryAgent::getProcessMemoryDistributionImpl):
3016
3017 2013-02-13  Yury Semikhatsky  <yurys@chromium.org>
3018
3019         Web Inspector: add experimental native heap graph to Timeline panel
3020         https://bugs.webkit.org/show_bug.cgi?id=109687
3021
3022         Reviewed by Alexander Pavlov.
3023
3024         Added experimentatl support for native heap graph on the Timeline panel.
3025         Native memory usage data is collected after each top level task and can
3026         be displayed instead of DOM counters graph on the Timeline panel if
3027         corresponding experiment is enabled in the inspector settings.
3028
3029         * inspector/Inspector.json:
3030         * inspector/InspectorController.cpp:
3031         (WebCore::InspectorController::InspectorController):
3032         * inspector/InspectorTimelineAgent.cpp:
3033         (TimelineAgentState):
3034         (WebCore::InspectorTimelineAgent::setIncludeDomCounters):
3035         (WebCore):
3036         (WebCore::InspectorTimelineAgent::setIncludeNativeMemoryStatistics):
3037         (WebCore::InspectorTimelineAgent::innerAddRecordToTimeline):
3038         (WebCore::InspectorTimelineAgent::setDOMCounters):
3039         (WebCore::InspectorTimelineAgent::setNativeHeapStatistics):
3040         (WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
3041         * inspector/InspectorTimelineAgent.h:
3042         (WebCore):
3043         (WebCore::InspectorTimelineAgent::create):
3044         (InspectorTimelineAgent):
3045         * inspector/WorkerInspectorController.cpp:
3046         (WebCore::WorkerInspectorController::WorkerInspectorController):
3047         * inspector/front-end/MemoryStatistics.js:
3048         (WebInspector.MemoryStatistics):
3049         * inspector/front-end/NativeMemoryGraph.js:
3050         (WebInspector.NativeMemoryGraph):
3051         (WebInspector.NativeMemoryGraph.prototype._onRecordAdded.addStatistics):
3052         (WebInspector.NativeMemoryGraph.prototype._onRecordAdded):
3053         * inspector/front-end/Settings.js:
3054         (WebInspector.ExperimentsSettings):
3055         * inspector/front-end/TimelinePanel.js:
3056
3057 2013-02-13  Vladislav Kaznacheev  <kaznacheev@chromium.org>
3058
3059         Web Inspector: Fixed colorpicker editing and scrolling.
3060         https://bugs.webkit.org/show_bug.cgi?id=109434.
3061
3062         Reviewed by Alexander Pavlov.
3063
3064         The color picker scrolling logic relied on the fixed DOM structure which changed with the introduction of
3065         SidebarPaneStack (https://bugs.webkit.org/show_bug.cgi?id=108183).
3066         Added a special CSS class to mark the scroll target.
3067
3068         No new tests.
3069
3070         * inspector/front-end/SplitView.js:
3071         (WebInspector.SplitView):
3072         * inspector/front-end/StylesSidebarPane.js:
3073         (WebInspector.StylePropertyTreeElement.prototype.updateTitle.):
3074         * inspector/front-end/TabbedPane.js:
3075         (WebInspector.TabbedPane):
3076  
3077 2013-02-13  Andrey Lushnikov  <lushnikov@chromium.org>
3078
3079         Web Inspector: fix js compilation warnings in TextPrompt
3080         https://bugs.webkit.org/show_bug.cgi?id=109685
3081
3082         Reviewed by Alexander Pavlov.
3083
3084         Mark last argument of _applySuggestion function as optional.
3085
3086         No new tests: no change in behaviour.
3087
3088         * inspector/front-end/TextPrompt.js:
3089
3090 2013-02-13  Pablo Flouret  <pablof@motorola.com>
3091
3092         Implement css-conditional's CSS.supports()
3093         https://bugs.webkit.org/show_bug.cgi?id=100324
3094
3095         Reviewed by Antti Koivisto.
3096
3097         http://dev.w3.org/csswg/css3-conditional/#the-css-interface
3098
3099         The supports() method provides the css @supports rule's corresponding
3100         dom api.
3101         The patch also adds the CSS interface on DOMWindow, which holds "useful
3102         CSS-related functions that do not belong elsewhere". This is where
3103         supports() lives.
3104
3105         Test: css3/supports-dom-api.html
3106
3107         * CMakeLists.txt:
3108         * DerivedSources.cpp:
3109         * DerivedSources.make:
3110         * DerivedSources.pri:
3111         * GNUmakefile.list.am:
3112         * Target.pri:
3113         * WebCore.exp.in:
3114         * WebCore.gypi:
3115         * WebCore.vcproj/WebCore.vcproj:
3116         * WebCore.xcodeproj/project.pbxproj:
3117         * bindings/gobject/GNUmakefile.am:
3118         * bindings/scripts/CodeGeneratorGObject.pm:
3119         (SkipFunction):
3120             Add DOMWindowCSS.* to the build systems.
3121
3122         * bindings/scripts/CodeGenerator.pm:
3123         (WK_lcfirst):
3124             Handle CSS prefixes correctly (s/cSS/css/).
3125
3126         * css/CSSGrammar.y.in:
3127         * css/CSSParser.cpp:
3128         (WebCore::CSSParser::CSSParser):
3129         (WebCore::CSSParser::parseSupportsCondition):
3130         (WebCore::CSSParser::detectAtToken):
3131         * css/CSSParser.h:
3132             webkit_supports_condition parses just the condition part of an
3133             @supports rule and evaluates it, outputting whether the condition
3134             is supported or not.
3135
3136         * css/CSSAllInOne.cpp:
3137         * css/DOMWindowCSS.cpp: Added.
3138         * css/DOMWindowCSS.h: Added.
3139         * css/DOMWindowCSS.idl: Added.
3140             The CSS interface object.
3141
3142         * page/DOMWindow.cpp:
3143         (WebCore::DOMWindow::css):
3144         * page/DOMWindow.h:
3145         * page/DOMWindow.idl:
3146             window.CSS
3147
3148 2013-02-13  Vladislav Kaznacheev  <kaznacheev@chromium.org>
3149
3150         Web Inspector: Simplify SplitView to rely more on CSS
3151         https://bugs.webkit.org/show_bug.cgi?id=109426
3152
3153         Reviewed by Vsevolod Vlasov.
3154
3155         Simplified Javascript code by moving large part of the layout logic into CSS rules. The patch is larger than it
3156         should be because one of the clients (TimelinePanel) is breaking SplitView incapsulation by reparenting its
3157         resizer.
3158
3159         No new tests.
3160
3161         * inspector/front-end/SidebarView.js:
3162         (WebInspector.SidebarView):
3163         * inspector/front-end/SplitView.js:
3164         (WebInspector.SplitView):
3165         (WebInspector.SplitView.prototype._innerSetVertical):
3166         (WebInspector.SplitView.prototype.setSecondIsSidebar):
3167         (WebInspector.SplitView.prototype._showOnly):
3168         (WebInspector.SplitView.prototype._removeAllLayoutProperties):
3169         * inspector/front-end/TimelinePanel.js:
3170         * inspector/front-end/cssNamedFlows.css:
3171         (.css-named-flow-collections-view .split-view-sidebar):
3172         (.css-named-flow-collections-view .split-view-sidebar .sidebar-content):
3173         (.css-named-flow-collections-view .split-view-sidebar .selection):
3174         (.css-named-flow-collections-view .split-view-sidebar .named-flow-overflow::before, .css-named-flow-collections-view .region-empty:before, .css-named-flow-collections-view .region-fit::before, .css-named-flow-collections-view .region-overset::before):
3175         (.css-named-flow-collections-view .split-view-sidebar .named-flow-overflow::before):
3176         * inspector/front-end/splitView.css:
3177         (.split-view-contents.maximized):
3178         (.split-view-vertical .split-view-contents):
3179         (.split-view-vertical .split-view-contents-first):
3180         (.split-view-vertical .split-view-contents-first.maximized):
3181         (.split-view-vertical .split-view-contents-second):
3182         (.split-view-vertical .split-view-contents-second.maximized):
3183         (.split-view-horizontal .split-view-contents):
3184         (.split-view-horizontal .split-view-contents-first):
3185         (.split-view-horizontal .split-view-contents-first.maximized):
3186         (.split-view-horizontal .split-view-contents-second):
3187         (.split-view-horizontal .split-view-contents-second.maximized):
3188         (.split-view-vertical .split-view-sidebar.split-view-contents-first:not(.maximized)):
3189         (.split-view-vertical .split-view-sidebar.split-view-contents-second:not(.maximized)):
3190         (.split-view-horizontal .split-view-sidebar.split-view-contents-first:not(.maximized)):
3191         (.split-view-horizontal .split-view-sidebar.split-view-contents-second:not(.maximized)):
3192         (.split-view-vertical .split-view-resizer):
3193         (.split-view-horizontal .split-view-resizer):
3194         * inspector/front-end/timelinePanel.css:
3195         (.timeline.split-view-vertical .split-view-resizer):
3196         (#timeline-container .split-view-sidebar):
3197
3198 2013-02-13  Kentaro Hara  <haraken@chromium.org>
3199
3200         Unreviewed, rolling out r142730.
3201         http://trac.webkit.org/changeset/142730
3202         https://bugs.webkit.org/show_bug.cgi?id=109666
3203
3204         chromium browser tests are failing
3205
3206         * bindings/scripts/CodeGeneratorV8.pm:
3207         (GenerateNormalAttrGetter):
3208         (GenerateNormalAttrSetter):
3209         (GenerateSingleBatchedAttribute):
3210         (GenerateImplementation):
3211         * bindings/scripts/test/V8/V8TestInterface.cpp:
3212         (TestInterfaceV8Internal):
3213         (WebCore):
3214         * bindings/scripts/test/V8/V8TestObj.cpp:
3215         (WebCore):
3216
3217 2013-02-13  Tamas Czene  <tczene@inf.u-szeged.hu>
3218
3219         OpenCL implementation of Flood SVG filters.
3220         https://bugs.webkit.org/show_bug.cgi?id=109580
3221
3222         Reviewed by Zoltan Herczeg.
3223
3224         * Target.pri:
3225         * platform/graphics/filters/FEFlood.h:
3226         (FEFlood):
3227         * platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:
3228         (WebCore):
3229         (WebCore::PROGRAM_STR):
3230         (WebCore::FilterContextOpenCL::compileFill):
3231         (WebCore::FilterContextOpenCL::fill):
3232         * platform/graphics/gpu/opencl/FilterContextOpenCL.h:
3233         (WebCore::FilterContextOpenCL::FilterContextOpenCL):
3234         (FilterContextOpenCL):
3235         * platform/graphics/gpu/opencl/OpenCLFEFlood.cpp: Added.
3236         (WebCore):
3237         (WebCore::FEFlood::platformApplyOpenCL):
3238
3239 2013-02-13  Mike West  <mkwst@chromium.org>
3240
3241         location.href does not throw SECURITY_ERR when accessed across origins with JSC bindings
3242         https://bugs.webkit.org/show_bug.cgi?id=43891
3243
3244         Reviewed by Adam Barth.
3245
3246         Other browsers (IE, Firefox, and Opera) throw an exception when accessing
3247         properties of a Location object across origins, as the spec suggests[1].
3248         WebKit is currently the outlier.
3249
3250         This has a few negative effects: developers are forced to hack around
3251         access violations in two ways rather than having a single code path, and
3252         (more annoyingly) developers are unable to avoid generating the error
3253         message. See every ad on the internet for the effect on the console. :)
3254
3255         This patch adds a SECURITY_ERR exception to these access violations,
3256         which is the first step towards getting rid of the console spam. Getting
3257         rid of the message entirely will require a solution to
3258         http://wkbug.com/98050.
3259
3260         A fairly inconclusive thread[2] on webkit-dev popped up in 2010 and
3261         trailed off without reaching conclusion. A more recent thread reached
3262         agreement that this patch seems like a reasonable thing to do[3].
3263
3264         This is the JSC half of the patch. V8 is coming in http://wkbug.com/43892
3265
3266         [1]: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#security-location
3267         [2]: https://lists.webkit.org/pipermail/webkit-dev/2010-August/013880.html
3268         [2]: https://lists.webkit.org/pipermail/webkit-dev/2012-February/023636.html
3269
3270         * bindings/js/JSLocationCustom.cpp:
3271         (WebCore::JSLocation::getOwnPropertySlotDelegate):
3272
3273 2013-02-13  Andrew Wilson  <atwilson@chromium.org>
3274
3275         Unreviewed Chromium gyp-file cleanup after glib backend removal.
3276         https://bugs.webkit.org/show_bug.cgi?id=109672
3277
3278         Removed references to GLib unicode backend:
3279
3280         * WebCore.gypi:
3281
3282 2013-02-12  Kentaro Hara  <haraken@chromium.org>
3283
3284         [V8] Generate wrapper methods for custom getters/setters
3285         https://bugs.webkit.org/show_bug.cgi?id=109666
3286
3287         Reviewed by Adam Barth.
3288
3289         Currently V8 directly calls back custom getters/setters written
3290         in custom binding files. This makes it impossible for code generators
3291         to hook custom getters/setters (e.g. Code generators cannot insert a code
3292         for FeatureObservation into custom getters/setters). We should generate
3293         wrapper methods for custom getters/setters.
3294
3295         In the future, I will insert TRACE_EVENT() macros into these wrapper methods
3296         to profile DOM getters/setters/methods.
3297
3298         * bindings/scripts/CodeGeneratorV8.pm:
3299         (GenerateNormalAttrGetter):
3300         (GenerateNormalAttrSetter):
3301         (GenerateSingleBatchedAttribute):
3302         (GenerateImplementation):
3303         * bindings/scripts/test/V8/V8TestInterface.cpp:
3304         (WebCore::TestInterfaceV8Internal::supplementalStr3AttrGetter):
3305         (TestInterfaceV8Internal):
3306         (WebCore::TestInterfaceV8Internal::supplementalStr3AttrSetter):
3307         (WebCore):
3308         * bindings/scripts/test/V8/V8TestObj.cpp:
3309         (WebCore::TestObjV8Internal::customAttrAttrGetter):
3310         (TestObjV8Internal):
3311         (WebCore::TestObjV8Internal::customAttrAttrSetter):
3312         (WebCore):
3313
3314 2013-02-13  Sheriff Bot  <webkit.review.bot@gmail.com>
3315
3316         Unreviewed, rolling out r142611.
3317         http://trac.webkit.org/changeset/142611
3318         https://bugs.webkit.org/show_bug.cgi?id=109668
3319
3320         Suggest box is not shown anymore when user types "window." in
3321         inspector console. (Requested by vsevik on #webkit).
3322
3323         * inspector/front-end/TextPrompt.js:
3324         (WebInspector.TextPrompt.prototype.complete):
3325
3326 2013-02-13  Kentaro Hara  <haraken@chromium.org>
3327
3328         [V8] There is no XXXConstructor that requires a custom getter
3329         https://bugs.webkit.org/show_bug.cgi?id=109667
3330
3331         Reviewed by Adam Barth.
3332
3333         Currently '[Custom] attribute XXXConstructor xxx' generates
3334         XXXAttrGetter(). However, there is no XXXConstructor with [Custom].
3335         In addition, it does make no sense to generate XXXAttrGetter() for such cases.
3336         We can remove the logic from CodeGeneratorV8.pm.
3337
3338         * bindings/scripts/CodeGeneratorV8.pm:
3339         (GenerateSingleBatchedAttribute):
3340
3341 2013-02-12  Hajime Morrita  <morrita@google.com>
3342
3343         [Internals] setShadowDOMEnabled() shouldn't be used except a few tests.
3344         https://bugs.webkit.org/show_bug.cgi?id=109642
3345
3346         Reviewed by Kent Tamura.
3347
3348         InternalSettings.setShadowDOMEnabled() shouldn't be called after
3349         any relevant DOM bindings are touched. However for fuzzers, it
3350         isn't trivial to regulate its behavior.
3351
3352         This change whitelists the URL of running test for prevent
3353         unintended API calls. This doesn't hurt the Internals usability
3354         since the API is called from just a couple of tests and the number
3355         isn't expected to grow.
3356
3357         Test: fast/dom/shadow/shadow-dom-enabled-flag-whitelist.html
3358
3359         * testing/InternalSettings.cpp:
3360         (WebCore::urlIsWhitelisted):
3361         (WebCore):
3362         (WebCore::InternalSettings::setShadowDOMEnabled):
3363
3364 2013-02-12  Vsevolod Vlasov  <vsevik@chromium.org>
3365
3366         Web Inspector: Introduce version controller to migrate settings versions.
3367         https://bugs.webkit.org/show_bug.cgi?id=109553
3368
3369         Reviewed by Yury Semikhatsky.
3370
3371         This patch introduces version controller that could be used to migrate inspector settings.
3372
3373         Test: inspector/version-controller.html
3374
3375         * inspector/front-end/Settings.js:
3376         (WebInspector.Settings):
3377         (WebInspector.VersionController):
3378         (WebInspector.VersionController.prototype.set _methodsToRunToUpdateVersion):
3379         (WebInspector.VersionController.prototype._updateVersionFrom0To1):
3380         * inspector/front-end/inspector.js:
3381
3382 2013-02-12  Martin Robinson  <mrobinson@igalia.com>
3383
3384         [GTK] Remove the GLib unicode backend
3385         https://bugs.webkit.org/show_bug.cgi?id=109627
3386
3387         Reviewed by Benjamin Poulain.
3388
3389         Remove references to the GLib unicode backend from WebCore.
3390
3391         * GNUmakefile.list.am: Update the source list.
3392         * platform/text/gtk/TextBreakIteratorGtk.cpp: Removed.
3393         * platform/text/gtk/TextCodecGtk.cpp: Removed.
3394         * platform/text/gtk/TextCodecGtk.h: Removed.
3395
3396 2013-02-12  Chris Fleizach  <cfleizach@apple.com>
3397
3398          AX: crash when accessing AccessibilityScrollbar after page has been unloaded
3399          https://bugs.webkit.org/show_bug.cgi?id=109524
3400
3401          Reviewed by Ryosuke Niwa.
3402
3403          AX clients can hold onto AccesibilityScrollbar references that reference parent
3404          AccessibilityScrollViews that have already gone away.
3405
3406          AccessibilityScrollView is not calling detachFromParent after it is removed, which
3407          leads to a crash. The fix is to clearChildren() when an object is deallocated.
3408
3409          I could not create a test because the crash only manifests over multiple page loads.
3410
3411          * accessibility/AccessibilityObject.cpp:
3412          (WebCore::AccessibilityObject::detach):
3413
3414 2013-02-12  Hayato Ito  <hayato@chromium.org>
3415
3416         Use FocusEvent.relatedTarget in {FocusIn,FocusOut,Focus,Blur}EventDispatchMediator.
3417         https://bugs.webkit.org/show_bug.cgi?id=109650
3418
3419         Reviewed by Dimitri Glazkov.
3420