Safari 6 notifications' onclick handlers can't call window.open()
https://bugs.webkit.org/show_bug.cgi?id=96959
<rdar://problem/12132427>

Reviewed by Darin Adler.

Source/WebKit2:

The click is not being treated as a user gesture when the message is sent to the web process.

* WebProcess/Notifications/WebNotificationManager.cpp:
(WebKit::WebNotificationManager::didClickNotification): Gets called when the user clicks on the
platform notification. Set UserGestureIndicator to show the click event is due to user gesture.

LayoutTests:

The test shows and clicks a platform notification. The onclick handler calls window.open(),
which in turn calls a function on the main page to confirm that a window was opened.

* http/tests/notifications/legacy/window-show-on-click-expected.txt: Added.
* http/tests/notifications/legacy/window-show-on-click.html: Added.
* http/tests/notifications/resources/window-show-on-click.html: Added.
* http/tests/notifications/window-show-on-click-expected.txt: Added.
* http/tests/notifications/window-show-on-click.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129140 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] ControlsPanel string is not localized in LocalizedStringsGtk
https://bugs.webkit.org/show_bug.cgi?id=96502

Patch by Joanmarie Diggs <jdiggs@igalia.com> on 2012-09-20
Reviewed by Chris Fleizach.

Source/WebCore:

Adds the ControlsPanel string to the strings localized in LocalizedStringsGtk.

Test: platform/gtk/accessibility/media-controls-panel-title.html

* platform/gtk/LocalizedStringsGtk.cpp:
(WebCore::localizedMediaControlElementString):

LayoutTests:

Added a new test to verify that the accessible object associated with the
MediaControlsPanel has the expected accessible name.

* platform/gtk/accessibility/media-controls-panel-title-expected.txt: Added.
* platform/gtk/accessibility/media-controls-panel-title.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
IndexedDB: Rewrite confusing call sequence layout tests
https://bugs.webkit.org/show_bug.cgi?id=97051

Reviewed by Tony Chang.

Rewrite some convoluted and hard to understand/maintain tests in a more idiomatic fashion.
This patch maintains the bulk of the non-standard output to verify that the tests have not
changed in behavior; follow-ups will make the output more standard and split the tests
into separate files.

* storage/indexeddb/factory-deletedatabase-interactions-expected.txt:
* storage/indexeddb/open-close-version-expected.txt:
* storage/indexeddb/resources/factory-deletedatabase-interactions.js:
* storage/indexeddb/resources/open-close-version.js:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129142 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Support paths in Content Security Policy directives.
https://bugs.webkit.org/show_bug.cgi?id=89750

Patch by Mike West <mkwst@chromium.org> on 2012-09-20
Reviewed by Adam Barth.

Source/WebCore:

In CSP 1.0, paths are simply ignored: 'script-src
http://example.com/path/to/a/file' would allow script to be loaded from
http://example.com/path/to/a/file/javascript.js, but also from
http://example.com/javascript.js.

This patch is an experimental implementation of more granular path
support in CSP source lists as proposed in the current editor's draft of
CSP 1.1. Paths are treated as specifying directories in which resources
can be found, and are implicitly terminated with a '/': in other words,
'script-src http://a.com/path' is the same as
'script-src http://a.com/path/'. Moreover, paths cannot contain either
'?' or '#' characters.

This is implemented outside the CSP_NEXT flag. All ports will be
effected.

Spec: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#matching

Tests: http/tests/security/contentSecurityPolicy/source-list-parsing-paths-01.html
       http/tests/security/contentSecurityPolicy/source-list-parsing-paths-02.html

* page/ContentSecurityPolicy.cpp:
(WebCore::CSPSource::CSPSource):
    Store a path along with each CSP source.
(WebCore::CSPSource::matches):
    Check the path when comparing a URL to the source.
(WebCore::CSPSource::pathMatches):
    Compare the URL-decoded version of the resource to validate against
    the source's stored path. If the resource's path begins with the
    stored path, then it matches! If not, it doesn't.
(CSPSource):
    Store a path along with each CSP source.
(WebCore::CSPSourceList::parse):
    Pass a 'path' in when creating CSPSource objects.
(WebCore::CSPSourceList::parsePath):
    Actually parse the path, flagging errors if '?' or '#' are present,
    URL-decoding the result, and ensuring that a terminal '/' is
    added if necessary.
(WebCore::CSPSourceList::addSourceSelf):
    Ensure that 'self' sources have an empty path.
* page/ContentSecurityPolicy.h:
    Dropping the "ignored path component" console warning.

LayoutTests:

* http/tests/security/contentSecurityPolicy/source-list-parsing-05-expected.txt:
* http/tests/security/contentSecurityPolicy/source-list-parsing-05.html:
* http/tests/security/contentSecurityPolicy/source-list-parsing-06-expected.txt:
* http/tests/security/contentSecurityPolicy/source-list-parsing-06.html:
    The behavior of these tests changes based on the new functionality.
* http/tests/security/contentSecurityPolicy/source-list-parsing-paths-01-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/source-list-parsing-paths-01.html: Added.
* http/tests/security/contentSecurityPolicy/source-list-parsing-paths-02-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/source-list-parsing-paths-02.html: Added.
    New tests for various path cases.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129143 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Prevent reading stale data from InlineTextBoxes
https://bugs.webkit.org/show_bug.cgi?id=94750

Reviewed by Eric Seidel.

Text from dirty InlineTextBoxes should never be read or used. This change enforces this
design goal by forcefully zero-ing out the start and length of InlineTextBoxes when 
they're being marked dirty. It also adds asserts to accessors for those members.

This change involves making markDirty virtual. Running the line-layout performance test
as well as profiling resizing the html5 spec showed negligable impact with this change.

No new tests as this doesn't change any proper behavior.

* rendering/InlineBox.h:
(WebCore::InlineBox::markDirty): Making virtual to allow InlineTextBox to overload and
zero out its start and length.
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::markDirty): Zeroing out start and length when we mark the box dirty.
* rendering/InlineTextBox.h:
(WebCore::InlineTextBox::start): Adding an assert when we hit this case.
(WebCore::InlineTextBox::end): Ditto.
(WebCore::InlineTextBox::len): Ditto.
(WebCore::InlineTextBox::offsetRun): Ditto.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129144 268f45cc-cd09-0410-ab3c-d52691b4dbfc
MediaStream API: Extend UserMediaRequest with a ownerDocument method
https://bugs.webkit.org/show_bug.cgi?id=97095

Reviewed by Adam Barth.

Source/WebCore:

Chromium need to know exactly which frame called getUserMedia so that it can
clean away the stream when the frame goes away.
Since that information is available in webkit add an accessor method.

Chromium mock class extended to test the added method.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::ownerDocument):
(WebCore):
* Modules/mediastream/UserMediaRequest.h:
(WebCore):
(UserMediaRequest):

Source/WebKit/chromium:

Chromium need to know exactly which frame called getUserMedia so that it can clean
away the stream when the frame goes away.
Since that information is available in webkit add an accessor method.

Also taking the opportunity to remove an unused deprecated method,
and adding asserts in case the object is empty.

* public/WebUserMediaRequest.h:
(WebKit):
(WebUserMediaRequest):
* src/WebUserMediaRequest.cpp:
(WebKit::WebUserMediaRequest::ownerDocument):

Tools:

Extending WebUserMediaClientMock to check that the owning document is valid,
and that the document has a frame.

* DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
(WebKit::WebUserMediaClientMock::requestUserMedia):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129145 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[MathML] Increase visual space around fraction parts, italic variables, and operators
https://bugs.webkit.org/show_bug.cgi?id=97228

Reviewed by Eric Seidel.

Source/WebCore: 

This makes MathML more readable, and more in agreement with Firefox and TeX.

Tested by existing tests.

* css/mathml.css:
(mfrac > :first-child):
(mfrac > :last-child):
(mfrac):
(mi):
(msub > mi:first-child, msubsup > mi:first-child):
    - Subscripts don't need to move right after an italic <mi>.
(msubsup > mi:first-child + * + *):
    - Superscripts do need to move right after an italic <mi>.
(math > mo, mrow > mo, msqrt > mo, mtd > mo):
    - These are ok values for now. It will be better to use different values for different operators, as the FIXME says.
(math > mo:last-child, mrow > mo:last-child, msqrt > mo:last-child, mtd > mo:last-child):
    - Prefix and postfix operators, including fences, generally get less spacing than infix operators.
        
* rendering/mathml/RenderMathMLFenced.cpp:
(WebCore::RenderMathMLFenced::createMathMLOperator):
    - Usually the separator is a comma or semicolon, so we only put space after it for now.
(WebCore::RenderMathMLFenced::makeFences):
(WebCore::RenderMathMLFenced::addChild):
(WebCore::RenderMathMLFenced::styleDidChange):
* rendering/mathml/RenderMathMLFenced.h:
(RenderMathMLFenced):
        
* rendering/mathml/RenderMathMLFraction.cpp:
(WebCore):
(WebCore::RenderMathMLFraction::updateFromElement):
    - gDenominatorPad is now handled by mathml.css.
        
* rendering/mathml/RenderMathMLSubSup.cpp:
(WebCore):
(WebCore::RenderMathMLSubSup::fixScriptsStyle):
    - gSubsupScriptMargin is now handled by mathml.css.

LayoutTests: 

* platform/mac/mathml/presentation/attributes-expected.png:
* platform/mac/mathml/presentation/attributes-expected.txt:
* platform/mac/mathml/presentation/fenced-expected.png:
* platform/mac/mathml/presentation/fenced-expected.txt:
* platform/mac/mathml/presentation/fenced-mi-expected.png:
* platform/mac/mathml/presentation/fenced-mi-expected.txt:
* platform/mac/mathml/presentation/fractions-expected.png:
* platform/mac/mathml/presentation/fractions-expected.txt:
* platform/mac/mathml/presentation/fractions-vertical-alignment-expected.png:
* platform/mac/mathml/presentation/fractions-vertical-alignment-expected.txt:
* platform/mac/mathml/presentation/mo-expected.png:
* platform/mac/mathml/presentation/mo-expected.txt:
* platform/mac/mathml/presentation/mo-stretch-expected.png:
* platform/mac/mathml/presentation/mo-stretch-expected.txt:
* platform/mac/mathml/presentation/mroot-pref-width-expected.png:
* platform/mac/mathml/presentation/mroot-pref-width-expected.txt:
* platform/mac/mathml/presentation/over-expected.png:
* platform/mac/mathml/presentation/over-expected.txt:
* platform/mac/mathml/presentation/roots-expected.png:
* platform/mac/mathml/presentation/roots-expected.txt:
* platform/mac/mathml/presentation/row-alignment-expected.png:
* platform/mac/mathml/presentation/row-alignment-expected.txt:
* platform/mac/mathml/presentation/row-expected.png:
* platform/mac/mathml/presentation/row-expected.txt:
* platform/mac/mathml/presentation/style-expected.png:
* platform/mac/mathml/presentation/style-expected.txt:
* platform/mac/mathml/presentation/sub-expected.txt:
* platform/mac/mathml/presentation/subsup-expected.png:
* platform/mac/mathml/presentation/subsup-expected.txt:
* platform/mac/mathml/presentation/sup-expected.png:
* platform/mac/mathml/presentation/sup-expected.txt:
* platform/mac/mathml/presentation/tokenElements-expected.png:
* platform/mac/mathml/presentation/tokenElements-expected.txt:
* platform/mac/mathml/presentation/under-expected.txt:
* platform/mac/mathml/presentation/underover-expected.png:
* platform/mac/mathml/presentation/underover-expected.txt:
* platform/mac/mathml/xHeight-expected.png:
* platform/mac/mathml/xHeight-expected.txt:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@129146 268f45cc-cd09-0410-ab3c-d52691b4dbfc