ChangeLog 8.03 MB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2013-03-26  Kent Tamura  <tkent@chromium.org>

        Make HTMLProgressElement::isDeterminate private
        https://bugs.webkit.org/show_bug.cgi?id=113299

        Reviewed by Kentaro Hara.

        The only callsite of isDeterminate outside of HTMLProgressElement
        is in StyleResolver::sharingCandidateHasIdenticalStyleAffectingAttributes,
        and we can replace it with Element::shouldAppearIndeterminate.

        No new tests. Just a refactoring.

        * css/StyleResolver.cpp:
        (WebCore::StyleResolver::sharingCandidateHasIdenticalStyleAffectingAttributes):
        Use Element::shouldAppearIndeterminate.
        * html/HTMLProgressElement.h:
        (HTMLProgressElement): Make isDeterminate private.

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2013-03-26  David Grogan  <dgrogan@chromium.org>

        IndexedDB: Histogram cause of LevelDB write errors
        https://bugs.webkit.org/show_bug.cgi?id=113350

        Reviewed by Tony Chang.

        Add histogram for source of LevelDB errors on Write in addition to
        Open.

        No new tests - no good way to test histogram code.

        * platform/leveldb/LevelDBDatabase.cpp:
        (WebCore::histogramLevelDBError):
        (WebCore):
        (WebCore::LevelDBDatabase::open):
        (WebCore::LevelDBDatabase::write):

38
39
40
41
42
43
44
45
46
47
48
49
50
51
2013-03-26  Chris Fleizach  <cfleizach@apple.com>

        WebKit does not expose @required or @aria-required as AXRequired on select elements
        https://bugs.webkit.org/show_bug.cgi?id=113339

        Reviewed by Tim Horton.

        Make sure button types can return the AXRequired attribute.

        Tests: platform/mac/accessibility/aria-required-popup-button.html

        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
        (-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
2013-03-26  Dean Jackson  <dino@apple.com>

        When a primary plugin is restarted, also start similar plugins
        https://bugs.webkit.org/show_bug.cgi?id=113265

        Reviewed by Tim Horton.

        If we detect a primary plugin that is snapshotted, we immediately restart it.
        When this happens, we should also restart any other plugins that
        match the same origin and type. This allows sites with a lot of
        (geometrically) nearby plugins to behave as if they are a single big plugin.

        Tests: plugins/snapshotting/autoplay-similar-to-dominant-after-delay.html
               plugins/snapshotting/autoplay-similar-to-dominant.html

        * WebCore.exp.in: Export mimeTypeFromURL.
        * html/HTMLPlugInImageElement.cpp:
        (WebCore::addPlugInsFromNodeListMatchingPlugInOrigin): Use loadedMimeType helper.
        (WebCore::HTMLPlugInImageElement::restartSimilarPlugIns): New method, which copied the
            existing code from userDidClickSnapshot.
        (WebCore::HTMLPlugInImageElement::userDidClickSnapshot): Move the similar plugin detection
            out into another function and call it.
        (WebCore::HTMLPlugInImageElement::setIsPrimarySnapshottedPlugIn): Call restartSimilarPlugIns.
        (WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn): Use loadedMimeType helper.
        * html/HTMLPlugInImageElement.h: Declaration of restartSimilarPlugIns.
        (WebCore::HTMLPlugInImageElement::loadedMimeType): New helper method since this
            code was being often duplicated.

80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
2013-03-26  Brent Fulgham  <bfulgham@webkit.org>

        [Windows, WinCairo] Scroll offset being applied to plugins during print operations.
        https://bugs.webkit.org/show_bug.cgi?id=39889

        Reviewed by Anders Carlsson.

        This must be tested manually. See the issue for details.

        * plugins/win/PluginViewWin.cpp:
        (WebCore::PluginView::paintWindowedPluginIntoContext):
        Revise the Windows implementation of the PluginView class
        paintWindowedPluginIntoContext to use the containing window
        position when computing the plugin's position for printing.

95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
2013-03-26  Xianzhu Wang  <wangxianzhu@chromium.org>

        Non-paintsContent fixed position layer should not cause slow scrolling
        https://bugs.webkit.org/show_bug.cgi?id=113238

        Reviewed by James Robinson.

        Added NotCompositedForNoVisibleContent in ViewportConstrainedNotCompositedReason and set it in RLC.

        Test: compositing/layer-creation/fixed-position-no-content-scroll-reason.html

        * rendering/RenderLayer.h: Add NotCompositedForNoVisibleContent.
        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::requiresCompositingForPosition): Set NotCompositedForNoVisibleContent reason when the fixed position layer has no visible content.

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
2013-03-26  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Exclusions] The radius of a circle should be computed based on the shorter available dimension
        https://bugs.webkit.org/show_bug.cgi?id=113255

        Reviewed by Julien Chaffraix.

        When we decide what should be the radius of a circle, we should choose the smallest available space. For instance when the
        width or height is not resolvable for the circle we should not have a radius for it. This change modifies the behavior to
        use the smaller available space, so we won't render unnecessary circle shapes.

        Test: fast/exclusions/shape-inside/shape-inside-on-nested-container-with-unresolved-height.html

        * rendering/ExclusionShape.cpp:
        (WebCore::ExclusionShape::createExclusionShape):

126
127
128
129
130
131
132
133
134
135
136
137
138
2013-03-26  Timothy Hatcher  <timothy@apple.com>

        Make the Web Inspector console work in strict mode with JavaScriptCore.

        https://webkit.org/b/65829
        rdar://problem/11271238

        Reviewed by Joseph Pecoraro.

        * inspector/InjectedScriptSource.js:
        (InjectedScript.prototype._evaluateOn): Don't use 'eval' parameter (it isn't
        allowed in strict mode). Swap window.eval with our known eval instead.

139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
2013-03-26  Ryosuke Niwa  <rniwa@webkit.org>

        Heap-use-after-free regression
        https://bugs.webkit.org/show_bug.cgi?id=113337

        Reviewed by Abhishek Arya and Alexey Proskuryakov.

        Use RefPtr instead of raw pointer in m_associatedFormControls.

        * dom/Document.cpp:
        (WebCore::Document::didAssociateFormControlsTimerFired):
        * dom/Document.h:
        (Document):
        * loader/EmptyClients.h:
        (WebCore::EmptyChromeClient::didAssociateFormControls):
        * page/ChromeClient.h:
        (WebCore::ChromeClient::didAssociateFormControls):

157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
2013-03-26  Alexey Proskuryakov  <ap@apple.com>

        <rdar://problem/13194263> Crashes in NetworkProcess due to threading issues
        https://bugs.webkit.org/show_bug.cgi?id=113256

        Reviewed by Brady Eidson.

        Added a new code path in ResourceHandle/ResourceHandleClient that doesn't need
        blocking calls. Implemented it for NSURLConnection by changing NSOperationQueue
        version to forward calls to main thread.

        * WebCore.exp.in: Export new methods.
        * WebCore.xcodeproj/project.pbxproj: Added WebCoreResourceHandleAsOperationQueueDelegate.

        * platform/network/CredentialStorage.cpp: Assert that unprotected global map operations
        happen on main thread.

        * platform/network/ResourceHandle.cpp: Added default implementations of functions
        that handle async responses.

        * platform/network/chromium/ResourceHandle.cpp: Ditto.

        * platform/network/ResourceHandle.h: Added functions that are called in response
        to new async functions in ResourceHandleClient. Changed Mac delegate type to id,
        ast can now be either WebCoreResourceHandleAsDelegate or WebCoreResourceHandleAsOperationQueueDelegate.

        * platform/network/ResourceHandleClient.cpp:
        (WebCore::ResourceHandleClient::willSendRequestAsync):
        (WebCore::ResourceHandleClient::shouldUseCredentialStorageAsync):
        (WebCore::ResourceHandleClient::canAuthenticateAgainstProtectionSpaceAsync):
        (WebCore::ResourceHandleClient::willCacheResponseAsync):
        Default implementations of async client functions. These match default behavior of
        sync versions.

        * platform/network/ResourceHandleClient.h: Added async functions. A ResourceHandle
        should use these when the client returns true from usesAsyncCallbacks().

        * platform/network/ResourceHandleInternal.h: Changed to use id for delegate type
        here, too.

        * platform/network/mac/ResourceHandleMac.mm:
        (WebCore::ResourceHandle::delegate): Create an appropriate delegate for the client.
        (WebCore::ResourceHandle::willSendRequest): Since this function has a lot of common
        behavior in sync and async cases, implement the new code path as a branch inside
        it, not as a new function.
        (WebCore::ResourceHandle::continueWillSendRequest): Unblock the connection when
        response is known.
        (WebCore::ResourceHandle::shouldUseCredentialStorage): Branched here too, for consistency.
        Perhaps we'll want to break this into separate functions though.
        (WebCore::ResourceHandle::continueShouldUseCredentialStorage): Unblock the connection.
        (WebCore::ResourceHandle::canAuthenticateAgainstProtectionSpace): Same change as above.
        (WebCore::ResourceHandle::continueCanAuthenticateAgainstProtectionSpace): Ditto.
        (WebCore::ResourceHandle::continueWillCacheResponse): Ditto. Currently, delegate
        calls the client directly, so we only have a "continue" function, and no "willCacheResponse".

        * platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
        (-[WebCoreResourceHandleAsDelegate connection:willCacheResponse:]): Removed some
        nonsense code.

        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h: Copied from Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.h.
        This delegate is responsible for forwarding calls to main thread. Unfortunately,
        this adds some code duplication, which I tried to rectify somewhat in previous patches
        by moving more logic to ResourceHandle.

        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: Copied from Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm.
        (-[WebCoreResourceHandleAsOperationQueueDelegate detachHandle]): Unblock waiting
        threads if we don't expect a response any more.
        (-[WebCoreResourceHandleAsOperationQueueDelegate dealloc]): Release the semaphore.
        (-[WebCoreResourceHandleAsOperationQueueDelegate continueWillSendRequest:]): Unblock
        a waiting thread with a response.
        (-[WebCoreResourceHandleAsOperationQueueDelegate continueShouldUseCredentialStorage:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate continueCanAuthenticateAgainstProtectionSpace:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate continueWillCacheResponse:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
        Run code that uses WebCore objects on main thread.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connectionShouldUseCredentialStorage:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveAuthenticationChallenge:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didCancelAuthenticationChallenge:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveDataArray:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveData:lengthReceived:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willStopBufferingData:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didFailWithError:]): Ditto.
        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willCacheResponse:]): Ditto.

245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
2013-03-26  Tony Chang  <tony@chromium.org>

        Autogenerate the scrollAnimatorEnabled setting in Settings.in
        https://bugs.webkit.org/show_bug.cgi?id=113253

        Reviewed by James Robinson.

        Convert scrollAnimatorEnabled into an autogenerated setting. This involves renaming
        the setter from setEnableScrollAnimator(bool) to setScrollAnimatorEnabled(bool) and
        updating the callers. I didn't change any WebKit API methods.

        Also remove the code in InternalSettings since it's never used and will now be
        autogenerated with proper resetting code.

        No new tests, this is a refactor and should compile.

        * page/Settings.cpp:
        (WebCore::Settings::Settings): Remove code that is now autogenerated.
        * page/Settings.h:
        (Settings): Remove code that is now autogenerated.
        * page/Settings.in: Add entry for scrollAnimatorEnabled.
        * testing/InternalSettings.cpp: Remove unused code.
        * testing/InternalSettings.h: Remove unused code.
        * testing/InternalSettings.idl: Remove unused code.

270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
2013-03-26  Joe Mason  <jmason@blackberry.com>

        [BlackBerry] In RSSFilterStream, don't swallow headers when there's no body
        https://bugs.webkit.org/show_bug.cgi?id=113334

        Reviewed by Rob Buis.

        RIM PR 316345

        When receiving an HTTP response that has a Content-Type header such as text/xml, but no
        body, RSSFilterStream::notifyHeadersReceived reads the Content-Type as "potential RSS", and
        calls saveHeaders. It expects to sniff the body in notifyDataReceived to see if it's RSS,
        and then call sendSavedHeaders to pass on the headers. But since there is no body,
        notifyDataReceived is never called. So call sendSavedHeaders in notifyClose too (it will not
        send them again if they were already sent.)

        * platform/network/blackberry/rss/RSSFilterStream.cpp:
        (WebCore::RSSFilterStream::notifyClose):

289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
2013-03-26  Dmitry Zvorygin  <zvorygin@chromium.org>

        Web Inspector: Faster drawer animation.
        https://bugs.webkit.org/show_bug.cgi?id=113330

        250ms -> 100ms

        Reviewed by Pavel Feldman.

        * inspector/front-end/inspector.css:
        (.animate #main):
        (.animate #floating-status-bar-container):
        (.animate #drawer):
        (.animate #bottom-status-bar-container > *):

304
305
306
307
308
309
310
311
2013-03-26  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed Build fix.

        * platform/graphics/win/FontCustomPlatformDataCairo.h:
        (FontCustomPlatformData): Correct signature in header to match
        required implementation.

312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
2013-03-26  Arvid Nilsson  <anilsson@rim.com>

        [BlackBerry] Scrolling up and down can cause the screen to flash black
        https://bugs.webkit.org/show_bug.cgi?id=113269

        Reviewed by Rob Buis.

        PR 296106

        The LayerRenderer should never clear before drawing the layers, from
        now on that's the responsibility of the caller.

        Only manually testable.

        * platform/graphics/blackberry/LayerRenderer.cpp:
        (WebCore::LayerRenderer::setViewport):
        * platform/graphics/blackberry/LayerRendererClient.h:
        (LayerRendererClient):

331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
2013-03-26  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        [Qt] editing/pasteboard/can-read-in-dragstart-event.html and /can-read-in-copy-and-cut-events.html are crashing
        https://bugs.webkit.org/show_bug.cgi?id=113126

        Reviewed by Jocelyn Turcotte.

        Make it possible to read from a writable Clipboard.

        Test: editing/pasteboard/can-read-in-copy-and-cut-events.html

        * platform/qt/ClipboardQt.cpp:
        (WebCore::ClipboardQt::getData):
        (WebCore::ClipboardQt::types):
        (WebCore::ClipboardQt::files):
        (WebCore::ClipboardQt::readClipboardData):
        (WebCore::ClipboardQt::hasData):
        (WebCore::ClipboardQt::items):
        * platform/qt/ClipboardQt.h:
        (ClipboardQt):

352
353
354
355
356
357
358
359
2013-03-26  Brent Fulgham  <bfulgham@webkit.org>

        [WinCairo] Unreviewed build correction.

        * platform/graphics/win/FontCustomPlatformDataCairo.cpp:
        (WebCore::FontCustomPlatformData::fontPlatformData): Update
        method signature to match CG variant.

360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
2013-03-26  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        Code duplication between HTTPParsers and HTTPValidation
        https://bugs.webkit.org/show_bug.cgi?id=113283

        Reviewed by Alexey Proskuryakov.

        Merged isValidHTTPToken() from HTTPValidation.h and isRFC2616Token() from
        HTTPParsers.h. They were doing exactly the same thing and their
        implementation was almost the same.

        Removed HTTPValidation.* and moved remaining code to HTTPParsers.* as this
        seems like the proper place and it seems odd to keep HTTPValidation for
        just one function.

        No new tests, no behavior change for layout tests.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * Target.pri:
        * WebCore.gypi:
        * WebCore.vcproj/WebCore.vcproj:
        * WebCore.vcxproj/WebCore.vcxproj:
        * WebCore.vcxproj/WebCore.vcxproj.filters:
        * WebCore.xcodeproj/project.pbxproj:
        * platform/network/HTTPParsers.cpp:
        (WebCore::isValidHTTPHeaderValue):
        (WebCore):
        (WebCore::isValidHTTPToken): Implementation is slightly simplified based on
        isValidHTTPToken() from HTTPValidation.cpp. (c >= 0x80 || c == 0x7F) is
        replaced by (c >= 0x7F). (c <= 0x1F ||  c == ' ' || c == '\t') is replaced
        by (c <= 0x20). Those expressions are shorter but equivalent.
        (WebCore::contentDispositionType):
        * platform/network/HTTPParsers.h:
        * platform/network/HTTPValidation.cpp: Removed.
        * platform/network/HTTPValidation.h: Removed.
        * xml/XMLHttpRequest.cpp: Stop including HTTPValidation.h.

398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
2013-03-26  Sergio Villar Senin  <svillar@igalia.com>

        Implement overtype mode for editable content
        https://bugs.webkit.org/show_bug.cgi?id=112126

        Reviewed by Ryosuke Niwa.

        Tests: editing/execCommand/overtype-support.html
               editing/execCommand/overtype.html

        Add a new Overwrite command to the editor. This command will
        perform overtype operations when enabled instead of "normal" text
        insertions. As IE does, we maintain a single toggle state in the
        editor (enabled/disabled) for all the editable content in the
        page.

        This new command will be only available for richly editable
        content via keybindings or the context menu. For testing purposes
        it is also accessible via internals.

        * editing/CompositeEditCommand.cpp:
        (WebCore::CompositeEditCommand::replaceTextInNode): Use RefPtr for
        local variables.
        * editing/Editor.cpp:
        (WebCore::Editor::Editor):
        * editing/Editor.h:
        (WebCore::Editor::isOverwriteModeEnabled):
        (WebCore::Editor::toggleOverwriteModeEnabled):
        (Editor): Added two new functions and a new attribute.
        * editing/EditorCommand.cpp:
        (WebCore::executeToggleOverwrite): Enables/disables overwrite mode.
        (WebCore):
        (WebCore::createCommandMap): New OverWrite command.
        * editing/InsertTextCommand.cpp:
        (WebCore::InsertTextCommand::setEndingSelectionWithoutValidation):
        Refactored from performTrivialReplace(), shared by
        performOverwrite().
        (WebCore):
        (WebCore::InsertTextCommand::performTrivialReplace):
        (WebCore::InsertTextCommand::performOverwrite):
        (WebCore::InsertTextCommand::doApply): Perform overwrite if enabled.
        * editing/InsertTextCommand.h:
        (InsertTextCommand):
        * testing/Internals.cpp:
        (WebCore::Internals::resetToConsistentState): Reset OverWrite mode
        to false.
        (WebCore::Internals::isOverwriteModeEnabled):
        (WebCore):
        (WebCore::Internals::toggleOverwriteModeEnabled): Provide access
        to overwrite functionality in Editor for testing purposes.
        * testing/Internals.h:
        (Internals):
        * testing/Internals.idl:

452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
2013-03-26  Arvid Nilsson  <anilsson@rim.com>

        [BlackBerry] WebOverlay::pixelViewportRect() should return pixel viewport coordinates
        https://bugs.webkit.org/show_bug.cgi?id=113263

        Reviewed by Rob Buis.

        PR 312404

        Fix WebOverlay::pixelViewportRect() to return the pixel viewport rect
        instead of the window rect. These are different if the web page is
        rendered starting at a window coordinate other than 0,0. The clip rect
        encodes the position we're rendered at, and can be used to translate
        the rect expressed in window coordinates to the pixel viewport
        coordinate system.

        Also perform some cleanup of related code.

        Only manually testable.

        * platform/graphics/blackberry/LayerCompositingThread.cpp:
        (WebCore::LayerCompositingThread::getTransformedHolePunchRect):
        (WebCore::LayerCompositingThread::drawTextures):
        * platform/graphics/blackberry/LayerRenderer.cpp:
        (WebCore::toPixelCoordinates):
        (WebCore):
        (WebCore::LayerRenderer::toWindowCoordinates):
        (WebCore::LayerRenderer::toPixelViewportCoordinates):
        (WebCore::LayerRenderer::toDocumentViewportCoordinates):
        (WebCore::LayerRenderer::updateLayersRecursive):
        * platform/graphics/blackberry/LayerRenderer.h:
        (LayerRenderer):

485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
2013-03-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r146901.
        http://trac.webkit.org/changeset/146901
        https://bugs.webkit.org/show_bug.cgi?id=113321

        Was landed to soon (Requested by pfeldman on #webkit).

        * inspector/front-end/ConsoleView.js:
        (WebInspector.ConsoleView.prototype.):
        (WebInspector.ConsoleView.prototype.filter):
        (WebInspector.ConsoleView.prototype._scheduleScrollIntoView.scrollIntoView):
        (WebInspector.ConsoleView.prototype._scheduleScrollIntoView):
        (WebInspector.ConsoleView.prototype._consoleMessageAdded):
        (WebInspector.ConsoleView.prototype._appendConsoleMessage):
        (WebInspector.ConsoleView.prototype._consoleCleared):
        (WebInspector.ConsoleView.prototype._handleContextMenuEvent.monitoringXHRItemAction):
        (WebInspector.ConsoleView.prototype._handleContextMenuEvent.get preserveLogItemAction):
        (WebInspector.ConsoleView.prototype._shouldBeVisible):
        (WebInspector.ConsoleView.prototype._updateMessageList):
        (WebInspector.ConsoleView.prototype._promptKeyDown):
        (WebInspector.ConsoleView.prototype._printResult):
        (WebInspector.ConsoleCommand.prototype.highlightSearchResults):
        * inspector/front-end/inspector.css:
        (.console-warning-level, .console-error-level, .console-log-level, .console-debug-level):
        (.filter-all .console-debug-level, .filter-debug .console-debug-level):
        (.filter-all .console-debug-level.repeated-message, .filter-debug .console-debug-level.repeated-message):

513
514
515
516
517
518
519
520
521
522
523
524
2013-03-26  Rafael Weinstein  <rafaelw@chromium.org>

        HTMLStackItem should include <template> as a special tag
        https://bugs.webkit.org/show_bug.cgi?id=113016

        Reviewed by Eric Seidel.

        New test added to html5lib suite.

        * html/parser/HTMLStackItem.h:
        (WebCore::HTMLStackItem::isSpecialNode):

525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
2013-03-26  Vsevolod Vlasov  <vsevik@chromium.org>

        Web Inspector: Distinguish breakpoints and breakpoint locations in BreakpointManager API
        https://bugs.webkit.org/show_bug.cgi?id=113311

        Reviewed by Pavel Feldman.

        Made independent handling of breakpoints and breakpoint location in breakpoint manager consistent.
        JavaScriptSourceFrame now removes breakpoints originally set in it based on primary UI location.

        * inspector/front-end/BreakpointManager.js:
        (WebInspector.BreakpointManager.prototype.breakpointsForUISourceCode):
        (WebInspector.BreakpointManager.prototype.allBreakpoints):
        (WebInspector.BreakpointManager.prototype.breakpointLocationsForUISourceCode):
        (WebInspector.BreakpointManager.prototype.allBreakpointLocations):
        (WebInspector.BreakpointManager.prototype._projectWillReset.get for):
        (WebInspector.BreakpointManager.prototype._projectWillReset):
        * inspector/front-end/JavaScriptSourceFrame.js:
        (WebInspector.JavaScriptSourceFrame.prototype.onUISourceCodeContentChanged):
        (WebInspector.JavaScriptSourceFrame.prototype._restoreBreakpointsAfterEditing):
        (WebInspector.JavaScriptSourceFrame.prototype._removeAllBreakpoints):

547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
2013-03-26  Dmitry Zvorygin  <zvorygin@chromium.org>

        Web Inspector: Remove remainings of CSS-based console message filtering.
        https://bugs.webkit.org/show_bug.cgi?id=112710

        Reviewed by Pavel Feldman.

        * inspector/front-end/ConsoleView.js:
        (WebInspector.ConsoleView.get this):
        (WebInspector.ConsoleView.prototype.):
        (WebInspector.ConsoleView.prototype.filter):
        (WebInspector.ConsoleView.prototype._consoleMessageAdded):
        (WebInspector.ConsoleView.prototype._appendConsoleMessage):
        (WebInspector.ConsoleView.prototype._consoleCleared):
        (WebInspector.ConsoleView.prototype._shouldBeVisible):
        (WebInspector.ConsoleView.prototype._updateMessageList):
        (WebInspector.ConsoleView.prototype._promptKeyDown):
        (WebInspector.ConsoleView.prototype._printResult):
        (WebInspector.ConsoleCommand.prototype.highlightSearchResults):
        * inspector/front-end/inspector.css:
        (.console-debug-level.repeated-message):

569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
2013-03-26  Peter Rybin  <prybin@chromium.org>

        Web Inspector: refactor code duplication: WebInspector.ObjectPropertyTreeElement.wrapPropertyAsElements
        https://bugs.webkit.org/show_bug.cgi?id=113211

        Reviewed by Yury Semikhatsky.

        A new method WebInspector.ObjectPropertyTreeElement.wrapPropertyAsElements is added and used
        from 2 sites.

        * inspector/front-end/ObjectPropertiesSection.js:
        (WebInspector.ObjectPropertiesSection.prototype.update.callback):
        (WebInspector.ObjectPropertiesSection.prototype.update):
        (WebInspector.ObjectPropertiesSection.prototype.updateProperties):
        (.callback):
        (WebInspector.ObjectPropertyTreeElement.populate):
        (WebInspector.ObjectPropertyTreeElement.wrapPropertyAsElements):
        * inspector/front-end/WatchExpressionsSidebarPane.js:
        (WebInspector.WatchExpressionsSection.prototype.update.appendResult):
        (WebInspector.WatchExpressionsSection.prototype.update):

590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
2013-03-26  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        HTTPHeaderMap::copyData() could call uncheckedAppend()
        https://bugs.webkit.org/show_bug.cgi?id=113279

        Reviewed by Alexey Proskuryakov.

        HTTPHeaderMap::copyData() calls reserveInitialCapacity() on the Vector
        but then appends items using append() function. Since we already know
        the capacity is sufficient, it is more efficient to call uncheckedAppend()
        instead to bypass capacity checks.

        No new tests, no behavior change for layout tests.

        * platform/network/HTTPHeaderMap.cpp:
        (WebCore::HTTPHeaderMap::copyData):

607
608
609
610
611
612
613
614
615
616
617
618
619
2013-03-26  Vsevolod Vlasov  <vsevik@chromium.org>

        Web Inspector: UISourceCodes are leaking on reload sometimes.
        https://bugs.webkit.org/show_bug.cgi?id=113310

        Reviewed by Pavel Feldman.

        * inspector/front-end/BreakpointManager.js:
        (WebInspector.BreakpointManager.prototype._projectWillReset.get for):
        (WebInspector.BreakpointManager.prototype._projectWillReset):
        * inspector/front-end/ConsoleModel.js:
        (WebInspector.ConsoleModel.prototype.clearMessages):

620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
2013-03-26  Alexander Pavlov  <apavlov@chromium.org>

        Web Inspector: [Elements] Unable to "Edit as HTML" XHTML/SVG documents.
        https://bugs.webkit.org/show_bug.cgi?id=113290

        Reviewed by Pavel Feldman.

        DOMPatchSupport has been slightly augmented to handle XML (XHTML and SVG) documents.

        Test: inspector/elements/set-outer-html-for-xhtml.xhtml

        * inspector/DOMPatchSupport.cpp:
        (WebCore::DOMPatchSupport::patchDocument):
        (WebCore::DOMPatchSupport::patchNode):
        * inspector/InspectorDOMAgent.cpp:
        (WebCore::InspectorDOMAgent::setOuterHTML): Let HTML, XHTML, and SVG documents through.

637
638
639
640
641
642
643
644
645
646
647
648
649
2013-03-26  Hajime Morrita  <morrita@google.com>

        https://bugs.webkit.org/show_bug.cgi?id=113164
        Custom Elements: readyCallback should be called for outerHTML and insertAdjecentHTML

        These APIs also create new elements thus should have V8DeliverCustomElementCallbacks attribute.

        Reviewed by Dimitri Glazkov.

        Test: Updated lifecycle-ready-creation-api.html.

        * html/HTMLElement.idl:

650
651
652
653
654
655
656
2013-03-26  Ilya Tikhonovsky  <loislo@chromium.org>

        Unreviewed. WebInspector: remove unnecessary method.

        * inspector/front-end/OverviewGrid.js:
        (WebInspector.OverviewGrid.Window):

657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
2013-03-22  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: Flame Chart. Scroll dividers together with underlying chart.
        http://bugs.webkit.org/show_bug.cgi?id=113080

        Reviewed by Pavel Feldman.

        * inspector/front-end/FlameChart.js:
        (WebInspector.FlameChart.Calculator.prototype.grandMinimumBoundary):
        (WebInspector.FlameChart.prototype._canvasDragging):
        * inspector/front-end/TimelineGrid.js:
        (WebInspector.TimelineGrid.prototype.updateDividers):

2013-03-26  Ilya Tikhonovsky  <loislo@chromium.org>

        Web Inspector: Flame Chart. Scroll dividers together with underlying chart.
        http://bugs.webkit.org/show_bug.cgi?id=113080

        Reviewed by Pavel Feldman.

        The only thing we need to do for this feature is to automatically adjust
        the initial offset for the dividers. I measured the speed of scrolling and found
        no difference. The speed is about 16ms so we have 60fps on dragging.

        * inspector/front-end/FlameChart.js:
        (WebInspector.FlameChart.Calculator.prototype.grandMinimumBoundary):
        (WebInspector.FlameChart.OverviewCalculator.prototype.grandMinimumBoundary):
        (WebInspector.FlameChart.prototype._canvasDragging):
        * inspector/front-end/NetworkPanel.js:
        (WebInspector.NetworkBaseCalculator.prototype.grandMinimumBoundary):
        * inspector/front-end/TimelineGrid.js:
        (WebInspector.TimelineGrid.prototype.updateDividers):
        (WebInspector.TimelineGrid.Calculator.prototype.grandMinimumBoundary):
        * inspector/front-end/TimelineOverviewPane.js:
        (WebInspector.TimelineOverviewCalculator.prototype.grandMinimumBoundary):
        * inspector/front-end/TimelinePanel.js:
        (WebInspector.TimelineCalculator.prototype.grandMinimumBoundary):

695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
2013-03-26  Mike West  <mkwst@chromium.org>

        CSP 1.1: Experiment with 'base-uri' directive.
        https://bugs.webkit.org/show_bug.cgi?id=113307

        Reviewed by Jochen Eisinger.

        The 'base-uri' directive was introduced[1] as an experimental directive
        in CSP 1.1 after a bit of discussion[2][3]. The exact semantics will
        likely change, but it would be good for us to get some implementation
        experience with the API as currently specified, and to allow folks to
        play with the implementation to determine whether it meets the
        requirements the way we think it might.

        This patch is a first pass at that implementation: it will have no
        effect on ports that haven't enabled the CSP_NEXT flag.

        [1]: https://dvcs.w3.org/hg/content-security-policy/rev/4b89c246ea16
        [2]: http://lists.w3.org/Archives/Public/public-webappsec/2012Oct/0022.html
        [3]: http://lists.w3.org/Archives/Public/public-webappsec/2013Feb/0074.html

        Tests: http/tests/security/contentSecurityPolicy/1.1/base-uri-allow.html
               http/tests/security/contentSecurityPolicy/1.1/base-uri-deny.html

        * dom/Document.cpp:
        (WebCore::Document::processBaseElement):
            Check that the new base URI is allowed by CSP before using it as
            the document's base URI.
        * page/ContentSecurityPolicy.cpp:
            Add a constant for the new directive name (and, as a drive-by, split
            the list into CSP 1.0 and CSP 1.1 for clarity).
        (CSPDirectiveList):
            Add a property to hold the base URI policy directive value.
        (WebCore::CSPDirectiveList::checkSourceAndReportViolation):
            Customize the error message iff we're dealing with 'base-uri'.
        (WebCore::CSPDirectiveList::allowBaseURI):
            Check the given URI against the 'base-uri' directive's value,
            exactly as we do for every other source-list type of directive.
        (WebCore::CSPDirectiveList::addDirective):
            Accept 'base-uri' as a valid directive iff CSP_NEXT is set, and
            the embedder has opted-in via the runtime flag.
        (WebCore::ContentSecurityPolicy::allowBaseURI):
            Expose an API method on ContentSecurityPolicy to check URIs against
            the 'base-uri' directive's value.

740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
2013-03-26  Arvid Nilsson  <anilsson@rim.com>

        [BlackBerry] Main frame fixed divs not positioned correctly
        https://bugs.webkit.org/show_bug.cgi?id=112889

        Reviewed by Carlos Garcia Campos.

        PR 283363

        This was a regression from bug #112806. It caused main frame fixed
        handling to enter the iframe/scrollable div code path in LayerRenderer.

        Fixed by not setting the container for fixed flag on the main frame,
        the LayerRenderer expects this flag to be set only on non-mainframe
        containers.

        Only manually testable.

        * page/scrolling/blackberry/ScrollingCoordinatorBlackBerry.cpp:
        (WebCore::scrollLayerForFrame):
        (WebCore):
        (WebCore::ScrollingCoordinatorBlackBerry::setLayerIsContainerForFixedPositionLayers):
        (WebCore::ScrollingCoordinatorBlackBerry::setLayerIsFixedToContainerLayer):

764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
2013-03-26  Christophe Dumez  <ch.dumez@sisa.samsung.com>

        FormData::deepCopy() could use Vector::uncheckedAppend()
        https://bugs.webkit.org/show_bug.cgi?id=113309

        Reviewed by Kenneth Rohde Christiansen.

        FormData::deepCopy() calls reserveInitialCapacity() on the Vector but then uses the
        regular append() method. This patch switches to using uncheckedAppend() method
        instead to bypass capacity checks as we already know it is sufficient.

        No new tests, no behavior change.

        * platform/network/FormData.cpp:
        (WebCore::FormData::deepCopy):

780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
2013-03-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r146879.
        http://trac.webkit.org/changeset/146879
        https://bugs.webkit.org/show_bug.cgi?id=113312

        Multiple layout test crashes in
        WebCore::RenderListItem::updateListMarkerNumbers (Requested by
        yurys on #webkit).

        * dom/Node.cpp:
        * dom/Node.h:
        (Node):
        * dom/NodeTraversal.cpp:
        * dom/NodeTraversal.h:
        (ElementTraversal):
        (NodeTraversal):
        * html/HTMLLIElement.cpp:
        (WebCore::HTMLLIElement::attach):
        * html/HTMLOListElement.cpp:
        (WebCore::HTMLOListElement::updateItemValues):
        (WebCore::HTMLOListElement::recalculateItemCount):
        * rendering/RenderCounter.cpp:
        (WebCore::previousInPreOrder):
        (WebCore::previousSiblingOrParent):
        (WebCore::parentElement):
        (WebCore::nextInPreOrder):
        * rendering/RenderListItem.cpp:
        (WebCore::enclosingList):
        (WebCore::RenderListItem::nextListItem):
        (WebCore::previousListItem):
        (WebCore::RenderListItem::calcValue):
        (WebCore::RenderListItem::explicitValueChanged):
        (WebCore::previousOrNextItem):
        (WebCore::RenderListItem::updateListMarkerNumbers):
        * rendering/RenderListItem.h:
        (RenderListItem):

818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
2013-03-26  Hajime Morrita  <morrita@google.com>

        remoeveAllEventListeners() should be called to shadow trees
        https://bugs.webkit.org/show_bug.cgi?id=113037

        Reviewed by Dimitri Glazkov.

        Document::removeAllEventListeners() doesn't traverse shadow tree, but we should.
        This change override Element::removeAllEventListeners() so that it cleans its shadow trees up.

        Test: fast/dom/shadow/shadow-tree-listener-clearance.html

        * dom/Element.cpp:
        (WebCore::Element::removeAllEventListeners):
        (WebCore):
        * dom/Element.h:
        (Element):
        * dom/ElementShadow.cpp:
        (WebCore::ElementShadow::removeAllEventListeners): Added.
        (WebCore):
        * dom/ElementShadow.h:
        (ElementShadow):

841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
2013-03-26  Andrei Bucur  <abucur@adobe.com>

        Use DOM ordering for list counts
        https://bugs.webkit.org/show_bug.cgi?id=110352

        Reviewed by Elliott Sprehn.

        Currently the list items ordering is made by traversing the render tree. This gives bad results for:
        - list items flown inside regions because they are not rendered as descendants of their DOM list ancestors.
        - list items matched to insertion points inside a shadow tree. The insertion point may be a child of a
        list so the numbering gets broken.

        To implement correct DOM ordering I've taken into account the fact that pseudo-elements can have display: list-item
        so they should be included when traversing the DOM tree. I've added helper methods on the NodeTraversal
        namespace that should allow easily traversing the tree including the pseudo-elements (e.g. firstChildWithPseudo
        for an element with pseudo-before will return the before PseudoElement). Using these helper methods I've implemented
        pre-order traversal methods aware of the pseudo-elements.
        An effect of this change is how the list items inside shadow tree update their counting. With the patch, if there's
        no <ol> or <ul> element on the ancestor chain of a <li> element to the shadow root, the list node will be considered the
        first parent of the <li> or the shadow root if there is no ancestor.
        The RenderListItem class now makes use of this new method of traversal, replacing the one based on the render tree.
        To simplify the CSS counters implementation, I've changed the traversal functions inside RenderCounter to also make use
        of this method. The CSS counters and the list items now have the same traversal algorithm.

        In later patches I'll add tests that should cover the regions and shadow DOM use cases.
        Tests bug for shadow DOM: https://bugs.webkit.org/show_bug.cgi?id=113193
        Tests bug for regions: https://bugs.webkit.org/show_bug.cgi?id=103975

        Tests: no new tests is this patch; added the correct expectations for fast/lists/positioned-count-crash.html
        and fast/dom/shadow/shadow-and-list-elements.html

        * dom/Node.cpp:
        (WebCore::Node::pseudoAwarePreviousSibling):
        (WebCore):
        (WebCore::Node::pseudoAwareNextSibling):
        (WebCore::Node::pseudoAwareFirstChild):
        (WebCore::Node::pseudoAwareLastChild):
        * dom/Node.h:
        (Node):
        * dom/NodeTraversal.cpp:
        (WebCore):
        (WebCore::NodeTraversal::previousIncludingPseudo):
        (NodeTraversal):
        (WebCore::NodeTraversal::nextIncludingPseudo):
        (WebCore::NodeTraversal::nextIncludingPseudoSkippingChildren):
        * dom/NodeTraversal.h:
        (ElementTraversal):
        (NodeTraversal):
        (WebCore::ElementTraversal::previousIncludingPseudo):
        (WebCore::ElementTraversal::nextIncludingPseudo):
        (WebCore::ElementTraversal::nextIncludingPseudoSkippingChildren):
        (WebCore::ElementTraversal::pseudoAwarePreviousSibling):
        * html/HTMLLIElement.cpp:
        (WebCore::HTMLLIElement::attach):
        * html/HTMLOListElement.cpp:
        (WebCore::HTMLOListElement::updateItemValues):
        (WebCore::HTMLOListElement::recalculateItemCount):
        * rendering/RenderCounter.cpp:
        (WebCore::previousInPreOrder):
        (WebCore::previousSiblingOrParent):
        (WebCore::parentElement):
        (WebCore::nextInPreOrder):
        * rendering/RenderListItem.cpp:
        (WebCore):
        (WebCore::enclosingList):
        (WebCore::RenderListItem::nextListItem):
        (WebCore::previousListItem):
        (WebCore::RenderListItem::calcValue):
        (WebCore::RenderListItem::explicitValueChanged):
        (WebCore::previousOrNextItem):
        (WebCore::RenderListItem::updateListMarkerNumbers):
        * rendering/RenderListItem.h:
        (RenderListItem):

915
916
917
918
919
920
921
922
923
924
925
926
927
2013-03-26  Allan Sandfeld Jensen  <allan.jensen@digia.com>

        [Qt] Poor rounding in GraphicsContext::drawLineForText
        https://bugs.webkit.org/show_bug.cgi?id=113301

        Reviewed by Jocelyn Turcotte.

        Round the position of the line decoration, so lines on subpixel
        coordinates are not always rounded up.

        * platform/graphics/qt/GraphicsContextQt.cpp:
        (WebCore::GraphicsContext::drawLineForText):

928
929
930
931
932
933
934
935
936
937
938
939
2013-03-26  Vsevolod Vlasov  <vsevik@chromium.org>

        Web Inspector: Decorations in several consecutive lines are not moved correctly in DTE.
        https://bugs.webkit.org/show_bug.cgi?id=113296

        Reviewed by Pavel Feldman.

        Separated removing and adding decorations so that moved decorations are not removed when next line is processed.

        * inspector/front-end/DefaultTextEditor.js:
        (WebInspector.TextEditorGutterPanel.prototype.textChanged):

940
941
942
943
944
945
946
947
948
2013-03-26  Yury Semikhatsky  <yurys@chromium.org>

        Remove references to non-chromium entries from WebCore.gypi (part 2)
        https://bugs.webkit.org/show_bug.cgi?id=103124

        Reviewed by Pavel Feldman.

        * WebCore.gypi: removed unused references to gtk, cf, win and mac

949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
2013-03-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r146767.
        http://trac.webkit.org/changeset/146767
        https://bugs.webkit.org/show_bug.cgi?id=113295

        Rolling out until nicer fonts / sizes are chosen (Requested by
        pfeldman on #webkit).

        * inspector/front-end/dataGrid.css:
        (.data-grid table):
        (.data-grid td):
        * inspector/front-end/inspector.css:
        (.toolbar-label):
        (body.show-toolbar-icons .toolbar-label):
        (.console-message .bubble):
        (li .status .bubble):
        (.source-frame-breakpoint-message):
        (.soft-context-menu):
        (.drawer-header-close-button):
        * inspector/front-end/inspectorCommon.css:
        (body):
        * inspector/front-end/networkLogView.css:
        (.network-log-grid.data-grid td):
        (.network-log-grid.data-grid.small td):
        * inspector/front-end/tabbedPane.css:
        (.tabbed-pane-header-tab):
        (.tabbed-pane-header-tab-close-button):
        * inspector/front-end/timelinePanel.css:
        (.timeline-tree-item .count):
        (.timeline-records-stats, .storage-application-cache-status, .storage-application-cache-connectivity):
        (.memory-counter-sidebar-info):
        (.memory-counter-value):

983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2013-03-26  Arpita Bahuguna  <a.bah@samsung.com>

        Unable to insert a paragraph in between some text whose previous sibling is a non-editable block.
        https://bugs.webkit.org/show_bug.cgi?id=113007

        Reviewed by Ryosuke Niwa.

        Unable to insert a line break in between a text that follows a
        non-editable block but is itself contained within an editable
        block.

        While comparing the positions from the start block till the
        insertion position, we should ignore the nodes that do not
        generate a visiblePosition for the position before the node.
        This ultimately results in an assert within comparePositions().

        For this case, the firstChild of the start block is a text
        node with no renderer which would thus not generate a candidate