WebKit-https.git
6 years agoFix hover area for divs with css transforms
commit-queue@webkit.org [Thu, 21 Nov 2013 15:17:08 +0000 (15:17 +0000)]
Fix hover area for divs with css transforms
https://bugs.webkit.org/show_bug.cgi?id=124647

Patch by Mihai Maerean <mmaerean@adobe.com> on 2013-11-21
Reviewed by Allan Sandfeld Jensen.

Source/WebCore:

Non transformed layers are now being hit last, not through or in-between transformed layers.
The paint order says that the divs creating stacking contexts (including transforms) are painted after the
other siblings so they should be hit tested in the reverse order. Also, a rotated div in a non-rotated parent
should be hit in its entire area, not hit its parent's background, even if the z-coordinate is negative where
the mouse is located.

Test: transforms/3d/hit-testing/hover-rotated-negative-z.html

* rendering/RenderLayer.cpp:
(WebCore::computeZOffset):

LayoutTests:

* transforms/3d/hit-testing/hover-rotated-negative-z.html: Added.
* transforms/3d/hit-testing/hover-rotated-negative-z-expected.txt: Added.

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

6 years agoCreated test for positioned fragmented content which overflows the regions.
stavila@adobe.com [Thu, 21 Nov 2013 14:58:20 +0000 (14:58 +0000)]
Created test for positioned fragmented content which overflows the regions.

[CSS Regions] Fragmented content that is relatively positioned get sliced (and overflows in the next region)
https://bugs.webkit.org/show_bug.cgi?id=117122

Reviewed by Antti Koivisto.

* fast/regions/positioned-fragmented-content-expected.html: Added.
* fast/regions/positioned-fragmented-content.html: Added.

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

6 years agoAdded test for visual overflow with transformed content in regions.
stavila@adobe.com [Thu, 21 Nov 2013 14:57:14 +0000 (14:57 +0000)]
Added test for visual overflow with transformed content in regions.

[CSS Regions] Transform applied to content node causes overflow to be hidden
https://bugs.webkit.org/show_bug.cgi?id=116242

Reviewed by Antti Koivisto.

* fast/regions/region-visual-overflow-transform-expected.html: Added.
* fast/regions/region-visual-overflow-transform.html: Added.

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

6 years ago[GTK] Release compilation fails when defining "LOG_DISABLED=0"
commit-queue@webkit.org [Thu, 21 Nov 2013 14:53:19 +0000 (14:53 +0000)]
[GTK] Release compilation fails when defining "LOG_DISABLED=0"
https://bugs.webkit.org/show_bug.cgi?id=124661

Patch by Andres Gomez <agomez@igalia.com> on 2013-11-21
Reviewed by Mario Sanchez Prada.

In a "Debug" build the CString.h header comes from another
indirect dependency. Now, we explicitly add this missing include.

* html/HTMLTrackElement.cpp: Explicitly adding missing include.

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

6 years ago[EFL] Fix accessibility media-element expectation
commit-queue@webkit.org [Thu, 21 Nov 2013 14:52:39 +0000 (14:52 +0000)]
[EFL] Fix accessibility media-element expectation
https://bugs.webkit.org/show_bug.cgi?id=124711

Unreviewed EFL gardening.

Changing main element AXRole AXUnknown -> AXEmbedded.

Patch by Andrzej Badowski <a.badowski@samsung.com> on 2013-11-21

* platform/efl/accessibility/media-element-expected.txt:

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

6 years agoUnreviewed EFL gardening.
m.pakula@samsung.com [Thu, 21 Nov 2013 14:25:57 +0000 (14:25 +0000)]
Unreviewed EFL gardening.

Update baselines after r159575.

* platform/efl/fast/block/float/024-expected.txt:
* platform/efl/fast/block/margin-collapse/025-expected.txt:
* platform/efl/fast/block/margin-collapse/block-inside-inline/025-expected.txt:
* platform/efl/fast/block/margin-collapse/empty-clear-blocks-expected.txt:

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

6 years agoFix Range.insertNode when the inserted node is in the same container as the Range
rniwa@webkit.org [Thu, 21 Nov 2013 13:52:09 +0000 (13:52 +0000)]
Fix Range.insertNode when the inserted node is in the same container as the Range
https://bugs.webkit.org/show_bug.cgi?id=123957

Reviewed by Antti Koivisto.

Source/WebCore:

Inspired by https://chromium.googlesource.com/chromium/blink/+/fb6ca1f488703e8d4f20ce6449cc8ea210be6edb

When a node from the same container is inserted, we can't simply adjust m_end with the offset.
Compute m_start and m_end from the inserted nodes instead.

Also, don't adjust m_start and m_end to nodes outside of the document if the inserted nodes had been
removed by mutation events.

Test: fast/dom/Range/range-insertNode-same-container.html

* dom/Range.cpp:
(WebCore::Range::insertNode):

LayoutTests:

Merge https://chromium.googlesource.com/chromium/blink/+/fb6ca1f488703e8d4f20ce6449cc8ea210be6edb

Used better labels between divs, and added more evalAndLog and shouldBe so that
the expected result is self-explanatory.

* fast/dom/Range/range-insertNode-same-container-expected.txt: Added.
* fast/dom/Range/range-insertNode-same-container.html: Added.

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

6 years agonextBoundary and previousBoundary are very slow when there is a password field
rniwa@webkit.org [Thu, 21 Nov 2013 13:46:39 +0000 (13:46 +0000)]
nextBoundary and previousBoundary are very slow when there is a password field
https://bugs.webkit.org/show_bug.cgi?id=123973

Reviewed by Antti Koivisto.

Source/WebCore:

Merge https://chromium.googlesource.com/chromium/blink/+/57366eec5e3edea54062d4e74c0e047f8681dbad

When iterating through DOM nodes nextBoundary and previousBoundary convert the contents of nodes using
text security to a sequence of 'x' characters. The SimplifiedBackwardsTextIterator and TextIterator
may iterate past node boundaries. Before this patch, the transformation was done looking at the starting
node rather than the current node. In some situations, this replaced all boundaries with 'x' and caused
the text iterator to continue iterating and transforming until the extent of the document.

Test: editing/deleting/password-delete-performance.html

* editing/TextIterator.h:
(WebCore::SimplifiedBackwardsTextIterator::node):
* editing/VisibleUnits.cpp:
(WebCore::previousBoundary):
(WebCore::nextBoundary):

LayoutTests:

* editing/deleting/password-delete-performance-expected.txt: Added.
* editing/deleting/password-delete-performance.html: Added.

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

6 years agoHTML parser should not associate elements inside templates with forms
rniwa@webkit.org [Thu, 21 Nov 2013 13:43:34 +0000 (13:43 +0000)]
HTML parser should not associate elements inside templates with forms
https://bugs.webkit.org/show_bug.cgi?id=117779

Reviewed by Antti Koivisto.

Source/WebCore:

Merge https://chromium.googlesource.com/chromium/blink/+/45aadf7ee7ee010327eb692066cf013315ef3ed7

When parsing <form><template><input>, the previous behavior was to associate the <input> with the <form>,
even though they're not in the same tree (or even the same document).

This patch changes that by checking, prior to creating a form control element, whether the element to be
created lives in a document with a browsing context.

We don't update m_form as needed to faithfully match the HTML5 specification's form element pointer
http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#form-element-pointer
and its algorithm for creating and inserting nodes:
http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#creating-and-inserting-nodes

While this leaves isindex's reference to form element pointer stale:
http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#isindex
The HTML5 specification matches the behaviors of Chrome and Firefox so we leave it as is.

Test: fast/dom/HTMLTemplateElement/no-form-association.html

* html/parser/HTMLConstructionSite.cpp:
(WebCore::HTMLConstructionSite::createHTMLElement):

LayoutTests:

* fast/dom/HTMLTemplateElement/no-form-association-expected.txt: Added.
* fast/dom/HTMLTemplateElement/no-form-association.html: Added.

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

6 years agoPerfTestRunner._generate_results_dict shouldn't depend on test objects
rniwa@webkit.org [Thu, 21 Nov 2013 13:22:44 +0000 (13:22 +0000)]
PerfTestRunner._generate_results_dict shouldn't depend on test objects
https://bugs.webkit.org/show_bug.cgi?id=124623

Removed the dependency on test objects from results JSON generation.
This allows single test.run to return metrics for multiple tests

Reviewed by Antti Koivisto.

* Scripts/webkitpy/performance_tests/perftest.py:
(PerfTestMetric.__init__): Takes the test path and test name.
(PerfTestMetric.path): Added.
(PerfTestMetric.test_file_name): Added.
(PerfTest.run): Accumulate PerfTestMetric objects instead of raw values.
(PerfTest._ensure_metrics): Instantiate PerfTestMetric with the test path and test name.
The path is going to have the names of subtests at the end once we support them.

* Scripts/webkitpy/performance_tests/perftest_unittest.py:
(TestPerfTestMetric.test_init_set_missing_unit): Specify the test path and test name.
(TestPerfTestMetric.test_init_set_time_metric): Ditto.
(TestPerfTestMetric.test_has_values): Ditto.
(TestPerfTestMetric.test_append): Ditto.

* Scripts/webkitpy/performance_tests/perftestsrunner.py:
(_generate_results_dict): Only use metrics.
(_run_tests_set): Accumulate metrics as supposed to (test, metrics) pairs.

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

6 years agoREGRESSION(r159599): webkitdirs.pm spits out warnings at lines 851 and 852
rego@igalia.com [Thu, 21 Nov 2013 12:26:06 +0000 (12:26 +0000)]
REGRESSION(r159599): webkitdirs.pm spits out warnings at lines 851 and 852
https://bugs.webkit.org/show_bug.cgi?id=124697

Reviewed by Ryosuke Niwa.

* Scripts/webkitdirs.pm:
(checkForArgumentAndRemoveFromARGVGettingValue): Fix check of array size
before trying to access to the first element.

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

6 years ago[GTK] Cannot scroll in option menu when it larger than the screen
carlosgc@webkit.org [Thu, 21 Nov 2013 08:52:32 +0000 (08:52 +0000)]
[GTK] Cannot scroll in option menu when it larger than the screen
https://bugs.webkit.org/show_bug.cgi?id=124671

Reviewed by Martin Robinson.

The problem is that the popup menu is not resized to fit in the
screen, so it doesn't scroll and some of the items are offscreen
so they can't be selected either. GTK+ automatically resizes the
popup menus to fit in the work area, but only when the menu is
already positioned.

* platform/gtk/GtkPopupMenu.cpp:
(WebCore::GtkPopupMenu::popUp): Schedule a resize of the popup
menu right after showing it once it has a position.

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

6 years ago[GTK] Mark all deprecated symbols in GObject DOM bindings
carlosgc@webkit.org [Thu, 21 Nov 2013 08:38:35 +0000 (08:38 +0000)]
[GTK] Mark all deprecated symbols in GObject DOM bindings
https://bugs.webkit.org/show_bug.cgi?id=124406

Reviewed by Gustavo Noronha Silva.

Source/WebCore:

Move deprecated API from WebKitDOMCustom to a new file
WebKitDOMDeprecated leaving in WebKitDOMCustom only the
non-deprecated API that is not autogenerated. Also added the
deprecation decorations and tags in the documentation.

* bindings/gobject/GNUmakefile.am:
* bindings/gobject/WebKitDOMCustom.cpp:
* bindings/gobject/WebKitDOMCustom.h:
* bindings/gobject/WebKitDOMCustom.symbols:
* bindings/gobject/WebKitDOMDeprecated.cpp: Copied from Source/WebCore/bindings/gobject/WebKitDOMCustom.cpp.
(webkit_dom_blob_webkit_slice):
(webkit_dom_html_element_get_id):
(webkit_dom_html_element_set_id):
(webkit_dom_html_element_get_class_name):
(webkit_dom_html_element_set_class_name):
(webkit_dom_html_element_get_class_list):
(webkit_dom_html_form_element_dispatch_form_change):
(webkit_dom_html_form_element_dispatch_form_input):
(webkit_dom_webkit_named_flow_get_overflow):
(webkit_dom_element_get_webkit_region_overflow):
(webkit_dom_webkit_named_flow_get_content_nodes):
(webkit_dom_webkit_named_flow_get_regions_by_content_node):
(webkit_dom_bar_info_get_property):
(webkit_dom_bar_info_class_init):
(webkit_dom_bar_info_init):
(webkit_dom_bar_info_get_visible):
(webkit_dom_console_get_memory):
(webkit_dom_css_style_declaration_get_property_css_value):
(webkit_dom_document_get_webkit_hidden):
(webkit_dom_document_get_webkit_visibility_state):
(webkit_dom_html_document_open):
(webkit_dom_html_element_set_item_id):
(webkit_dom_html_element_get_item_id):
(webkit_dom_html_element_get_item_ref):
(webkit_dom_html_element_get_item_prop):
(webkit_dom_html_element_set_item_scope):
(webkit_dom_html_element_get_item_scope):
(webkit_dom_html_element_get_item_type):
(webkit_dom_html_style_element_set_scoped):
(webkit_dom_html_style_element_get_scoped):
(webkit_dom_html_properties_collection_get_property):
(webkit_dom_html_properties_collection_class_init):
(webkit_dom_html_properties_collection_init):
(webkit_dom_html_properties_collection_item):
(webkit_dom_html_properties_collection_named_item):
(webkit_dom_html_properties_collection_get_length):
(webkit_dom_html_properties_collection_get_names):
(webkit_dom_node_get_attributes):
(webkit_dom_node_has_attributes):
(webkit_dom_memory_info_get_property):
(webkit_dom_memory_info_class_init):
(webkit_dom_memory_info_init):
(webkit_dom_memory_info_get_total_js_heap_size):
(webkit_dom_memory_info_get_used_js_heap_size):
(webkit_dom_memory_info_get_js_heap_size_limit):
(webkit_dom_micro_data_item_value_class_init):
(webkit_dom_micro_data_item_value_init):
(webkit_dom_performance_get_memory):
(webkit_dom_property_node_list_get_property):
(webkit_dom_property_node_list_class_init):
(webkit_dom_property_node_list_init):
(webkit_dom_property_node_list_item):
(webkit_dom_property_node_list_get_length):
(webkit_dom_html_media_element_get_start_time):
(webkit_dom_html_media_element_get_initial_time):
(webkit_dom_html_head_element_get_profile):
(webkit_dom_html_head_element_set_profile):
(webkit_dom_processing_instruction_get_data):
(webkit_dom_processing_instruction_set_data):
* bindings/gobject/WebKitDOMDeprecated.h: Copied from Source/WebCore/bindings/gobject/WebKitDOMCustom.h.
* bindings/gobject/WebKitDOMDeprecated.symbols: Copied from Source/WebCore/bindings/gobject/WebKitDOMCustom.symbols.
* bindings/scripts/CodeGeneratorGObject.pm:
(GenerateFunction): Do not include deprecation guards in the cpp file.
* bindings/scripts/gobject-generate-headers.pl: Do not create
fordward declarations for non-existent classes like Custom and
Deprecated.
* bindings/scripts/test/GObject/WebKitDOMTestEventTarget.cpp:
(webkit_dom_test_event_target_dispatch_event):

Tools:

* Scripts/webkitpy/style/checker.py: Add special case for
WebKitDOMDeprecated.
* gtk/generate-gtkdoc:
(get_webkit2_options): Use the prefix of the methods as namespace,
since this is what gtkdoc expects to sort the index.
(get_webkit1_options): Ditto.
(get_webkitdom_options): Ditto.
* gtk/generate-webkitdom-doc-files:
(WebKitDOMDocGenerator): Add a global list of deleted objects.
(WebKitDOMDocGenerator.write_deleted_classes): New method to write
the documentation for classes that are deprecated because they
have been removed.
(WebKitDOMDocGeneratorDocs.write_deleted_classes): Add sections
for deleted classes too.
(WebKitDOMDocGeneratorSections.__init__): Build a list of
deprecated symbols using the given symbols file.
(WebKitDOMDocGeneratorSections._deleted_class): Returns the
deleted class corresponding to the given function.
(WebKitDOMDocGeneratorSections._deprecated_symbols): Builds a
dictionary of deprecated symbols for every class.
(WebKitDOMDocGeneratorSections.write_section): Add also the
deprecated symbols in every section.
(WebKitDOMDocGeneratorSections.write_deleted_classes): Add
sections for deleted classes too.

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

6 years ago[CoordinatedGraphics] Use std::unique_ptrs rather than OwnPtrs
jae.park@company100.net [Thu, 21 Nov 2013 07:52:15 +0000 (07:52 +0000)]
[CoordinatedGraphics] Use std::unique_ptrs rather than OwnPtrs
https://bugs.webkit.org/show_bug.cgi?id=124692

Reviewed by Noam Rosenthal.

No new tests, covered by existing ones.

* platform/graphics/TiledBackingStore.cpp:
(WebCore::TiledBackingStore::TiledBackingStore):
* platform/graphics/TiledBackingStore.h:
* platform/graphics/TiledBackingStoreBackend.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::createBackingStore):
* platform/graphics/texmap/coordinated/CoordinatedTile.h:

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

6 years agocheck-webkit-style should support C++11 rvalue references.
commit-queue@webkit.org [Thu, 21 Nov 2013 07:46:13 +0000 (07:46 +0000)]
check-webkit-style should support C++11 rvalue references.
https://bugs.webkit.org/show_bug.cgi?id=123406

Patch by László Langó <lango@inf.u-szeged.hu> on 2013-11-20
Reviewed by Brent Fulgham.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_style):
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(Cpp11StyleTest):
(Cpp11StyleTest.test_rvaule_reference_at_end_of_line):

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

6 years agoAdd more infrastructure for ServerConnection communication between Web and Database...
beidson@apple.com [Thu, 21 Nov 2013 07:04:12 +0000 (07:04 +0000)]
Add more infrastructure for ServerConnection communication between Web and Database processes
https://bugs.webkit.org/show_bug.cgi?id=124693

Reviewed by Anders Carlsson.

Source/WebCore:

* WebCore.exp.in:

Source/WebKit2:

* DatabaseProcess/DatabaseToWebProcessConnection.cpp:
(WebKit::DatabaseToWebProcessConnection::establishIDBConnection):
(WebKit::DatabaseToWebProcessConnection::removeDatabaseProcessIDBConnection): Added for WebProcess to be able
  to invalidate the DatabaseProcess side of a server connection.
* DatabaseProcess/DatabaseToWebProcessConnection.h:
* DatabaseProcess/DatabaseToWebProcessConnection.messages.in:

* DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
(WebKit::DatabaseProcessIDBConnection::DatabaseProcessIDBConnection):
(WebKit::DatabaseProcessIDBConnection::disconnectedFromWebProcess): Added for future cleanup.
(WebKit::DatabaseProcessIDBConnection::establishConnection):
(WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata): Callback to the WebProcess, even if
  it is just dummy data for now.
* DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
(WebKit::DatabaseProcessIDBConnection::create):

* WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
(WebKit::WebIDBServerConnection::create): Register the new object with the WebToDatabaseProcessConnection.
(WebKit::WebIDBServerConnection::~WebIDBServerConnection): Remove from the WebToDatabaseProcessConnection.
(WebKit::WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata):
(WebKit::WebIDBServerConnection::didGetOrEstablishIDBDatabaseMetadata): Callback from the DatabaseProcess,
  a no-op for now.
* WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
* WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in: Copied from Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in.

* WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
(WebKit::WebToDatabaseProcessConnection::didReceiveMessage):
(WebKit::WebToDatabaseProcessConnection::didClose):
(WebKit::WebToDatabaseProcessConnection::registerWebIDBServerConnection): Hold a collection of all
  server connections for messaging.
(WebKit::WebToDatabaseProcessConnection::removeWebIDBServerConnection): Remove a connection from the collection,
  and also message the DatabaseProcess that it’s gone away.
* WebProcess/Databases/WebToDatabaseProcessConnection.h:

Project files, etc etc:
* DerivedSources.make:
* Scripts/webkit2/messages.py:
(struct_or_class):
* WebKit2.xcodeproj/project.pbxproj:

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

6 years agoHoist <template> to head when found between </head> and <body> for consistency with...
rniwa@webkit.org [Thu, 21 Nov 2013 07:00:09 +0000 (07:00 +0000)]
Hoist <template> to head when found between </head> and <body> for consistency with <script>
https://bugs.webkit.org/show_bug.cgi?id=123949

Reviewed by Antti Koivisto.

Source/WebCore:

Merge https://chromium.googlesource.com/chromium/blink/+/835fb468fd211054a920fb7612a6dc5043662495

Move template elements between head and body elements into the head to be consistent with script elements.
The HTML5 specification was changed in http://html5.org/tools/web-apps-tracker?from=8217&to=8218.

Inline comments below are cited from https://www.w3.org/Bugs/Public/show_bug.cgi?id=23002
and https://codereview.chromium.org/25900003 for clarity.

* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::processStartTag): Add the template element to the list of elements to be hoisted into
the head element.
(WebCore::HTMLTreeBuilder::resetInsertionModeAppropriately):

Replace the assertion that isParsingFragment is true when item->node() == m_tree.openElements()->rootNode() since,
with this change, we can now invoke resetInsertionMode when parsing a normal document (not fragment) and there is
only the html element on the stack of open elements.

For the second change, consider: <head></head><template>

This example breaks in the old HTML parser because the template element is handled by "after head" state which
pushes the head element back on, processes the template element for "in head", then pops the head element off.
EOF is reached, which processes a fake close tag for the template element, which pops the template element off
and resets the insertion mode appropriately

The problem here is that "reset the insertion mode" is going to inspect the bottom-most element on the stack which
is now the html element and it will set the mode to "before head". Nothing good happens after this.

We fix this problem by having the reset algorithm check if the head element pointer is set, and if so, go to after
head instead of before head.

LayoutTests:

Merge https://chromium.googlesource.com/chromium/blink/+/835fb468fd211054a920fb7612a6dc5043662495
and added two more test cases discussed in https://www.w3.org/Bugs/Public/show_bug.cgi?id=23002.

* html5lib/resources/template.dat:

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

6 years ago[CSS Regions] Implement visual overflow for first & last regions
stavila@adobe.com [Thu, 21 Nov 2013 06:57:19 +0000 (06:57 +0000)]
[CSS Regions] Implement visual overflow for first & last regions
https://bugs.webkit.org/show_bug.cgi?id=118665

Source/WebCore:

In order to properly propagate the visual overflow of elements flowed inside regions,
the responsiblity of painting and hit-testing content inside flow threads has been
moved to the flow thread layer's level.
Each region keeps the associated overflow with each box in the RenderBoxRegionInfo
structure, including one for the flow thread itself. This data is used during
painting and hit-testing.

Reviewed by David Hyatt.

Tests: fast/regions/overflow-first-and-last-regions-in-container-hidden.html
       fast/regions/overflow-first-and-last-regions.html
       fast/regions/overflow-nested-regions.html
       fast/regions/overflow-region-float.html
       fast/regions/overflow-region-inline.html
       fast/regions/overflow-region-transform.html

* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::setLayoutOverflow):
(WebCore::InlineFlowBox::setVisualOverflow):
* rendering/InlineFlowBox.h:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::addOverflowFromChildren):
(WebCore::RenderBlock::paint):
(WebCore::RenderBlock::paintObject):
(WebCore::RenderBlock::estimateRegionRangeForBoxChild):
(WebCore::RenderBlock::updateRegionRangeForBoxChild):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::hasNextPage):
(WebCore::RenderBlockFlow::relayoutForPagination):
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::positionNewFloatOnLine):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::borderBoxRectInRegion):
(WebCore::RenderBox::computeRectForRepaint):
(WebCore::RenderBox::addLayoutOverflow):
(WebCore::RenderBox::addVisualOverflow):
(WebCore::RenderBox::isUnsplittableForPagination):
(WebCore::RenderBox::overflowRectForPaintRejection):
* rendering/RenderBox.h:
(WebCore::RenderBox::canHaveOutsideRegionRange):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
* rendering/RenderBoxModelObject.h:
* rendering/RenderBoxRegionInfo.h:
(WebCore::RenderBoxRegionInfo::createOverflow):
* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::objectShouldPaintInFlowRegion):
(WebCore::RenderFlowThread::mapFromLocalToFlowThread):
(WebCore::RenderFlowThread::mapFromFlowThreadToLocal):
(WebCore::RenderFlowThread::decorationsClipRectForBoxInRegion):
(WebCore::RenderFlowThread::flipForWritingModeLocalCoordinates):
(WebCore::RenderFlowThread::addRegionsOverflowFromChild):
(WebCore::RenderFlowThread::addRegionsVisualOverflow):
(WebCore::CurrentRenderFlowThreadMaintainer::CurrentRenderFlowThreadMaintainer):
* rendering/RenderFlowThread.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateLayerPositions):
(WebCore::expandClipRectForRegionAndReflection):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::RenderLayer::paintLayer):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::updatePaintingInfoForFragments):
(WebCore::RenderLayer::paintForegroundForFragments):
(WebCore::RenderLayer::hitTest):
(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::mapLayerClipRectsToFragmentationLayer):
(WebCore::RenderLayer::calculateClipRects):
(WebCore::RenderLayer::parentClipRects):
(WebCore::RenderLayer::calculateRects):
(WebCore::RenderLayer::intersectsDamageRect):
(WebCore::RenderLayer::updateDescendantsLayerListsIfNeeded):
(WebCore::RenderLayer::repaintIncludingDescendants):
(WebCore::RenderLayer::paintNamedFlowThreadInsideRegion):
(WebCore::RenderLayer::paintFlowThreadIfRegion):
(WebCore::RenderLayer::hitTestFlowThreadIfRegion):
* rendering/RenderLayer.h:
(WebCore::ClipRect::inflateX):
(WebCore::ClipRect::inflateY):
(WebCore::ClipRect::inflate):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::addOverflowFromChildren):
* rendering/RenderMultiColumnSet.cpp:
(WebCore::RenderMultiColumnSet::flowThreadPortionOverflowRect):
(WebCore::RenderMultiColumnSet::repaintFlowThreadContent):
* rendering/RenderMultiColumnSet.h:
* rendering/RenderNamedFlowFragment.cpp:
(WebCore::RenderNamedFlowFragment::createStyle):
(WebCore::RenderNamedFlowFragment::namedFlowThread):
* rendering/RenderNamedFlowFragment.h:
* rendering/RenderOverflow.h:
* rendering/RenderRegion.cpp:
(WebCore::RenderRegion::flowThreadPortionOverflowRect):
(WebCore::RenderRegion::flowThreadPortionLocation):
(WebCore::RenderRegion::regionContainerLayer):
(WebCore::RenderRegion::overflowRectForFlowThreadPortion):
(WebCore::RenderRegion::computeOverflowFromFlowThread):
(WebCore::RenderRegion::repaintFlowThreadContent):
(WebCore::RenderRegion::repaintFlowThreadContentRectangle):
(WebCore::RenderRegion::insertedIntoTree):
(WebCore::RenderRegion::ensureOverflowForBox):
(WebCore::RenderRegion::rectFlowPortionForBox):
(WebCore::RenderRegion::addLayoutOverflowForBox):
(WebCore::RenderRegion::addVisualOverflowForBox):
(WebCore::RenderRegion::layoutOverflowRectForBox):
(WebCore::RenderRegion::visualOverflowRectForBox):
(WebCore::RenderRegion::visualOverflowRectForBoxForPropagation):
* rendering/RenderRegion.h:
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::shouldPaint):
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::paint):

LayoutTests:

Rebased some tests due to regions layers changes.
Updated some tests to increase clarity. Some of them were only passing because two
regions were close together and the fact that an element was being painted
inside the wrong region was not visible. Floats are now also unsplittable.
        - bottom-overflow-out-of-first-region
        - float-pushed-width-change-2
        - float-pushed-width-change
        - webkit-flow-float-unable-to-push

Changed top-overflow-out-of-second-region to reftest.

Added new tests for testing the visual overflow in different situations
(transformed, inline, opacity, floating).

Reviewed by David Hyatt.

* fast/regions/bottom-overflow-out-of-first-region-expected.html:
* fast/regions/bottom-overflow-out-of-first-region.html:
* fast/regions/counters/extract-ordered-lists-in-regions-explicit-counters-005-expected.html:
* fast/regions/counters/extract-ordered-lists-in-regions-explicit-counters-005.html:
* fast/regions/element-in-named-flow-absolute-from-fixed-expected.txt:
* fast/regions/element-in-named-flow-fixed-from-absolute-expected.txt:
* fast/regions/element-inflow-fixed-from-outflow-static-expected.txt:
* fast/regions/element-outflow-static-from-inflow-fixed-expected.txt:
* fast/regions/float-pushed-width-change-2-expected.html:
* fast/regions/float-pushed-width-change-2.html:
* fast/regions/float-pushed-width-change-expected.html:
* fast/regions/float-pushed-width-change.html:
* fast/regions/layers/dynamic-layer-added-with-no-layout-expected.txt: Added.
* fast/regions/layers/dynamic-layer-removed-with-no-layout-expected.txt: Added.
* fast/regions/layers/regions-promoted-to-layers-expected.txt: Added.
* fast/regions/layers/regions-promoted-to-layers-horizontal-bt-expected.txt: Added.
* fast/regions/layers/regions-promoted-to-layers-vertical-lr-expected.txt: Added.
* fast/regions/layers/regions-promoted-to-layers-vertical-rl-expected.txt: Added.
* fast/regions/outline-sides-in-region-expected.html:
* fast/regions/outline-sides-in-region.html:
* fast/regions/overflow-first-and-last-regions-expected.html: Added.
* fast/regions/overflow-first-and-last-regions-in-container-hidden-expected.html: Added.
* fast/regions/overflow-first-and-last-regions-in-container-hidden.html: Added.
* fast/regions/overflow-first-and-last-regions.html: Added.
* fast/regions/overflow-last-region-expected.html: Removed.
* fast/regions/overflow-last-region.html: Removed.
* fast/regions/overflow-nested-regions-expected.html: Added.
* fast/regions/overflow-nested-regions.html: Added.
* fast/regions/overflow-region-float-expected.html: Added.
* fast/regions/overflow-region-float.html: Added.
* fast/regions/overflow-region-inline-expected.html: Added.
* fast/regions/overflow-region-inline.html: Added.
* fast/regions/overflow-region-transform-expected.html: Added.
* fast/regions/overflow-region-transform.html: Added.
* fast/regions/overflow-scrollable-rotated-fragment-expected.html:
* fast/regions/overflow-scrollable-rotated-fragment.html:
* fast/regions/top-overflow-out-of-second-region-expected.html: Copied from LayoutTests/fast/regions/top-overflow-out-of-second-region.html.
* fast/regions/top-overflow-out-of-second-region.html:
* fast/regions/webkit-flow-float-unable-to-push-expected.html:
* fast/regions/webkit-flow-float-unable-to-push.html:
* platform/gtk/fast/regions/text-region-split-vertical-rl-expected.txt: Removed.
* platform/gtk/TestExpectations: Add new test expectations for failing tests.
* platform/efl/TestExpectations: Add new test expectations for failing tests.
* platform/mac-wk2/TestExpectations:
* platform/mac/fast/regions/top-overflow-out-of-second-region-expected.png: Removed.
* platform/mac/fast/regions/top-overflow-out-of-second-region-expected.txt: Removed.

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

6 years agoTest a template element appearing after a closing body tag in html5lib
rniwa@webkit.org [Thu, 21 Nov 2013 06:22:33 +0000 (06:22 +0000)]
Test a template element appearing after a closing body tag in html5lib
https://bugs.webkit.org/show_bug.cgi?id=123864

Reviewed by Antti Koivisto.

Merge https://chromium.googlesource.com/chromium/blink/+/019d5daa14314972ac6b3e42e9446823ad9cffd2

* html5lib/resources/template.dat:

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

6 years ago[HTML parser] reset insertion mode appropriate must check for "in select in table...
rniwa@webkit.org [Thu, 21 Nov 2013 06:10:31 +0000 (06:10 +0000)]
[HTML parser] reset insertion mode appropriate must check for "in select in table" mode
https://bugs.webkit.org/show_bug.cgi?id=123850

Reviewed by Antti Koivisto.

Source/WebCore:

Merge https://chromium.googlesource.com/chromium/blink/+/2cb7523df57dfb48111f6aa16b7138cd54024ba7

The HTML specification has been updated to detect encountering a template element inside of a select element,
which in turn is inside of a table element. In this case, the select element will cause the parser to be in
"InSelectInTable" mode. Thus when the template element closes, it should return to that mode.

The fix here is that resetInsertionModeAppropriately must continue looking up the stack if the first node is
select element to see whether the select element is inside of a table element.

See also: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#reset-the-insertion-mode-appropriately

Test: html5lib/resources/template.dat

* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::resetInsertionModeAppropriately):

LayoutTests:

* html5lib/resources/template.dat:

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

6 years agoBuild fix for last commit.
mark.lam@apple.com [Thu, 21 Nov 2013 05:46:22 +0000 (05:46 +0000)]
Build fix for last commit.
https://bugs.webkit.org/show_bug.cgi?id=124634.

Not reviewed.

No new tests.

* bindings/js/JSCryptoAlgorithmBuilder.cpp:

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

6 years agoIntroducing VMEntryScope to update the VM stack limit.
mark.lam@apple.com [Thu, 21 Nov 2013 05:29:42 +0000 (05:29 +0000)]
Introducing VMEntryScope to update the VM stack limit.
https://bugs.webkit.org/show_bug.cgi?id=124634.

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

1. Introduced USE(SEPARATE_C_AND_JS_STACK) (defined in Platform.h).
   Currently, it is hardcoded to use separate C and JS stacks. Once we
   switch to using the C stack for JS frames, we'll need to fix this to
   only be enabled when ENABLE(LLINT_C_LOOP).

2. Stack limits are now tracked in the VM.

   Logically, there are 2 stack limits:
   a. m_stackLimit for the native C stack, and
   b. m_jsStackLimit for the JS stack.

   If USE(SEPARATE_C_AND_JS_STACK), then the 2 limits are the same
   value, and are implemented as 2 fields in a union.

3. The VM native stackLimit is set as follows:
   a. Initially, the VM sets it to the limit of the stack of the thread that
      instantiated the VM. This allows the parser and bytecode generator to
      run before we enter the VM to execute JS code.

   b. Upon entry into the VM to execute JS code (via one of the
      Interpreter::execute...() functions), we instantiate a VMEntryScope
      that sets the VM's stackLimit to the limit of the current thread's
      stack. The VMEntryScope will automatically restore the previous
      entryScope and stack limit upon destruction.

   If USE(SEPARATE_C_AND_JS_STACK), the JSStack's methods will set the VM's
   jsStackLimit whenever it grows or shrinks.

4. The VM now provides a isSafeToRecurse() function that compares the
   current stack pointer against its native stackLimit. This subsumes and
   obsoletes the VMStackBounds class.

5. The VMEntryScope class also subsumes DynamicGlobalObjectScope for
   tracking the JSGlobalObject that we last entered the VM with.

6. Renamed dynamicGlobalObject() to vmEntryGlobalObject() since that is
   the value that the function retrieves.

7. Changed JIT and LLINT code to do stack checks against the jsStackLimit
   in the VM class instead of the JSStack.

* API/JSBase.cpp:
(JSEvaluateScript):
(JSCheckScriptSyntax):
* API/JSContextRef.cpp:
(JSGlobalContextRetain):
(JSGlobalContextRelease):
* CMakeLists.txt:
* GNUmakefile.list.am:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::emitNode):
(JSC::BytecodeGenerator::emitNodeInConditionContext):
* debugger/Debugger.cpp:
(JSC::Debugger::detach):
(JSC::Debugger::recompileAllJSFunctions):
(JSC::Debugger::pauseIfNeeded):
* debugger/DebuggerCallFrame.cpp:
(JSC::DebuggerCallFrame::vmEntryGlobalObject):
* debugger/DebuggerCallFrame.h:
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::compileFunction):
* dfg/DFGOSREntry.cpp:
* ftl/FTLLink.cpp:
(JSC::FTL::link):
* ftl/FTLOSREntry.cpp:
* heap/Heap.cpp:
(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::deleteAllCompiledCode):
* interpreter/CachedCall.h:
(JSC::CachedCall::CachedCall):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::vmEntryGlobalObject):
* interpreter/CallFrame.h:
* interpreter/Interpreter.cpp:
(JSC::unwindCallFrame):
(JSC::Interpreter::unwind):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::prepareForRepeatCall):
(JSC::Interpreter::debug):
* interpreter/JSStack.cpp:
(JSC::JSStack::JSStack):
(JSC::JSStack::growSlowCase):
* interpreter/JSStack.h:
* interpreter/JSStackInlines.h:
(JSC::JSStack::shrink):
(JSC::JSStack::grow):
- Moved these inlined functions here from JSStack.h. It reduces some
  #include dependencies of JSSTack.h which had previously resulted
  in some EWS bots' unhappiness with this patch.
(JSC::JSStack::updateStackLimit):
* jit/JIT.cpp:
(JSC::JIT::privateCompile):
* jit/JITCall.cpp:
(JSC::JIT::compileLoadVarargs):
* jit/JITCall32_64.cpp:
(JSC::JIT::compileLoadVarargs):
* jit/JITOperations.cpp:
* llint/LLIntSlowPaths.cpp:
* llint/LowLevelInterpreter.asm:
* parser/Parser.cpp:
(JSC::::Parser):
* parser/Parser.h:
(JSC::Parser::canRecurse):
* runtime/CommonSlowPaths.h:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/FunctionConstructor.cpp:
(JSC::constructFunctionSkippingEvalEnabledCheck):
* runtime/JSGlobalObject.cpp:
* runtime/JSGlobalObject.h:
* runtime/StringRecursionChecker.h:
(JSC::StringRecursionChecker::performCheck):
* runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::releaseExecutableMemory):
(JSC::VM::throwException):
* runtime/VM.h:
(JSC::VM::addressOfJSStackLimit):
(JSC::VM::jsStackLimit):
(JSC::VM::setJSStackLimit):
(JSC::VM::stackLimit):
(JSC::VM::setStackLimit):
(JSC::VM::isSafeToRecurse):
* runtime/VMEntryScope.cpp: Added.
(JSC::VMEntryScope::VMEntryScope):
(JSC::VMEntryScope::~VMEntryScope):
(JSC::VMEntryScope::requiredCapacity):
* runtime/VMEntryScope.h: Added.
(JSC::VMEntryScope::globalObject):
* runtime/VMStackBounds.h: Removed.

Source/WebCore:

No new tests.

Renamed dynamicGlobalObject() to vmEntryGlobalObject().
Replaced uses of DynamicGlobalObjectScope with VMEntryScope.

* ForwardingHeaders/runtime/VMEntryScope.h: Added.
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* bindings/js/JSCryptoAlgorithmBuilder.cpp:
(WebCore::JSCryptoAlgorithmBuilder::add):
* bindings/js/JSCustomXPathNSResolver.cpp:
(WebCore::JSCustomXPathNSResolver::create):
* bindings/js/JSDOMBinding.cpp:
(WebCore::firstDOMWindow):
* bindings/js/JSErrorHandler.cpp:
(WebCore::JSErrorHandler::handleEvent):
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent):
* bindings/js/JavaScriptCallFrame.h:
(WebCore::JavaScriptCallFrame::vmEntryGlobalObject):
* bindings/js/PageScriptDebugServer.cpp:
(WebCore::PageScriptDebugServer::recompileAllJSFunctions):
* bindings/js/ScriptDebugServer.cpp:
(WebCore::ScriptDebugServer::evaluateBreakpointAction):
(WebCore::ScriptDebugServer::handlePause):
* bindings/js/WorkerScriptDebugServer.cpp:
(WebCore::WorkerScriptDebugServer::recompileAllJSFunctions):
* bindings/objc/WebScriptObject.mm:
(WebCore::addExceptionToConsole):
* bridge/c/c_utility.cpp:
(JSC::Bindings::convertValueToNPVariant):
* bridge/objc/objc_instance.mm:
(ObjcInstance::moveGlobalExceptionToExecState):
* bridge/objc/objc_runtime.mm:
(JSC::Bindings::convertValueToObjcObject):
* bridge/objc/objc_utility.mm:
(JSC::Bindings::convertValueToObjcValue):

Source/WebKit/mac:

* WebView/WebScriptDebugger.mm:
(WebScriptDebugger::sourceParsed):

Source/WTF:

* wtf/Platform.h:
* wtf/StackBounds.h:
(WTF::StackBounds::StackBounds):

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

6 years agoGenerate toHTMLFooElement() to clean up static_cast<>
gyuyoung.kim@samsung.com [Thu, 21 Nov 2013 04:45:49 +0000 (04:45 +0000)]
Generate toHTMLFooElement() to clean up static_cast<>
https://bugs.webkit.org/show_bug.cgi?id=124571

Reviewed by Ryosuke Niwa.

Though there are a lot of clean up commits before, there are still
use of static_cast<HTMLFooElement*>. To clean up them, we need to generate
toHTMLDetails|Meta|Summary|TableCaptionElement().

Additionally, other static_cast<> are removed as well.

No new tests, no behavior changes.

* html/HTMLDetailsElement.h:
* html/HTMLMediaElement.cpp:
(HTMLMediaElement::selectNextSourceChild):
* html/HTMLMetaElement.h:
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::shouldAllowQuickTimeClassIdQuirk):
* html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::isDisabledFormControl):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::updateWidgetCallback):
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::detailsElement):
* html/HTMLSummaryElement.h:
* html/HTMLTableCaptionElement.h:
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::caption):
* html/HTMLTagNames.in:
* html/MediaDocument.cpp:
(WebCore::MediaDocumentParser::createDocumentStructure):
* html/shadow/DetailsMarkerControl.cpp:
(WebCore::DetailsMarkerControl::summaryElement):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::handleFallbackContent):
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::dispatchPendingBeforeLoadEvent):
* page/DragController.cpp:
(WebCore::DragController::canProcessDrag):
* page/Frame.cpp:
(WebCore::Frame::searchForLabelsBeforeElement):
* page/SpatialNavigation.cpp:
(WebCore::frameOwnerElement):

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

6 years agoWebPageGroup's should keep track of what processes they are being used by
weinig@apple.com [Thu, 21 Nov 2013 04:09:24 +0000 (04:09 +0000)]
WebPageGroup's should keep track of what processes they are being used by
https://bugs.webkit.org/show_bug.cgi?id=124556

Reviewed by Dan Bernstein.

* Scripts/webkit2/messages.py:
(struct_or_class):
Mark WebPageGroupData as a struct.

* Shared/UserMessageCoders.h:
* Shared/mac/ObjCObjectGraphCoders.h:
* Shared/mac/ObjCObjectGraphCoders.mm:
* WebProcess/InjectedBundle/InjectedBundleUserMessageCoders.h:
* UIProcess/WebConnectionToWebProcess.cpp:
* UIProcess/WebContext.cpp:
* UIProcess/WebContextUserMessageCoders.h:
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
Pass the WebProcess/WebProcessProxy to both encode and decode.

* Shared/WebPageCreationParameters.h:
Pass the page group by ID when creating a page, as it will have had its own
creation message sent already.

* UIProcess/WebPageGroup.cpp:
* UIProcess/WebPageGroup.h:
Keep track of processes.

* UIProcess/WebProcessProxy.cpp:
* UIProcess/WebProcessProxy.h:
Keep track of the page groups used by the process.

* WebProcess/WebPage/WebPage.cpp:
Get the already created page group on creation.

* WebProcess/WebProcess.cpp:
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
Explicitly create page groups in the WebProcess.

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

6 years agoAllow settings to be shown/hidden on build.webkit.org/dashboard
dino@apple.com [Thu, 21 Nov 2013 02:00:10 +0000 (02:00 +0000)]
Allow settings to be shown/hidden on build.webkit.org/dashboard
https://bugs.webkit.org/show_bug.cgi?id=124694

Reviewed by Tim Horton.

In preparation for more options/buttons, allow the page to
show or hide all the interactive things using a little gear icon
in the top left corner.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Main.js:
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Settings.js:
(Settings.prototype.toggleSettingsDisplay):
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/Main.css:
(div.cellButton.hide):
(div.cellButton.unhide):
(.settings-visible div.cellButton.hide, .settings-visible div.cellButton.unhide):
(.settings):
(.settings:hover):
(.settings-visible .settings):

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

6 years agoNo need to base64 SVG on build.webkit.org/dashboard
dino@apple.com [Thu, 21 Nov 2013 01:59:45 +0000 (01:59 +0000)]
No need to base64 SVG on build.webkit.org/dashboard
https://bugs.webkit.org/show_bug.cgi?id=124687

Reviewed by Tim Horton.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/StatusLineView.css:
(.status-line.good .bubble.pictogram):

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

6 years agoMake links look more like links on build.webkit.org/dashboard
dino@apple.com [Thu, 21 Nov 2013 01:59:23 +0000 (01:59 +0000)]
Make links look more like links on build.webkit.org/dashboard
https://bugs.webkit.org/show_bug.cgi?id=124686

Reviewed by Tim Horton.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/BuildbotQueueView.css:
(.queue-view .queueLabel:hover):
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/StatusLineView.css:
(.status-line.linked .label:hover):

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

6 years agoModify webkitdirs to reuse checkForArgumentAndRemoveFromARGV
commit-queue@webkit.org [Thu, 21 Nov 2013 01:39:50 +0000 (01:39 +0000)]
Modify webkitdirs to reuse checkForArgumentAndRemoveFromARGV
https://bugs.webkit.org/show_bug.cgi?id=124581

Patch by Nick Diego Yamane <nick.yamane@openbossa.org> on 2013-11-20
Reviewed by Daniel Bates.

Some subroutines are replicating code from checkForArgument**
functions instead of reusing them as is being done by all other functions.

* Scripts/webkitdirs.pm:
(determineXcodeSDK): Added.
(determinePassedConfiguration): Added.
(determinePassedArchitecture): Added.
(checkForArgumentAndRemoveFromARGV): Added.
(checkForArgumentAndRemoveFromARGVGettingValue): Added.

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

6 years agoIDB related cleanup in WebKit2
beidson@apple.com [Thu, 21 Nov 2013 01:28:35 +0000 (01:28 +0000)]
IDB related cleanup in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=124691

Reviewed by Enrica Casucci.

- WebIDBServerConnection.cpp should use the WebCore namespace and get rid of "WebCore::" throughout
- "backendIndentifier" should be renamed to "serverConnectionIdentifier" throughout

* DatabaseProcess/DatabaseToWebProcessConnection.cpp:
(WebKit::DatabaseToWebProcessConnection::establishIDBConnection):
* DatabaseProcess/DatabaseToWebProcessConnection.h:
* DatabaseProcess/DatabaseToWebProcessConnection.messages.in:

* DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
(WebKit::DatabaseProcessIDBConnection::DatabaseProcessIDBConnection):
* DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
(WebKit::DatabaseProcessIDBConnection::create):

* WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
(WebKit::generateServerConnectionIdentifier):
(WebKit::WebIDBServerConnection::WebIDBServerConnection):
(WebKit::WebIDBServerConnection::openTransaction):
(WebKit::WebIDBServerConnection::setIndexKeys):
(WebKit::WebIDBServerConnection::createObjectStore):
(WebKit::WebIDBServerConnection::createIndex):
(WebKit::WebIDBServerConnection::deleteIndex):
(WebKit::WebIDBServerConnection::get):
(WebKit::WebIDBServerConnection::put):
(WebKit::WebIDBServerConnection::openCursor):
(WebKit::WebIDBServerConnection::count):
(WebKit::WebIDBServerConnection::deleteRange):
(WebKit::WebIDBServerConnection::clearObjectStore):
(WebKit::WebIDBServerConnection::deleteObjectStore):
(WebKit::WebIDBServerConnection::changeDatabaseVersion):
(WebKit::WebIDBServerConnection::cursorAdvance):
(WebKit::WebIDBServerConnection::cursorIterate):
(WebKit::WebIDBServerConnection::cursorPrefetchIteration):
(WebKit::WebIDBServerConnection::cursorPrefetchReset):
* WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:

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

6 years agoAdd argument coders for IDBDatabaseMetadata classes
beidson@apple.com [Thu, 21 Nov 2013 01:11:28 +0000 (01:11 +0000)]
Add argument coders for IDBDatabaseMetadata classes
https://bugs.webkit.org/show_bug.cgi?id=124689

Reviewed by Anders Carlsson.

Add coders for:
  - IDBDatabaseMetadata
  - IDBIndexMetadata
  - IDBKeyPath
  - IDBObjectStoreMetadata

* Shared/WebCoreArgumentCoders.cpp:
(CoreIPC::::encode):
(CoreIPC::::decode):
* Shared/WebCoreArgumentCoders.h:

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

6 years agoClear TemplateContentDocumentFragment::m_host when HTMLTemplateElement is destroyed
rniwa@webkit.org [Thu, 21 Nov 2013 01:07:19 +0000 (01:07 +0000)]
Clear TemplateContentDocumentFragment::m_host when HTMLTemplateElement is destroyed
https://bugs.webkit.org/show_bug.cgi?id=122806

Reviewed by Antti Koivisto.

Source/WebCore:

Merge https://chromium.googlesource.com/chromium/blink/+/858ed5f6341de9d900768c1f4668fcfce870c52e

The document fragment of a template element outlives the element itself.
Clear the host property on the document fragment when that happens.

Test: fast/dom/HTMLTemplateElement/content-outlives-template-crash.html

* dom/TemplateContentDocumentFragment.h:
* html/HTMLTemplateElement.cpp:
(WebCore::HTMLTemplateElement::~HTMLTemplateElement):
* html/HTMLTemplateElement.h:

LayoutTests:

* fast/dom/HTMLTemplateElement/content-outlives-template-crash-expected.txt: Added.
* fast/dom/HTMLTemplateElement/content-outlives-template-crash.html: Added.

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

6 years agoDelete baseline optimizer
commit-queue@webkit.org [Thu, 21 Nov 2013 00:54:05 +0000 (00:54 +0000)]
Delete baseline optimizer
https://bugs.webkit.org/show_bug.cgi?id=122333

Patch by Jozsef Berta <jberta@inf.u-szeged.hu> on 2013-11-20
Reviewed by Ryosuke Niwa.

* Scripts/webkitpy/common/checkout/baselineoptimizer.py: Removed.
* Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py: Removed.
* Scripts/webkitpy/tool/commands/rebaseline.py:
(RebaselineTest.execute):
(AbstractParallelRebaselineCommand._files_to_add):
(AbstractParallelRebaselineCommand._rebaseline):
* Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
(TestRebaselineJson.test_rebaseline_all):
(TestRebaselineJson.test_rebaseline_debug):
(TestRebaselineExpectations.disabled_test_overrides_are_included_correctly):

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

6 years ago[Win] JavaScript JIT crash (with DFG enabled).
msaboff@apple.com [Thu, 21 Nov 2013 00:42:38 +0000 (00:42 +0000)]
[Win] JavaScript JIT crash (with DFG enabled).
https://bugs.webkit.org/show_bug.cgi?id=124675

Reviewed by Geoffrey Garen.

Similar to the change in r159427, changed linkClosureCall to use regT0/regT1 (payload/tag) for the callee.
linkForThunkGenerator already expected the callee in regT0/regT1, but changed the comment to reflect that.

* jit/Repatch.cpp:
(JSC::linkClosureCall):
* jit/ThunkGenerators.cpp:
(JSC::linkForThunkGenerator):

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

6 years agoAX: Implement CSS -webkit-alt property (text alternative for generated content pseudo...
cfleizach@apple.com [Thu, 21 Nov 2013 00:28:14 +0000 (00:28 +0000)]
AX: Implement CSS -webkit-alt property (text alternative for generated content pseudo-elements ::before and ::after)
https://bugs.webkit.org/show_bug.cgi?id=120188

Reviewed by Dean Jackson.

Source/WebCore:

Add a -webkit-alt CSS property that can be used to label Image content or Text content for accessibility clients.

To accomplish this, it sets the string in the RenderStyle. Then when the ContentData creates an anonymous renderer,
it sets that string on the TextFragment or RenderImage, which can be queried by accessibility code.

Test: platform/mac/accessibility/webkit-alt-for-css-content.html

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::alternativeText):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::textUnderElement):
(WebCore::objectInclusionFromAltText):
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::altTextToCSSValue):
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSParser.cpp:
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseAlt):
* css/CSSParser.h:
* css/CSSPropertyNames.in:
* css/StyleResolver.cpp:
(WebCore::StyleResolver::applyProperty):
* rendering/RenderImage.h:
(WebCore::RenderImage::altText):
(WebCore::RenderImage::setAltText):
* rendering/RenderTextFragment.h:
* rendering/style/ContentData.cpp:
(WebCore::ImageContentData::createRenderer):
(WebCore::TextContentData::createRenderer):
* rendering/style/ContentData.h:
(WebCore::ContentData::setAltText):
(WebCore::ContentData::altText):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::setContent):
(WebCore::RenderStyle::setContentAltText):
(WebCore::RenderStyle::contentAltText):
* rendering/style/RenderStyle.h:
* rendering/style/StyleRareNonInheritedData.h:

LayoutTests:

* platform/mac/accessibility/webkit-alt-for-css-content-expected.txt: Added.
* platform/mac/accessibility/webkit-alt-for-css-content.html: Added.

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

6 years agoUse compile flag SH_UNFOLD_SHORT_CIRCUIT when compiling shaders.
roger_fong@apple.com [Thu, 21 Nov 2013 00:05:31 +0000 (00:05 +0000)]
Use compile flag SH_UNFOLD_SHORT_CIRCUIT when compiling shaders.
https://bugs.webkit.org/show_bug.cgi?id=124684.

Reviewed by Brent Fulgham.

Existing test webgl/1.0.2/conformance/glsl/misc/shader-with-short-circuiting-operators.html

* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::getTranslatedShaderSourceANGLE):

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

6 years agoUnreviewed. Updated expected result following
dino@apple.com [Wed, 20 Nov 2013 23:55:08 +0000 (23:55 +0000)]
Unreviewed. Updated expected result following
https://bugs.webkit.org/show_bug.cgi?id=124666

* platform/mac/fast/block/margin-collapse/empty-clear-blocks-expected.png:
* platform/mac/fast/block/margin-collapse/empty-clear-blocks-expected.txt:

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

6 years ago[curl] Improve detecting and handling of SSL related errors
commit-queue@webkit.org [Wed, 20 Nov 2013 23:25:38 +0000 (23:25 +0000)]
[curl] Improve detecting and handling of SSL related errors
https://bugs.webkit.org/show_bug.cgi?id=119436

Patch by Robert Sipka <sipka@inf.u-szeged.hu> on 2013-11-20
Reviewed by Brent Fulgham.

Set the exact SSL verification error on CURL
and store the enabled domain with certificate.

* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleInternal.h:
(WebCore::ResourceHandleInternal::ResourceHandleInternal):
* platform/network/curl/ResourceError.h:
(WebCore::ResourceError::ResourceError):
(WebCore::ResourceError::sslErrors):
(WebCore::ResourceError::setSSLErrors):
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::setHostAllowsAnyHTTPSCertificate):
* platform/network/curl/ResourceHandleManager.cpp:
(WebCore::ResourceHandleManager::downloadTimerCallback):
(WebCore::ResourceHandleManager::initializeHandle):
* platform/network/curl/SSLHandle.cpp: Added.
(WebCore::allowsAnyHTTPSCertificateHosts):
(WebCore::sslIgnoreHTTPSCertificate):
(WebCore::sslCertificateFlag):
(WebCore::pemData):
(WebCore::certVerifyCallback):
(WebCore::sslctxfun):
(WebCore::setSSLVerifyOptions):
* platform/network/curl/SSLHandle.h: Added.

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

6 years agoEnable PageLoadTest assertions again
andersca@apple.com [Wed, 20 Nov 2013 23:22:37 +0000 (23:22 +0000)]
Enable PageLoadTest assertions again
https://bugs.webkit.org/show_bug.cgi?id=124681

Reviewed by Tim Horton.

Source/WebKit2:

Remove an overzealous assertion and re-enable assertions in PageLoadState again.

* UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::didCommitLoad):
Remove assertion - it's fine for a page to have a null URL.

(WebKit::PageLoadState::didFinishLoad):
Ditto.

(WebKit::PageLoadState::didFailLoad):
Update the state.

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
Actually install all-content-in-one-iframe.html, noticed while debugging this assertion.

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

6 years ago[css shapes] Parse new circle shape syntax
bjonesbe@adobe.com [Wed, 20 Nov 2013 22:55:20 +0000 (22:55 +0000)]
[css shapes] Parse new circle shape syntax
https://bugs.webkit.org/show_bug.cgi?id=124618

Reviewed by Antti Koivisto.

Source/WebCore:

Implement parsing of the new cicle shape syntax. The implementation of
the old syntax has been move aside as deprecated, and will be removed
once the new syntax is stable.

Updated existing parsing tests to cover this.

* css/BasicShapeFunctions.cpp:
(WebCore::valueForCenterCoordinate): Create a CSSPrimitiveValue from a
    BasicShapeCenterCoordinate.
(WebCore::valueForBasicShape): Convert new basic shape and rename old
    one.
(WebCore::convertToCenterCoordinate): Create a
    BasicShapeCenterCoordinate from a CSSPrimitiveValue.
(WebCore::basicShapeForValue): Convert new shape value and rename old
    one.
* css/CSSBasicShapes.cpp:
(WebCore::buildCircleString): Build a new circle string.
(WebCore::CSSBasicShapeCircle::cssText): Serialize the new circle
    shape.
(WebCore::CSSBasicShapeCircle::equals): Compare new circle shapes.
(WebCore::CSSBasicShapeCircle::serializeResolvingVariables):
* css/CSSBasicShapes.h:
(WebCore::CSSBasicShapeCircle::CSSBasicShapeCircle): Add class for new
    circle shape.
(WebCore::CSSDeprecatedBasicShapeCircle::create): Renamed to move out
    of the way of the new circle implementation.
(WebCore::CSSDeprecatedBasicShapeCircle::centerX): Ditto.
(WebCore::CSSDeprecatedBasicShapeCircle::centerY): Ditto.
(WebCore::CSSDeprecatedBasicShapeCircle::radius): Ditto.
(WebCore::CSSDeprecatedBasicShapeCircle::setCenterX): Ditto.
(WebCore::CSSDeprecatedBasicShapeCircle::setCenterY): Ditto.
(WebCore::CSSDeprecatedBasicShapeCircle::setRadius): Ditto.
(WebCore::CSSDeprecatedBasicShapeCircle::CSSDeprecatedBasicShapeCircle): Ditto.
* css/CSSParser.cpp:
(WebCore::CSSParser::parseShapeRadius): Parse the radius for the new
    circle syntax. Will also be used by the new ellipse syntax.
(WebCore::CSSParser::parseBasicShapeCircle): Parse the new circle
    syntax.
(WebCore::CSSParser::parseDeprecatedBasicShapeCircle): Rename to make
    way for the new implementation.
(WebCore::isDeprecatedBasicShape): Check if we have a new circle or an
    old circle.
(WebCore::CSSParser::parseBasicShape): Update to parse the new circle
    syntax.
* css/CSSParser.h:
* css/CSSValueKeywords.in: Add support for the new circle keywords.
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createShape):
* rendering/style/BasicShapes.cpp: Deprecate old circle and add stub
    for layout code.
(WebCore::DeprecatedBasicShapeCircle::path): Rename to make way for
    the new implementation.
(WebCore::DeprecatedBasicShapeCircle::blend): Rename to make way for
    the new implementation.
(WebCore::BasicShapeCircle::path): Create path for new circle shape.
(WebCore::BasicShapeCircle::blend): Interpolate the new circle shape.
* rendering/style/BasicShapes.h:
(WebCore::BasicShapeCenterCoordinate::BasicShapeCenterCoordinate):
    Represent an x or y coordinate for the center of a new circle,
    since it can be either a keyword along with an offset that cannot
    be resolved until layout time or an ordinary Length. This will
    also be used by the new ellipse implementation.
(WebCore::BasicShapeCenterCoordinate::keyword):
(WebCore::BasicShapeCenterCoordinate::length):
(WebCore::BasicShapeCenterCoordinate::blend): Interpolate.
(WebCore::BasicShapeRadius::BasicShapeRadius): Represent the radius of
    a new circle shape since it can either be a straightforward Length or
    a keyword that cannot be resolved until layout time.
(WebCore::BasicShapeRadius::value):
(WebCore::BasicShapeRadius::type):
(WebCore::BasicShapeRadius::blend): Interpolate.
(WebCore::BasicShapeCircle::centerX):
(WebCore::BasicShapeCircle::centerY):
(WebCore::BasicShapeCircle::radius):
(WebCore::BasicShapeCircle::setCenterX):
(WebCore::BasicShapeCircle::setCenterY):
(WebCore::BasicShapeCircle::setRadius):
(WebCore::BasicShapeCircle::BasicShapeCircle): New circle class.
(WebCore::DeprecatedBasicShapeCircle::create): Rename to make room for
    new circle implementation.
(WebCore::DeprecatedBasicShapeCircle::DeprecatedBasicShapeCircle): Ditto.

LayoutTests:

Test that the new circle shape syntax is properly parsed.

* fast/shapes/parsing/parsing-shape-inside-expected.txt:
* fast/shapes/parsing/parsing-shape-outside-expected.txt:
* fast/shapes/parsing/parsing-test-utils.js:
* fast/masking/parsing-clip-path-shape-expected.txt:
* fast/masking/parsing-clip-path-shape.html:

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

6 years agoPageLoadState should keep track of unreachable URLs
andersca@apple.com [Wed, 20 Nov 2013 22:22:13 +0000 (22:22 +0000)]
PageLoadState should keep track of unreachable URLs
https://bugs.webkit.org/show_bug.cgi?id=124677

Reviewed by Dan Bernstein.

* UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::reset):
(WebKit::PageLoadState::didStartProvisionalLoad):
(WebKit::PageLoadState::didFailProvisionalLoad):
(WebKit::PageLoadState::setUnreachableURL):
* UIProcess/PageLoadState.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadAlternateHTMLString):

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

6 years ago[CSS Shapes] Add BoxShape and FloatRoundingRect classes
hmuller@adobe.com [Wed, 20 Nov 2013 22:21:52 +0000 (22:21 +0000)]
[CSS Shapes] Add BoxShape and FloatRoundingRect classes
https://bugs.webkit.org/show_bug.cgi?id=124368

Reviewed by Dean Jackson.

Added the BoxShape class. It's now used to represent shape-outside box
values: [margin/border/padding/content]-box. BoxShape depends on a new
FloatRoundedRect class, which is a float analog of the existing (int)
RoundedRect class. The FloatRoundedRect class contains the same basic
methods and accessors as BorderRect and adds a set of four methods,
for example topLeftCorner(), that return a FloatRect that represents the
bounds of one elliptical corner. I also added a method, xInterceptsAtY()
that returns two X coordinates of the intersection between a horizontal
line and the rounded rectangle.

No new tests, this is just an internal refactoring.

* CMakeLists.txt:
* GNUmakefile.list.am:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/FloatRoundedRect.cpp: Added.
(WebCore::FloatRoundedRect::FloatRoundedRect):
(WebCore::FloatRoundedRect::Radii::isZero):
(WebCore::FloatRoundedRect::Radii::scale):
(WebCore::FloatRoundedRect::Radii::expand):
(WebCore::cornerRectIntercept):
(WebCore::FloatRoundedRect::xInterceptsAtY):
* platform/graphics/FloatRoundedRect.h: Added.
(WebCore::FloatRoundedRect::Radii::Radii):
(WebCore::FloatRoundedRect::Radii::setTopLeft):
(WebCore::FloatRoundedRect::Radii::setTopRight):
(WebCore::FloatRoundedRect::Radii::setBottomLeft):
(WebCore::FloatRoundedRect::Radii::setBottomRight):
(WebCore::FloatRoundedRect::Radii::topLeft):
(WebCore::FloatRoundedRect::Radii::topRight):
(WebCore::FloatRoundedRect::Radii::bottomLeft):
(WebCore::FloatRoundedRect::Radii::bottomRight):
(WebCore::FloatRoundedRect::Radii::expand):
(WebCore::FloatRoundedRect::Radii::shrink):
(WebCore::FloatRoundedRect::rect):
(WebCore::FloatRoundedRect::radii):
(WebCore::FloatRoundedRect::isRounded):
(WebCore::FloatRoundedRect::isEmpty):
(WebCore::FloatRoundedRect::setRect):
(WebCore::FloatRoundedRect::setRadii):
(WebCore::FloatRoundedRect::move):
(WebCore::FloatRoundedRect::inflate):
(WebCore::FloatRoundedRect::expandRadii):
(WebCore::FloatRoundedRect::shrinkRadii):
(WebCore::FloatRoundedRect::topLeftCorner):
(WebCore::FloatRoundedRect::topRightCorner):
(WebCore::FloatRoundedRect::bottomLeftCorner):
(WebCore::FloatRoundedRect::bottomRightCorner):
(WebCore::operator==):
* rendering/shapes/BoxShape.cpp: Added.
(WebCore::BoxShape::BoxShape):
(WebCore::BoxShape::getExcludedIntervals):
(WebCore::BoxShape::getIncludedIntervals):
(WebCore::BoxShape::firstIncludedIntervalLogicalTop):
* rendering/shapes/BoxShape.h: Added.
* rendering/shapes/Shape.cpp:
(WebCore::createBoxShape):
(WebCore::Shape::createShape):

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

6 years agoRemote Layer Tree: 100% repro crasher on the IPC thread when creating lots of layers
timothy_horton@apple.com [Wed, 20 Nov 2013 21:44:23 +0000 (21:44 +0000)]
Remote Layer Tree: 100% repro crasher on the IPC thread when creating lots of layers
https://bugs.webkit.org/show_bug.cgi?id=124643

Reviewed by Anders Carlsson.

* Platform/CoreIPC/mac/ConnectionMac.cpp:
(CoreIPC::Connection::sendOutgoingMessage):
Dynamically allocate storage for the message if needed.

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

6 years agomachMessageSize uses sizeof(mach_msg_ool_ports_descriptor_t) for out-of-line *memory*
timothy_horton@apple.com [Wed, 20 Nov 2013 21:29:10 +0000 (21:29 +0000)]
machMessageSize uses sizeof(mach_msg_ool_ports_descriptor_t) for out-of-line *memory*
https://bugs.webkit.org/show_bug.cgi?id=124644

Reviewed by Anders Carlsson.

* Platform/CoreIPC/mac/ConnectionMac.cpp:
(CoreIPC::machMessageSize):
mach_msg_ool_descriptor_t is the correct type, given that
out-of-line memory descriptors use the mach_msg_ool_descriptor_t
member of the mach_msg_descriptor_t union.

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

6 years agohttps://bugs.webkit.org/show_bug.cgi?id=124637
dino@apple.com [Wed, 20 Nov 2013 21:24:09 +0000 (21:24 +0000)]
https://bugs.webkit.org/show_bug.cgi?id=124637

Unreviewed. Adding HTMLTemplateElement to global constructor
test, but this time for more platforms. I'm not sure if
GTK and EFL need this too.

* platform/mac-mountainlion/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:
* platform/win/js/dom/global-constructors-attributes-expected.txt:

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

6 years agoSimple line layout should support floats
antti@apple.com [Wed, 20 Nov 2013 21:23:19 +0000 (21:23 +0000)]
Simple line layout should support floats
https://bugs.webkit.org/show_bug.cgi?id=124666

Reviewed by Dave Hyatt.

Source/WebCore:

Tests: fast/text/simple-lines-float-compare.html
       fast/text/simple-lines-float.html

* rendering/line/LineWidth.h:
(WebCore::LineWidth::logicalLeftOffset):

    Expose the left offset so we don't need to recompute it.

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseFor):
(WebCore::SimpleLineLayout::computeLineLeft):

    Include the left offset from floats.

(WebCore::SimpleLineLayout::createTextRuns):

    Keep the flow height updated during the loop as LineWidth reads the current position from there.

* rendering/SimpleLineLayoutResolver.h:
(WebCore::SimpleLineLayout::RunResolver::Run::rect):
(WebCore::SimpleLineLayout::RunResolver::Run::baseline):
(WebCore::SimpleLineLayout::RunResolver::RunResolver):
(WebCore::SimpleLineLayout::RunResolver::lineIndexForHeight):

    We now bake the border and the padding to the line left offset. No need to add it during resolve.

LayoutTests:

* fast/text/simple-lines-float-compare-expected.html: Added.
* fast/text/simple-lines-float-compare.html: Added.
* fast/text/simple-lines-float-expected.html: Added.
* fast/text/simple-lines-float.html: Added.

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

6 years agoUse std::function callbacks in CryptoAlgorithm instead of JS promises
ap@apple.com [Wed, 20 Nov 2013 21:18:26 +0000 (21:18 +0000)]
Use std::function callbacks in CryptoAlgorithm instead of JS promises
https://bugs.webkit.org/show_bug.cgi?id=124673

Reviewed by Anders Carlsson.

To implement key wrapping/unwrapping, we'll need to chain existing operations.
It's much easier to do with C++ callbacks than with functions fulfilling JS
promises directly.

Also, this will decouple CryptoAlgorithm from JS, which is nice.

SubtleCrypto IDL says that all functions return Promise<any>, but in reality,
there is very little polymorphism, the only function whose return type depends
on algorithm is generateKey (it can create a Key or a KeyPair).

* bindings/js/JSDOMPromise.cpp:
(WebCore::PromiseWrapper::PromiseWrapper):
(WebCore::PromiseWrapper::operator=):
* bindings/js/JSDOMPromise.h:
Made it copyable, as each crypto function wraps the promise in success and failure
functional objects now.

* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::JSSubtleCrypto::encrypt):
(WebCore::JSSubtleCrypto::decrypt):
(WebCore::JSSubtleCrypto::sign):
(WebCore::JSSubtleCrypto::verify):
(WebCore::JSSubtleCrypto::digest):
(WebCore::JSSubtleCrypto::generateKey):
(WebCore::JSSubtleCrypto::importKey):
(WebCore::JSSubtleCrypto::exportKey):
* crypto/CryptoAlgorithm.cpp:
(WebCore::CryptoAlgorithm::encrypt):
(WebCore::CryptoAlgorithm::decrypt):
(WebCore::CryptoAlgorithm::sign):
(WebCore::CryptoAlgorithm::verify):
(WebCore::CryptoAlgorithm::digest):
(WebCore::CryptoAlgorithm::generateKey):
(WebCore::CryptoAlgorithm::deriveKey):
(WebCore::CryptoAlgorithm::deriveBits):
(WebCore::CryptoAlgorithm::importKey):
* crypto/CryptoAlgorithm.h:
* crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::sign):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::verify):
* crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
(WebCore::CryptoAlgorithmAES_CBC::generateKey):
(WebCore::CryptoAlgorithmAES_CBC::importKey):
* crypto/algorithms/CryptoAlgorithmAES_CBC.h:
* crypto/algorithms/CryptoAlgorithmHMAC.cpp:
(WebCore::CryptoAlgorithmHMAC::generateKey):
(WebCore::CryptoAlgorithmHMAC::importKey):
* crypto/algorithms/CryptoAlgorithmHMAC.h:
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
* crypto/algorithms/CryptoAlgorithmSHA1.cpp:
(WebCore::CryptoAlgorithmSHA1::digest):
* crypto/algorithms/CryptoAlgorithmSHA1.h:
* crypto/algorithms/CryptoAlgorithmSHA224.cpp:
(WebCore::CryptoAlgorithmSHA224::digest):
* crypto/algorithms/CryptoAlgorithmSHA224.h:
* crypto/algorithms/CryptoAlgorithmSHA256.cpp:
(WebCore::CryptoAlgorithmSHA256::digest):
* crypto/algorithms/CryptoAlgorithmSHA256.h:
* crypto/algorithms/CryptoAlgorithmSHA384.cpp:
(WebCore::CryptoAlgorithmSHA384::digest):
* crypto/algorithms/CryptoAlgorithmSHA384.h:
* crypto/algorithms/CryptoAlgorithmSHA512.cpp:
(WebCore::CryptoAlgorithmSHA512::digest):
* crypto/algorithms/CryptoAlgorithmSHA512.h:
* crypto/keys/CryptoKeyRSA.h:
* crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:
(WebCore::transformAES_CBC):
(WebCore::CryptoAlgorithmAES_CBC::encrypt):
(WebCore::CryptoAlgorithmAES_CBC::decrypt):
* crypto/mac/CryptoAlgorithmHMACMac.cpp:
(WebCore::CryptoAlgorithmHMAC::sign):
(WebCore::CryptoAlgorithmHMAC::verify):
* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::CryptoKeyRSA::generatePair):

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

6 years agoARMv7: Crash due to use after free of AssemblerBuffer
msaboff@apple.com [Wed, 20 Nov 2013 21:15:18 +0000 (21:15 +0000)]
ARMv7: Crash due to use after free of AssemblerBuffer
https://bugs.webkit.org/show_bug.cgi?id=124611

Reviewed by Geoffrey Garen.

Changed JITFinalizer constructor to take a MacroAssemblerCodePtr instead of a Label.
In finalizeFunction(), we use that value instead of calculating it from the label.

* assembler/MacroAssembler.cpp:
* dfg/DFGJITFinalizer.cpp:
(JSC::DFG::JITFinalizer::JITFinalizer):
(JSC::DFG::JITFinalizer::finalizeFunction):
* dfg/DFGJITFinalizer.h:

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

6 years agoRemove some obsolete logic from WebKit.app.
mrowe@apple.com [Wed, 20 Nov 2013 21:02:42 +0000 (21:02 +0000)]
Remove some obsolete logic from WebKit.app.

Reviewed by Alexey Proskuryakov.

* WebKitLauncher/WebKitNightlyEnabler.m:
(poseAsWebKitApp): Remove a pre-10.6 codepath.
(enableWebKitNightlyBehaviour): Remove a 10.4-specific codepath.

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

6 years agoREGRESSION(r127163): Respect clearance set on ancestors when placing floats
robert@webkit.org [Wed, 20 Nov 2013 19:26:10 +0000 (19:26 +0000)]
REGRESSION(r127163): Respect clearance set on ancestors when placing floats
https://bugs.webkit.org/show_bug.cgi?id=119979

Reviewed by David Hyatt.

Source/WebCore:

Refactor the way self-collapsing blocks with clearance are positioned so that they
get the correct logical-top position during margin-collapsing.

Test: fast/block/margin-collapse/self-collapsing-block-with-float-descendants.html

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::clearFloats):
(WebCore::RenderBlockFlow::marginOffsetForSelfCollapsingBlock):
(WebCore::RenderBlockFlow::collapseMargins):
(WebCore::RenderBlockFlow::clearFloatsIfNeeded):
(WebCore::RenderBlockFlow::handleAfterSideOfBlock):
* rendering/RenderBlockFlow.h:

LayoutTests:

* fast/block/float/clear-negative-margin-top-expected.html:
* fast/block/float/clear-negative-margin-top.html:
* fast/block/margin-collapse/self-collapsing-block-with-float-descendants-expected.html: Added.
* fast/block/margin-collapse/self-collapsing-block-with-float-descendants.html: Added.
* platform/mac/fast/block/float/024-expected.txt:
* platform/mac/fast/block/margin-collapse/025-expected.txt:
* platform/mac/fast/block/margin-collapse/block-inside-inline/025-expected.txt:
* platform/mac/fast/block/margin-collapse/empty-clear-blocks-expected.txt:

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

6 years agohttps://bugs.webkit.org/show_bug.cgi?id=124637
dino@apple.com [Wed, 20 Nov 2013 19:03:04 +0000 (19:03 +0000)]
https://bugs.webkit.org/show_bug.cgi?id=124637

Unreviewed. Adding HTMLTemplateElement to global constructor
test after r159550.

* js/dom/global-constructors-attributes-expected.txt:

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

6 years agoUnreviewed. Trying to fix tests added in r159545.
dino@apple.com [Wed, 20 Nov 2013 18:57:11 +0000 (18:57 +0000)]
Unreviewed. Trying to fix tests added in r159545.

* js/regress/global-var-const-infer-fire-from-opt.html:
* js/regress/global-var-const-infer.html:

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

6 years ago[GTK] Remove Chromium as user agent and claim to be Safari in OS X
vjaquez@igalia.com [Wed, 20 Nov 2013 18:44:01 +0000 (18:44 +0000)]
[GTK] Remove Chromium as user agent and claim to be Safari in OS X
https://bugs.webkit.org/show_bug.cgi?id=124229

Reviewed by Martin Robinson.

http://www.duolingo.com/ doesn't get render correctly because it uses
Chrome/Chromium specific variables, added after it was forked. Because
of this, it is necessary to remove the Chrome/Chromium identification
in the user agent. Also, from now on, by default, The GTK+ port will
claim to be Safari in OS X to avoid loading wrong resources.

* platform/gtk/UserAgentGtk.cpp:
(WebCore::standardUserAgent):

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

6 years agoFix CPU(ARM_TRADITIONAL) build after r159545.
commit-queue@webkit.org [Wed, 20 Nov 2013 18:32:37 +0000 (18:32 +0000)]
Fix CPU(ARM_TRADITIONAL) build after r159545.
https://bugs.webkit.org/show_bug.cgi?id=124649

Patch by Julien Brianceau <jbriance@cisco.com> on 2013-11-20
Reviewed by Michael Saboff.

Add missing memoryFence, load8 and store8 implementations in macro assembler.

* assembler/ARMAssembler.h:
(JSC::ARMAssembler::dmbSY):
* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::load8):
(JSC::MacroAssemblerARM::store8):
(JSC::MacroAssemblerARM::memoryFence):

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

6 years agoUnreviewed, rolling out r159551.
commit-queue@webkit.org [Wed, 20 Nov 2013 18:26:34 +0000 (18:26 +0000)]
Unreviewed, rolling out r159551.
http://trac.webkit.org/changeset/159551
https://bugs.webkit.org/show_bug.cgi?id=124669

made many tests asserts (Requested by anttik on #webkit).

* html/HTMLDetailsElement.h:
* html/HTMLMediaElement.cpp:
(HTMLMediaElement::selectNextSourceChild):
* html/HTMLMetaElement.h:
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::shouldAllowQuickTimeClassIdQuirk):
* html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::isDisabledFormControl):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::updateWidgetCallback):
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::detailsElement):
* html/HTMLSummaryElement.h:
* html/HTMLTableCaptionElement.h:
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::caption):
(WebCore::HTMLTableElement::tHead):
(WebCore::HTMLTableElement::tFoot):
(WebCore::HTMLTableElement::lastBody):
* html/HTMLTableRowElement.cpp:
(WebCore::HTMLTableRowElement::rowIndex):
* html/HTMLTableSectionElement.h:
* html/HTMLTagNames.in:
* html/MediaDocument.cpp:
(WebCore::MediaDocumentParser::createDocumentStructure):
* html/shadow/DetailsMarkerControl.cpp:
(WebCore::DetailsMarkerControl::summaryElement):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::handleFallbackContent):
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::dispatchPendingBeforeLoadEvent):
* page/DragController.cpp:
(WebCore::DragController::canProcessDrag):
* page/Frame.cpp:
(WebCore::Frame::searchForLabelsBeforeElement):
* page/SpatialNavigation.cpp:
(WebCore::frameOwnerElement):

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

6 years agoMove LineWidth.{h,cpp} into rendering/line
zoltan@webkit.org [Wed, 20 Nov 2013 18:24:27 +0000 (18:24 +0000)]
Move LineWidth.{h,cpp} into rendering/line
<https://webkit.org/b/124448>

Reviewed by David Hyatt.

In r159354 I introduced line directory. Now it's time to move the helper classes of RenderBlockLineLayout into 'line' subdirectory.

No new tests, no behavior change.

* CMakeLists.txt:
* GNUmakefile.list.am:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* rendering/line/LineWidth.cpp: Renamed from Source/WebCore/rendering/LineWidth.cpp.
(WebCore::LineWidth::LineWidth):
(WebCore::LineWidth::fitsOnLine):
(WebCore::LineWidth::fitsOnLineIncludingExtraWidth):
(WebCore::LineWidth::fitsOnLineExcludingTrailingWhitespace):
(WebCore::LineWidth::updateAvailableWidth):
(WebCore::LineWidth::shrinkAvailableWidthForNewFloatIfNeeded):
(WebCore::LineWidth::commit):
(WebCore::LineWidth::applyOverhang):
(WebCore::LineWidth::fitBelowFloats):
(WebCore::LineWidth::setTrailingWhitespaceWidth):
(WebCore::LineWidth::updateCurrentShapeSegment):
(WebCore::LineWidth::computeAvailableWidthFromLeftAndRight):
(WebCore::LineWidth::fitsOnLineExcludingTrailingCollapsedWhitespace):
* rendering/line/LineWidth.h: Renamed from Source/WebCore/rendering/LineWidth.h.
(WebCore::LineWidth::currentWidth):
(WebCore::LineWidth::uncommittedWidth):
(WebCore::LineWidth::committedWidth):
(WebCore::LineWidth::availableWidth):
(WebCore::LineWidth::addUncommittedWidth):
(WebCore::LineWidth::shouldIndentText):

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

6 years agoAlphabetization followup to r159567
beidson@apple.com [Wed, 20 Nov 2013 18:09:05 +0000 (18:09 +0000)]
Alphabetization followup to r159567

Reviewed by style-bot  :(

* Modules/indexeddb/IDBDatabaseBackend.h:
* Modules/indexeddb/IDBIndex.h:
* Modules/indexeddb/IDBObjectStore.h:
* Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:
* Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h:
* inspector/InspectorIndexedDBAgent.cpp:

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

6 years agoRename IDBMetadata.h to IDBDatabaseMetadata.h
beidson@apple.com [Wed, 20 Nov 2013 18:02:48 +0000 (18:02 +0000)]
Rename IDBMetadata.h to IDBDatabaseMetadata.h
https://bugs.webkit.org/show_bug.cgi?id=124668

Reviewed by Dean Jackson.

* GNUmakefile.list.am:
* WebCore.xcodeproj/project.pbxproj:

* Modules/indexeddb/IDBDatabase.h:
* Modules/indexeddb/IDBDatabaseBackend.h:

* Modules/indexeddb/IDBDatabaseMetadata.h: Renamed from Source/WebCore/Modules/indexeddb/IDBMetadata.h.
(WebCore::IDBIndexMetadata::IDBIndexMetadata):
(WebCore::IDBObjectStoreMetadata::IDBObjectStoreMetadata):
(WebCore::IDBDatabaseMetadata::IDBDatabaseMetadata):

* Modules/indexeddb/IDBIndex.h:
* Modules/indexeddb/IDBObjectStore.h:
* Modules/indexeddb/IDBServerConnection.h:
* Modules/indexeddb/IDBTransaction.h:
* Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:
* Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h:
* Modules/indexeddb/leveldb/IDBIndexWriterLevelDB.h:
* inspector/InspectorIndexedDBAgent.cpp:

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

6 years agoRemove bogus assertions in updateNameForTreeScope and updateNameForDocument
rniwa@webkit.org [Wed, 20 Nov 2013 17:57:45 +0000 (17:57 +0000)]
Remove bogus assertions in updateNameForTreeScope and updateNameForDocument
https://bugs.webkit.org/show_bug.cgi?id=124639

Reviewed by Darin Adler.

Removed assertions. We can't assert that the element in a tree scope or a document
since these two functions are called from removedFrom.

* dom/Element.cpp:
(WebCore::Element::updateNameForTreeScope):
(WebCore::Element::updateNameForDocument):

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

6 years agoUnreviewed EFL gardening
m.pakula@samsung.com [Wed, 20 Nov 2013 17:02:57 +0000 (17:02 +0000)]
Unreviewed EFL gardening

* platform/efl/TestExpectations: Add new test expectations for failing tests.

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

6 years ago[armv7][arm64] Speculative build fix after r159545.
commit-queue@webkit.org [Wed, 20 Nov 2013 16:02:43 +0000 (16:02 +0000)]
[armv7][arm64] Speculative build fix after r159545.
https://bugs.webkit.org/show_bug.cgi?id=124646

Patch by Julien Brianceau <jbriance@cisco.com> on 2013-11-20
Reviewed by Filip Pizlo.

* assembler/ARMv7Assembler.h:
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::memoryFence):
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::memoryFence):

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

6 years agoCleanup getOrEstablishIDBDatabaseMetadata and stub it out in WK2
beidson@apple.com [Wed, 20 Nov 2013 16:00:11 +0000 (16:00 +0000)]
Cleanup getOrEstablishIDBDatabaseMetadata and stub it out in WK2
https://bugs.webkit.org/show_bug.cgi?id=124635

Reviewed by Tim Horton.

Source/WebCore:

getOrEstablishIDBDatabaseMetadata() should not have to take a database name parameter because the
server connection should already know what database name it represents.

* Modules/indexeddb/IDBDatabaseBackend.cpp:
(WebCore::IDBDatabaseBackend::openInternalAsync):

* Modules/indexeddb/IDBServerConnection.h:
* Modules/indexeddb/leveldb/IDBServerConnectionLevelDB.cpp:
(WebCore::IDBServerConnectionLevelDB::IDBServerConnectionLevelDB):
(WebCore::IDBServerConnectionLevelDB::getOrEstablishIDBDatabaseMetadata):
* Modules/indexeddb/leveldb/IDBServerConnectionLevelDB.h:

* Modules/indexeddb/leveldb/IDBFactoryBackendLevelDB.cpp:
(WebCore::IDBFactoryBackendLevelDB::deleteDatabase):
(WebCore::IDBFactoryBackendLevelDB::open):

Source/WebKit2:

Stub out the message for getOrEstablishIDBDatabaseMetadata in the DatabaseProcess.

* DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
(WebKit::DatabaseProcessIDBConnection::establishConnection):
(WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata):
* DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
* DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in:

* Shared/SecurityOriginData.cpp:
(WebKit::SecurityOriginData::fromSecurityOrigin):
* Shared/SecurityOriginData.h:

* WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
(WebKit::WebIDBServerConnection::WebIDBServerConnection):
(WebKit::WebIDBServerConnection::deleteDatabase):
(WebKit::WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata):
* WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:

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

6 years agoMoved stray urls from svn.py and statusserver.py into common.config.urls
commit-queue@webkit.org [Wed, 20 Nov 2013 15:49:15 +0000 (15:49 +0000)]
Moved stray urls from svn.py and statusserver.py into common.config.urls
https://bugs.webkit.org/show_bug.cgi?id=124650

Patch by Dániel Bátyai <Batyai.Daniel@stud.u-szeged.hu> on 2013-11-20
Reviewed by Ryosuke Niwa.

* Scripts/webkitpy/common/checkout/scm/svn.py:
(SVNRepository):
* Scripts/webkitpy/common/config/urls.py:
* Scripts/webkitpy/common/net/statusserver.py:
(StatusServer.__init__):
* Scripts/webkitpy/performance_tests/perftestsrunner.py:
(_generate_results_dict):

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

6 years ago[EFL] <video> and <audio> should be accessible.
commit-queue@webkit.org [Wed, 20 Nov 2013 15:44:49 +0000 (15:44 +0000)]
[EFL] <video> and <audio> should be accessible.
https://bugs.webkit.org/show_bug.cgi?id=124494

Patch by Andrzej Badowski <a.badowski@samsung.com> on 2013-11-20
Reviewed by Gyuyoung Kim.

Source/WebCore:

Adding descriptions of media-element controls.

* platform/efl/LocalizedStringsEfl.cpp:
(WebCore::localizedMediaControlElementString):

LayoutTests:

Added new accessibility baseline for accessibility/media-elemen.html.

* platform/efl-wk1/TestExpectations: test is no longer failing.
* platform/efl-wk2/TestExpectations: test is no longer failing.
* platform/efl/accessibility/media-element-expected.txt: Added.

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

6 years agoDon't paint simple text runs outside the paint rect
antti@apple.com [Wed, 20 Nov 2013 15:14:00 +0000 (15:14 +0000)]
Don't paint simple text runs outside the paint rect
https://bugs.webkit.org/show_bug.cgi?id=124651

Reviewed by Anders Carlsson.

This speeds up partial paints for long text paragraphs.
Also add the same optimization for hit testing.

* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::paintFlow):

    Iterate over the run range that needs painting.

(WebCore::SimpleLineLayout::hitTestFlow):

    Iterate over the line range that needs painting.

* rendering/SimpleLineLayoutResolver.h:
(WebCore::SimpleLineLayout::Range::Range):
(WebCore::SimpleLineLayout::Range::begin):
(WebCore::SimpleLineLayout::Range::end):

    Add Range type.

(WebCore::SimpleLineLayout::RunResolver::Iterator::Iterator):
(WebCore::SimpleLineLayout::RunResolver::Iterator::operator++):
(WebCore::SimpleLineLayout::RunResolver::Iterator::advance):
(WebCore::SimpleLineLayout::RunResolver::Iterator::advanceLines):

    Optimize case where runCount==lineCount. In this case we can just directly jump
    to the right run/line.

(WebCore::SimpleLineLayout::RunResolver::begin):
(WebCore::SimpleLineLayout::RunResolver::end):
(WebCore::SimpleLineLayout::RunResolver::lineIndexForHeight):
(WebCore::SimpleLineLayout::RunResolver::rangeForRect):

    Get the range corresponding to a rect. This currently cares about y coordinates only.

(WebCore::SimpleLineLayout::LineResolver::Iterator::operator++):
(WebCore::SimpleLineLayout::LineResolver::Iterator::operator*):
(WebCore::SimpleLineLayout::LineResolver::rangeForRect):

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

6 years agoCannot animate "points" attribute for <svg:polygon>
graouts@apple.com [Wed, 20 Nov 2013 14:55:24 +0000 (14:55 +0000)]
Cannot animate "points" attribute for <svg:polygon>
https://bugs.webkit.org/show_bug.cgi?id=21371

Reviewed by Antti Koivisto.

Source/WebCore:

Ensure we use animated list of points for SVG <polygon> and <polyline> elements
when we build the path used to draw them, otherwise the animated changes won't
be rendered and the base value will be used.

Tests: svg/animations/polygon-set.svg
       svg/animations/polyline-set.svg

* rendering/svg/SVGPathData.cpp:
(WebCore::updatePathFromPolygonElement):
(WebCore::updatePathFromPolylineElement):

LayoutTests:

New tests covering the actual application of the animated value
for the "points" attribute of the SVG <polygon> and <polyline> elements.

* svg/animations/polygon-set-expected.svg: Added.
* svg/animations/polygon-set.svg: Added.
* svg/animations/polyline-set-expected.svg: Added.
* svg/animations/polyline-set.svg: Added.

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

6 years agoConfigurability test of prototype's properties in fast/dom/webidl-operations-on-node...
zandobersek@gmail.com [Wed, 20 Nov 2013 11:12:27 +0000 (11:12 +0000)]
Configurability test of prototype's properties in fast/dom/webidl-operations-on-node-prototype.html is wrong
https://bugs.webkit.org/show_bug.cgi?id=124602

Reviewed by Darin Adler.

The test case landed in r159100 checks, among other tests, for configurability of properties on the Node's
interface prototype object. The test deletes the tested property from the prototype object and checks that
the property is undefined. This works for the Node's prototype object but is not technically correct since
there might be a property with the same identifier that's located upwards on the prototype chain.

Rather than testing that the property on the prototype object is undefined after it is deleted, a failure
should be reported if the value of the property remains the same even after it's deleted from the object.

* fast/dom/webidl-operations-on-node-prototype.html:

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

6 years agoANGLE doesn't build with bison 3.0
commit-queue@webkit.org [Wed, 20 Nov 2013 10:35:16 +0000 (10:35 +0000)]
ANGLE doesn't build with bison 3.0
https://bugs.webkit.org/show_bug.cgi?id=124642

Patch by Sergio Correia <sergio.correia@openbossa.org> on 2013-11-20
Reviewed by Gyuyoung Kim.

This is a reedition of r154109, now that ANGLE source has been updated
in r159533.

* src/compiler/glslang.y: Use %lex-param to set YYLEX_PARAM and stop
using the deprecated YYID macro.

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

6 years ago[GTK] Do not use deprecated callbacks in WebKitPolicyClient
carlosgc@webkit.org [Wed, 20 Nov 2013 10:35:04 +0000 (10:35 +0000)]
[GTK] Do not use deprecated callbacks in WebKitPolicyClient
https://bugs.webkit.org/show_bug.cgi?id=124648

Reviewed by Philippe Normand.

Fixes compile warnings for uninitialized callbacks.

* UIProcess/API/gtk/WebKitPolicyClient.cpp:
(decidePolicyForNavigationAction): Add originatingFrame parameter.
(decidePolicyForNewWindowAction): Renamed for consistency.
(decidePolicyForResponse): Add canShowMIMEType parameter.
(attachPolicyClientToView): Add new callbacks.

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

6 years agoUnreviewed. Fix GTK build.
carlosgc@webkit.org [Wed, 20 Nov 2013 09:48:23 +0000 (09:48 +0000)]
Unreviewed. Fix GTK build.

* GNUmakefile.am: Remove duplicated entries.

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

6 years agoUnreviewed, rolling out r159496.
commit-queue@webkit.org [Wed, 20 Nov 2013 09:22:24 +0000 (09:22 +0000)]
Unreviewed, rolling out r159496.
http://trac.webkit.org/changeset/159496
https://bugs.webkit.org/show_bug.cgi?id=124641

It caused warning and build break with cmake lower than 2.8.8
(Requested by ryuan on #webkit).

.:

* Source/cmake/OptionsEfl.cmake:

Tools:

* MiniBrowser/efl/CMakeLists.txt:

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

6 years ago[CSSRegions] Move region styling code into RenderNamedFlowFragment
abucur@adobe.com [Wed, 20 Nov 2013 08:47:35 +0000 (08:47 +0000)]
[CSSRegions] Move region styling code into RenderNamedFlowFragment
https://bugs.webkit.org/show_bug.cgi?id=122957

Reviewed by Mihnea Ovidenie.

The patch moves all the region styling functionality outside of RenderRegion
to RenderNamedFlowFragment and outside of RenderFlowThread to RenderNamedFlowThread.
This generates a couple of undesired casts that will be removed in later patches
when everything CSS Regions specific will be located inside RenderNamedFlowThread
and RenderNamedFlowFragment (e.g. the move of the isValid flag, the auto-height
code etc.).

The painting function was also moved from RenderRegion to RenderNamedFlowFragment. It
was only used by the CSS Regions code. The new multi-column implementation has its own
painting mechanism.

Tests: No changed functionality, just refactorings.

* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::RenderFlowThread):
(WebCore::RenderFlowThread::removeFlowChildInfo):
(WebCore::RenderFlowThread::clearRenderBoxRegionInfoAndCustomStyle):
* rendering/RenderFlowThread.h:
* rendering/RenderInline.cpp:
(WebCore::RenderInline::updateAlwaysCreateLineBoxes):
* rendering/RenderNamedFlowFragment.cpp:
(WebCore::RenderNamedFlowFragment::RenderNamedFlowFragment):
(WebCore::RenderNamedFlowFragment::styleDidChange):
(WebCore::RenderNamedFlowFragment::checkRegionStyle):
(WebCore::RenderNamedFlowFragment::computeStyleInRegion):
(WebCore::RenderNamedFlowFragment::computeChildrenStyleInRegion):
(WebCore::RenderNamedFlowFragment::setObjectStyleInRegion):
(WebCore::RenderNamedFlowFragment::clearObjectStyleInRegion):
(WebCore::RenderNamedFlowFragment::setRegionObjectsRegionStyle):
(WebCore::RenderNamedFlowFragment::restoreRegionObjectsOriginalStyle):
(WebCore::shouldPaintRegionContentsInPhase):
(WebCore::RenderNamedFlowFragment::paintObject):
* rendering/RenderNamedFlowFragment.h:
* rendering/RenderNamedFlowThread.cpp:
(WebCore::RenderNamedFlowThread::RenderNamedFlowThread):
(WebCore::RenderNamedFlowThread::checkRegionsWithStyling):
(WebCore::RenderNamedFlowThread::clearRenderObjectCustomStyle):
(WebCore::RenderNamedFlowThread::removeFlowChildInfo):
* rendering/RenderNamedFlowThread.h:
* rendering/RenderRegion.cpp:
(WebCore::RenderRegion::RenderRegion):
(WebCore::RenderRegion::styleDidChange):
(WebCore::RenderRegion::attachRegion):
* rendering/RenderRegion.h:
* rendering/RenderTreeAsText.cpp:
(WebCore::writeRenderRegionList):

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

6 years ago[EFL] libseccomp-2.0.0 doesn't support ARM architecture
rgabor@webkit.org [Wed, 20 Nov 2013 08:30:29 +0000 (08:30 +0000)]
[EFL] libseccomp-2.0.0 doesn't support ARM architecture
https://bugs.webkit.org/show_bug.cgi?id=124412

Reviewed by Gyuyoung Kim.

Update libseccomp to a newer 2.1.0 version.

* efl/jhbuild.modules:

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

6 years agoGenerate toHTMLFooElement() to clean up static_cast<>
gyuyoung.kim@samsung.com [Wed, 20 Nov 2013 07:21:38 +0000 (07:21 +0000)]
Generate toHTMLFooElement() to clean up static_cast<>
https://bugs.webkit.org/show_bug.cgi?id=124571

Reviewed by Darin Adler.

Though there are a lot of clean up commits before, there are still
use of static_cast<HTMLFooElement*>. To clean up them, we need to generate
toHTMLDetails|Meta|Summary|TableSection|TableCaptionElement().

Additionally, other static_cast<> are removed as well.

No new tests, no behavior changes.

* html/HTMLDetailsElement.h:
* html/HTMLMediaElement.cpp:
(HTMLMediaElement::selectNextSourceChild):
* html/HTMLMetaElement.h:
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::shouldAllowQuickTimeClassIdQuirk):
* html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::isDisabledFormControl):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::updateWidgetCallback):
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::detailsElement):
* html/HTMLSummaryElement.h:
* html/HTMLTableCaptionElement.h:
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::caption):
(WebCore::HTMLTableElement::tHead):
(WebCore::HTMLTableElement::tFoot):
(WebCore::HTMLTableElement::lastBody):
* html/HTMLTableRowElement.cpp:
(WebCore::HTMLTableRowElement::rowIndex):
* html/HTMLTableSectionElement.h:
* html/HTMLTagNames.in:
* html/MediaDocument.cpp:
(WebCore::MediaDocumentParser::createDocumentStructure):
* html/shadow/DetailsMarkerControl.cpp:
(WebCore::DetailsMarkerControl::summaryElement):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::handleFallbackContent):
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::dispatchPendingBeforeLoadEvent):
* page/DragController.cpp:
(WebCore::DragController::canProcessDrag):
* page/Frame.cpp:
(WebCore::Frame::searchForLabelsBeforeElement):
* page/SpatialNavigation.cpp:
(WebCore::frameOwnerElement):

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

6 years agoEnable HTMLTemplateElement on Mac port
rniwa@webkit.org [Wed, 20 Nov 2013 06:57:41 +0000 (06:57 +0000)]
Enable HTMLTemplateElement on Mac port
https://bugs.webkit.org/show_bug.cgi?id=124637

Reviewed by Tim Horton.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Enabled the feature.

* Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:

LayoutTests:

Unskip template element tests except fast/dom/HTMLTemplateElement/cycles-in-shadow.html
which depends on ENABLE(SHADOW_DOM).

* platform/mac/TestExpectations:

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

6 years ago<rdar://problem/15487072> Modernize WebKit.app's OS X version checking logic.
mrowe@apple.com [Wed, 20 Nov 2013 06:01:19 +0000 (06:01 +0000)]
<rdar://problem/15487072> Modernize WebKit.app's OS X version checking logic.

Gestalt is deprecated on recent OS X versions so we should switch off it.

Reviewed by Sam Weinig.

* WebKitLauncher/main.m:
(currentMacOSXVersion): Retrieve the version string from SystemVersion.plist.
(currentMacOSXMajorVersion): Split the version string at the periods, retrieve the first
two components, then join them back up.
(main): Switch to using currentMacOSXMajorVersion to make it clearer which part of
the version we care about.

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

6 years agoRemove unused member function declaration in DocumentOrderedMap.h
jinwoo7.song@samsung.com [Wed, 20 Nov 2013 05:59:46 +0000 (05:59 +0000)]
Remove unused member function declaration in DocumentOrderedMap.h
https://bugs.webkit.org/show_bug.cgi?id=124629

Reviewed by Ryosuke Niwa.

checkConsistency() is not used anywhere.

* dom/DocumentOrderedMap.h:

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

6 years agoUnreviewed, remove completely bogus assertion.
fpizlo@apple.com [Wed, 20 Nov 2013 05:57:29 +0000 (05:57 +0000)]
Unreviewed, remove completely bogus assertion.

* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::addFunction):

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

6 years agoUnreviewed, debug build fix.
fpizlo@apple.com [Wed, 20 Nov 2013 05:53:40 +0000 (05:53 +0000)]
Unreviewed, debug build fix.

* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::addFunction):

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

6 years agoInfer constant global variables
fpizlo@apple.com [Wed, 20 Nov 2013 05:49:05 +0000 (05:49 +0000)]
Infer constant global variables
https://bugs.webkit.org/show_bug.cgi?id=124464

Source/JavaScriptCore:

Reviewed by Sam Weinig.

All global variables that are candidates for watchpoint-based constant inference (i.e.
not 'const' variables) will now have WatchpointSet's associated with them and those
are used to drive the inference by tracking three states of each variable:

Uninitialized: the variable's value is Undefined and the WatchpointSet state is
    ClearWatchpoint.

Initialized: the variable's value was set to something (could even be explicitly set
    to Undefined) and the WatchpointSet state is IsWatching.

Invalidated: the variable's value was set to something else (could even be the same
    thing as before but the point is that a put operation did execute again) and the
    WatchpointSet is IsInvalidated.

If the compiler tries to compile a GetGlobalVar and the WatchpointSet state is
IsWatching, then the current value of the variable can be folded in place of the get,
and a watchpoint on the variable can be registered.

We handle race conditions between the mutator and compiler by mandating that:

- The mutator changes the WatchpointSet state after executing the put.

- There is no opportunity to install code or call functions between when the mutator
  executes a put and changes the WatchpointSet state.

- The compiler checks the WatchpointSet state prior to reading the value.

The concrete algorithm used by the mutator is:

    1. Store the new value into the variable.
    --- Execute a store-store fence.
    2. Bump the state (ClearWatchpoing becomes IsWatching, IsWatching becomes
       IsInvalidated); the IsWatching->IsInvalidated transition may end up firing
       watchpoints.

The concrete algorithm that the compiler uses is:

    1. Load the state. If it's *not* IsWatching, then give up on constant inference.
    --- Execute a load-load fence.
    2. Load the value of the variable and use that for folding, while also registering
       a DesiredWatchpoint. The various parts of this step can be done in any order.

The desired watchpoint registration will fail if the watchpoint set is already
invalidated. Now consider the following interesting interleavings:

Uninitialized->M1->M2->C1->C2: Compiler sees IsWatching because of the mutator's store
    operation, and the variable is folded. The fencing ensures that C2 sees the value
    stored in M1 - i.e. we fold on the value that will actually be watchpointed. If
    before the compilation is installed the mutator executes another store then we
    will be sure that it will be a complete sequence of M1+M2 since compilations get
    installed at safepoints and never "in the middle" of a put_to_scope. Hence that
    compilation installation will be invalidated. If the M1+M2 sequence happens after
    the code is installed, then the code will be invalidated by triggering a jettison.

Uninitialized->M1->C1->C2->M2: Compiler sees Uninitialized and will not fold. This is
    a sensible outcome since if the compiler read the variable's value, it would have
    seen Undefined.

Uninitialized->C1->C2->M1->M2: Compiler sees Uninitialized and will not fold.
Uninitialized->C1->M1->C2->M2: Compiler sees Uninitialized and will not fold.
Uninitialized->C1->M1->M2->C2: Compiler sees Uninitialized and will not fold.
Uninitialized->M1->C1->M2->C2: Compiler sees Uninitialized and will not fold.

IsWatched->M1->M2->C1->C2: Compiler sees IsInvalidated and will not fold.

IsWatched->M1->C1->C2->M2: Compiler will fold, but will also register a desired
    watchpoint, and that watchpoint will get invalidated before the code is installed.

IsWatched->M1->C1->M2->C2: As above, will fold but the code will get invalidated.
IsWatched->C1->C2->M1->M2: As above, will fold but the code will get invalidated.
IsWatched->C1->M1->C2->M2: As above, will fold but the code will get invalidated.
IsWatched->C1->M1->M2->C2: As above, will fold but the code will get invalidated.

Note that this kind of reasoning shows why having the mutator first bump the state and
then store the new value would be wrong. If we had done that (M1 = bump state, M2 =
execute put) then we could have the following deadly interleavings:

Uninitialized->M1->C1->C2->M2:
Uninitialized->M1->C1->M2->C2: Mutator bumps the state to IsWatched and then the
    compiler folds Undefined, since M2 hasn't executed yet. Although C2 will set the
    watchpoint, M1 didn't notify it - it mearly initiated watching. M2 then stores a
    value other than Undefined, and you're toast.

You could fix this sort of thing by making the Desired Watchpoints machinery more
sophisticated, for example having it track the value that was folded; if the global
variable's value was later found to be different then we could invalidate the
compilation. You could also fix it by having the compiler also check that the value of
the variable is not Undefined before folding. While those all sound great, I decided
to instead just use the right interleaving since that results in less code and feels
more intuitive.

This is a 0.5% speed-up on SunSpider, mostly due to a 20% speed-up on math-cordic.
It's a 0.6% slow-down on LongSpider, mostly due to a 25% slow-down on 3d-cube. This is
because 3d-cube takes global variable assignment slow paths very often. Note that this
3d-cube slow-down doesn't manifest as much in SunSpider (only 6% there). This patch is
also a 1.5% speed-up on V8v7 and a 2.8% speed-up on Octane v1, mostly due to deltablue
(3.7%), richards (4%), and mandreel (26%). This is a 2% speed-up on Kraken, mostly due
to a 17.5% speed-up on imaging-gaussian-blur. Something that really illustrates the
slam-dunk-itude of this patch is the wide range of speed-ups on JSRegress. Casual JS
programming often leads to global-var-based idioms and those variables tend to be
assigned once, leading to excellent constant folding opportunities in an optimizing
JIT. This is very evident in the speed-ups on JSRegress.

* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::dmbSY):
* assembler/ARMv7Assembler.h:
(JSC::ARMv7Assembler::dmbSY):
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::memfence):
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::load8):
(JSC::MacroAssemblerARMv7::memfence):
* assembler/MacroAssemblerX86.h:
(JSC::MacroAssemblerX86::load8):
(JSC::MacroAssemblerX86::store8):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::getUnusedRegister):
(JSC::MacroAssemblerX86Common::store8):
(JSC::MacroAssemblerX86Common::memoryFence):
* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::load8):
(JSC::MacroAssemblerX86_64::store8):
* assembler/X86Assembler.h:
(JSC::X86Assembler::movb_rm):
(JSC::X86Assembler::movzbl_mr):
(JSC::X86Assembler::mfence):
(JSC::X86Assembler::X86InstructionFormatter::threeByteOp):
(JSC::X86Assembler::X86InstructionFormatter::oneByteOp8):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
* bytecode/Watchpoint.cpp:
(JSC::WatchpointSet::WatchpointSet):
(JSC::WatchpointSet::add):
(JSC::WatchpointSet::notifyWriteSlow):
* bytecode/Watchpoint.h:
(JSC::WatchpointSet::state):
(JSC::WatchpointSet::isStillValid):
(JSC::WatchpointSet::addressOfSetIsNotEmpty):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::getJSConstantForValue):
(JSC::DFG::ByteCodeParser::getJSConstant):
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::isStronglyProvedConstantIn):
(JSC::DFG::Node::hasIdentifierNumberForCheck):
(JSC::DFG::Node::hasRegisterPointer):
* dfg/DFGNodeFlags.h:
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNotifyPutGlobalVar):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLAbbreviatedTypes.h:
* ftl/FTLAbbreviations.h:
(JSC::FTL::buildFence):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLIntrinsicRepository.h:
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileNotifyPutGlobalVar):
* ftl/FTLOutput.h:
(JSC::FTL::Output::fence):
* jit/JIT.h:
* jit/JITOperations.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitPutGlobalVar):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emitPutGlobalVar):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* llvm/LLVMAPIFunctions.h:
* offlineasm/arm.rb:
* offlineasm/arm64.rb:
* offlineasm/cloop.rb:
* offlineasm/instructions.rb:
* offlineasm/x86.rb:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::addGlobalVar):
(JSC::JSGlobalObject::addFunction):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::addVar):
(JSC::JSGlobalObject::addConst):
* runtime/JSScope.cpp:
(JSC::abstractAccess):
* runtime/JSSymbolTableObject.h:
(JSC::symbolTablePut):
(JSC::symbolTablePutWithAttributes):
* runtime/SymbolTable.cpp:
(JSC::SymbolTableEntry::couldBeWatched):
(JSC::SymbolTableEntry::prepareToWatch):
(JSC::SymbolTableEntry::notifyWriteSlow):
* runtime/SymbolTable.h:

LayoutTests:

Reviewed by Sam Weinig.

* js/regress/global-var-const-infer-expected.txt: Added.
* js/regress/global-var-const-infer-fire-from-opt-expected.txt: Added.
* js/regress/global-var-const-infer-fire-from-opt.html: Added.
* js/regress/global-var-const-infer.html: Added.
* js/regress/script-tests/global-var-const-infer-fire-from-opt.js: Added.
(foo):
(setA):
(setB):
(check):
* js/regress/script-tests/global-var-const-infer.js: Added.
(foo):
(check):

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

6 years agoRemoval of redundant function call in Editor::insertTextWithoutSendingTextEvent
seokju@webkit.org [Wed, 20 Nov 2013 05:19:03 +0000 (05:19 +0000)]
Removal of redundant function call in Editor::insertTextWithoutSendingTextEvent
https://bugs.webkit.org/show_bug.cgi?id=124563

Reviewed by Brent Fulgham.

No new tests needed, no behavior change.

* editing/Editor.cpp:
(WebCore::Editor::insertTextWithoutSendingTextEvent):

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

6 years agoUnreviewed. Build fix for Mac.
roger_fong@apple.com [Wed, 20 Nov 2013 05:08:26 +0000 (05:08 +0000)]
Unreviewed. Build fix for Mac.

* src/compiler/glslang_tab.cpp:
(yysyntax_error):
(yyerror):
* src/compiler/glslang_tab.h:
* src/compiler/preprocessor/ExpressionParser.cpp:
(yysyntax_error):

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

6 years agoFix the GTK+ build after the ANGLE update in r159533
mrobinson@webkit.org [Wed, 20 Nov 2013 05:04:57 +0000 (05:04 +0000)]
Fix the GTK+ build after the ANGLE update in r159533

* GNUmakefile.am: Update the source list.

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

6 years agoFix build break after r159533.
gyuyoung.kim@samsung.com [Wed, 20 Nov 2013 03:50:37 +0000 (03:50 +0000)]
Fix build break after r159533.

* CMakeLists.txt: Update ANGLE files.

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

6 years agoUnreviewed, rolling out r159538.
commit-queue@webkit.org [Wed, 20 Nov 2013 03:19:16 +0000 (03:19 +0000)]
Unreviewed, rolling out r159538.
http://trac.webkit.org/changeset/159538
https://bugs.webkit.org/show_bug.cgi?id=124627

it broke run-jsc-stress-tests (Requested by mhahnenberg on
#webkit).

* Scripts/jsc-stress-test-helpers/check-mozilla-failure: Added.
* Scripts/run-javascriptcore-tests:
* Scripts/run-jsc-stress-tests:

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

6 years agoUnreviewed. Prospective build fix for GTK port following r159533.
roger_fong@apple.com [Wed, 20 Nov 2013 03:13:27 +0000 (03:13 +0000)]
Unreviewed. Prospective build fix for GTK port following r159533.

* GNUmakefile.am:

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

6 years agorun-jsc-stress-tests should be able to package its tests and move them places
mhahnenberg@apple.com [Wed, 20 Nov 2013 02:51:24 +0000 (02:51 +0000)]
run-jsc-stress-tests should be able to package its tests and move them places
https://bugs.webkit.org/show_bug.cgi?id=124549

Reviewed by Geoff Garen and Filip Pizlo.

* Scripts/jsc-stress-test-helpers/check-mozilla-failure: Removed. This script was just a ruby reimplementation
of grep -i -q
* Scripts/run-javascriptcore-tests: Pass through the --make-bundle flag.
* Scripts/run-jsc-stress-tests: Added the new concept of a "bundle", which is a collection of all tests and any
other files that those tests require to run in any environment along with a fixed root directory into which these
files and their expected directory structure are cloned. The default Bundle class is basically
a no-op so that it functions like run-jsc-stress-tests prior to this patch. MovableBundle is a Bundle that knows
how to translate local paths to bundle paths and does all the work of moving each test file into the right place
inside the .tests directory. After all the test files have been created in jsc-stress-results MovableBundle
creates a tarball of the entire directory for easy relocation. The --make-bundle flag causes run-jsc-stress-tests
to use MovableBundle instead of just Bundle.

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

6 years ago[EFL] Layout tests need to be rebaselined.
commit-queue@webkit.org [Wed, 20 Nov 2013 02:40:57 +0000 (02:40 +0000)]
[EFL] Layout tests need to be rebaselined.
https://bugs.webkit.org/show_bug.cgi?id=124622

Unreviewed, EFL rebaseline.

EFL tests are rebaselined after r106181, r128728 and r133754.

Patch by Sun-woo Nam <sunny.nam@samsung.com> on 2013-11-19

* platform/efl-wk2/TestExpectations:
* platform/efl/fast/replaced/applet-disabled-positioned-expected.txt:
* platform/efl/fast/replaced/applet-rendering-java-disabled-expected.txt:
* platform/efl/fast/text/shaping/shaping-script-order-expected.txt:
* platform/efl/fast/writing-mode/japanese-ruby-horizontal-bt-expected.txt:

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

6 years agoImplement spin control on WinCE port.
commit-queue@webkit.org [Wed, 20 Nov 2013 02:12:43 +0000 (02:12 +0000)]
Implement spin control on WinCE port.
https://bugs.webkit.org/show_bug.cgi?id=123254

Patch by Zhuang Zhigang <zhuangzg@cn.fujitsu.com> on 2013-11-19
Reviewed by Brent Fulgham.

* rendering/RenderThemeWinCE.cpp:
(WebCore::RenderThemeWinCE::adjustInnerSpinButtonStyle):
(WebCore::RenderThemeWinCE::paintInnerSpinButton):
* rendering/RenderThemeWinCE.h:

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

6 years agoUpdate ANGLE sources.
roger_fong@apple.com [Wed, 20 Nov 2013 01:52:11 +0000 (01:52 +0000)]
Update ANGLE sources.
https://bugs.webkit.org/show_bug.cgi?id=124615.

Reviewed by Dean Jackson.

Tests covered by Khronos WebGL conformance tests.

Update ANGLE to checkout a60e0805721f62c28a55faf2df74472cc5fc91fc.
Modify xcodeproj files as necessary, update plist.
Stop using DerivedSources.make and just use the generated sources that are checked into ANGLE.
Add a note to bison generated files indicating that Apple elects to distribute said files under the BSD license:
ExpressionParser.cpp, glslang_tab.cpp, glslang_tab.h.

* ANGLE.plist:
* ANGLE.xcodeproj/project.pbxproj:
* DerivedSources.make: Removed.
* platform/graphics/ANGLEWebKitBridge.cpp: Resolve a build error that resulted from updating ANGLE.
(WebCore::getSymbolInfo):
(WebCore::ANGLEWebKitBridge::compileShaderSource):
* include/EGL/egl.h:
* include/EGL/eglsoftlinking.h: Removed.
* include/GLES2/gl2.h:
* include/GLES2/gl2softlinking.h: Removed.
* include/GLSLANG/ShaderLang.h:
* include/KHR/khrplatform.h:
* src/ANGLE.sln: Added.
* src/build_angle.gypi:
* src/common/debug.h:
* src/common/event_tracer.cpp: Added.
(gl::TraceGetTraceCategoryEnabledFlag):
(gl::TraceAddTraceEvent):
* src/common/event_tracer.h: Added.
* src/common/version.h:
* src/compiler/CodeGen.cpp: Added.
(ConstructCompiler):
(DeleteCompiler):
* src/compiler/CodeGenGLSL.cpp: Removed.
* src/compiler/CodeGenHLSL.cpp: Removed.
* src/compiler/Common.h:
(NewPoolTString):
* src/compiler/Compiler.cpp:
(TCompiler::Init):
(TCompiler::compile):
(TCompiler::InitBuiltInSymbolTable):
(TCompiler::clearResults):
(TCompiler::collectVariables):
* src/compiler/ConstantUnion.h:
* src/compiler/DetectDiscontinuity.cpp:
* src/compiler/InfoSink.h:
* src/compiler/InitializeDll.cpp:
(InitProcess):
(DetachProcess):
* src/compiler/InitializeDll.h:
* src/compiler/InitializeGLPosition.cpp: Added.
(InitializeGLPosition::visitAggregate):
(InitializeGLPosition::insertCode):
* src/compiler/InitializeGLPosition.h: Added.
(InitializeGLPosition::InitializeGLPosition):
(InitializeGLPosition::visitBinary):
(InitializeGLPosition::visitUnary):
(InitializeGLPosition::visitSelection):
(InitializeGLPosition::visitLoop):
(InitializeGLPosition::visitBranch):
* src/compiler/InitializeGlobals.h:
* src/compiler/InitializeParseContext.cpp:
(InitializeParseContextIndex):
(FreeParseContextIndex):
(SetGlobalParseContext):
(GetGlobalParseContext):
* src/compiler/InitializeParseContext.h:
* src/compiler/IntermTraverse.cpp:
(TIntermSymbol::traverse):
(TIntermConstantUnion::traverse):
(TIntermBinary::traverse):
(TIntermUnary::traverse):
(TIntermAggregate::traverse):
(TIntermSelection::traverse):
(TIntermLoop::traverse):
(TIntermBranch::traverse):
* src/compiler/Intermediate.cpp:
(GetHigherPrecision):
(getOperatorString):
(TIntermLoop::replaceChildNode):
(TIntermBranch::replaceChildNode):
(TIntermBinary::replaceChildNode):
(TIntermUnary::replaceChildNode):
(TIntermAggregate::replaceChildNode):
(TIntermSelection::replaceChildNode):
(TIntermOperator::isAssignment):
(TIntermediate::promoteConstantUnion):
* src/compiler/MapLongVariableNames.cpp:
* src/compiler/MapLongVariableNames.h:
* src/compiler/NodeSearch.h: Added.
(sh::NodeSearchTraverser::NodeSearchTraverser):
(sh::NodeSearchTraverser::found):
(sh::NodeSearchTraverser::search):
(sh::FindDiscard::visitBranch):
(sh::FindSideEffectRewriting::visitBinary):
* src/compiler/OutputGLSLBase.cpp:
(TOutputGLSLBase::visitSelection):
(TOutputGLSLBase::visitAggregate):
(TOutputGLSLBase::visitLoop):
* src/compiler/OutputGLSLBase.h:
* src/compiler/OutputHLSL.cpp:
(sh::OutputHLSL::OutputHLSL):
(sh::OutputHLSL::header):
(sh::OutputHLSL::visitBinary):
(sh::OutputHLSL::visitSelection):
(sh::OutputHLSL::visitBranch):
(sh::OutputHLSL::handleExcessiveLoop):
(sh::OutputHLSL::addConstructor):
* src/compiler/OutputHLSL.h:
* src/compiler/ParseContext.cpp: Added.
(TParseContext::parseVectorFields):
(TParseContext::parseMatrixFields):
(TParseContext::recover):
(TParseContext::error):
(TParseContext::warning):
(TParseContext::trace):
(TParseContext::assignError):
(TParseContext::unaryOpError):
(TParseContext::binaryOpError):
(TParseContext::precisionErrorCheck):
(TParseContext::lValueErrorCheck):
(TParseContext::constErrorCheck):
(TParseContext::integerErrorCheck):
(TParseContext::globalErrorCheck):
(TParseContext::reservedErrorCheck):
(TParseContext::constructorErrorCheck):
(TParseContext::voidErrorCheck):
(TParseContext::boolErrorCheck):
(TParseContext::samplerErrorCheck):
(TParseContext::structQualifierErrorCheck):
(TParseContext::parameterSamplerErrorCheck):
(TParseContext::containsSampler):
(TParseContext::arraySizeErrorCheck):
(TParseContext::arrayQualifierErrorCheck):
(TParseContext::arrayTypeErrorCheck):
(TParseContext::arrayErrorCheck):
(TParseContext::nonInitConstErrorCheck):
(TParseContext::nonInitErrorCheck):
(TParseContext::paramErrorCheck):
(TParseContext::extensionErrorCheck):
(TParseContext::supportsExtension):
(TParseContext::isExtensionEnabled):
(TParseContext::findFunction):
(TParseContext::executeInitializer):
(TParseContext::areAllChildConst):
(TParseContext::addConstructor):
(TParseContext::foldConstConstructor):
(TParseContext::constructBuiltIn):
(TParseContext::constructStruct):
(TParseContext::addConstVectorNode):
(TParseContext::addConstMatrixNode):
(TParseContext::addConstArrayNode):
(TParseContext::addConstStruct):
(TParseContext::enterStructDeclaration):
(TParseContext::exitStructDeclaration):
(TParseContext::structNestingErrorCheck):
(TParseContext::addIndexExpression):
(PaParseStrings):
* src/compiler/ParseContext.h: Added.
(TParseContext::TParseContext):
(TParseContext::numErrors):
(TParseContext::infoSink):
(TParseContext::pragma):
(TParseContext::extensionBehavior):
* src/compiler/ParseHelper.cpp: Removed.
* src/compiler/ParseHelper.h: Removed.
* src/compiler/PoolAlloc.cpp:
(InitializePoolIndex):
(FreePoolIndex):
(GetGlobalPoolAllocator):
(SetGlobalPoolAllocator):
* src/compiler/PoolAlloc.h:
(pool_allocator::pool_allocator):
* src/compiler/SearchSymbol.h:
* src/compiler/ShHandle.h:
(TCompiler::getVaryings):
* src/compiler/ShaderLang.cpp:
(checkVariableMaxLengths):
(ShInitialize):
(ShFinalize):
(ShConstructCompiler):
(ShCompile):
(ShGetInfo):
(ShGetVariableInfo):
(ShCheckVariablesWithinPackingLimits):
* src/compiler/SymbolTable.cpp:
(TSymbolTable::~TSymbolTable):
* src/compiler/SymbolTable.h:
(TSymbol::TSymbol):
(TSymbolTableLevel::insert):
(TSymbolTable::push):
(TSymbolTable::pop):
(TSymbolTable::findBuiltIn):
(TSymbolTable::relateToExtension):
(TSymbolTable::setDefaultPrecision):
(TSymbolTable::getDefaultPrecision):
(TSymbolTable::supportsPrecision):
* src/compiler/Types.h:
(NewPoolTFieldList):
(TType::TType):
(TType::setNominalSize):
(TPublicType::setAggregate):
* src/compiler/UnfoldShortCircuit.cpp:
(sh::UnfoldShortCircuit::visitBinary):
(sh::UnfoldShortCircuit::visitSelection):
* src/compiler/UnfoldShortCircuit.h:
* src/compiler/UnfoldShortCircuitAST.cpp: Added.
(UnfoldShortCircuitAST::visitBinary):
(UnfoldShortCircuitAST::updateTree):
* src/compiler/UnfoldShortCircuitAST.h: Added.
(UnfoldShortCircuitAST::UnfoldShortCircuitAST):
(UnfoldShortCircuitAST::NodeUpdateEntry::NodeUpdateEntry):
* src/compiler/Uniform.cpp:
(sh::Uniform::Uniform):
* src/compiler/Uniform.h:
* src/compiler/ValidateLimitations.cpp:
(ValidateLimitations::validateFunctionCall):
(ValidateLimitations::validateOperation):
* src/compiler/VariableInfo.cpp:
(TVariableInfo::TVariableInfo):
(CollectVariables::CollectVariables):
(CollectVariables::visitSymbol):
(CollectVariables::visitAggregate):
* src/compiler/VariableInfo.h:
* src/compiler/debug.cpp:
* src/compiler/depgraph/DependencyGraph.cpp:
* src/compiler/depgraph/DependencyGraphBuilder.cpp:
(TDependencyGraphBuilder::visitBinary):
* src/compiler/generate_parser.sh:
* src/compiler/glslang.l:
* src/compiler/glslang.y:
* src/compiler/glslang_lex.cpp:
(input):
(yyerror):
(int_constant):
(float_constant):
(glslang_scan):
* src/compiler/glslang_tab.cpp:
(yysyntax_error):
(glslang_parse):
* src/compiler/glslang_tab.h:
* src/compiler/intermediate.h:
(TIntermSymbol::hasSideEffects):
(TIntermSymbol::replaceChildNode):
(TIntermConstantUnion::hasSideEffects):
(TIntermConstantUnion::getIConst):
(TIntermConstantUnion::getFConst):
(TIntermConstantUnion::getBConst):
(TIntermConstantUnion::replaceChildNode):
(TIntermOperator::hasSideEffects):
(TIntermBinary::hasSideEffects):
(TIntermUnary::hasSideEffects):
(TIntermAggregate::hasSideEffects):
(TIntermSelection::hasSideEffects):
(TIntermTraverser::~TIntermTraverser):
(TIntermTraverser::incrementDepth):
(TIntermTraverser::decrementDepth):
(TIntermTraverser::getParentNode):
* src/compiler/localintermediate.h:
* src/compiler/parseConst.cpp:
* src/compiler/preprocessor/ExpressionParser.cpp:
(yy_symbol_print):
(yy_stack_print):
(yy_reduce_print):
(yystrlen):
(yystpcpy):
(yytnamerr):
(yysyntax_error):
(yydestruct):
(yyparse):
* src/compiler/preprocessor/ExpressionParser.y:
* src/compiler/preprocessor/Preprocessor.cpp:
(pp::Preprocessor::setMaxTokenLength):
(pp::Preprocessor::lex):
* src/compiler/preprocessor/Preprocessor.h:
* src/compiler/preprocessor/Tokenizer.cpp:
(pp::Tokenizer::Tokenizer):
(pp::Tokenizer::lex):
* src/compiler/preprocessor/Tokenizer.h:
(pp::Tokenizer::setMaxTokenLength):
* src/compiler/preprocessor/Tokenizer.l:
* src/compiler/preprocessor/generate_parser.sh:
* src/compiler/preprocessor/preprocessor.vcxproj: Added.
* src/compiler/preprocessor/preprocessor.vcxproj.filters: Added.
* src/compiler/timing/RestrictFragmentShaderTiming.cpp:
* src/compiler/translator.vcxproj: Added.
* src/compiler/translator.vcxproj.filters: Added.
* src/compiler/util.cpp:
(atof_clamp):
(atoi_clamp):
* src/compiler/util.h:
* src/libEGL/Surface.cpp:
(egl::Surface::checkForOutOfDateSwapChain):
* src/libEGL/libEGL.cpp:
* src/libEGL/libEGL.rc:
* src/libEGL/libEGL.vcxproj: Added.
* src/libEGL/libEGL.vcxproj.filters: Added.
* src/libGLESv2/Buffer.cpp:
(gl::Buffer::bufferData):
(gl::Buffer::bufferSubData):
(gl::Buffer::size):
(gl::Buffer::getIndexRangeCache):
* src/libGLESv2/Buffer.h:
* src/libGLESv2/Context.cpp:
(gl::Context::applyTextures):
(gl::Context::getBoundFramebufferTextureSerials):
* src/libGLESv2/Context.h:
(gl::Context::getRenderer):
* src/libGLESv2/Framebuffer.h:
* src/libGLESv2/ProgramBinary.cpp:
(gl::DiscardWorkaround):
(gl::ProgramBinary::load):
(gl::ProgramBinary::link):
(gl::ProgramBinary::linkAttributes):
(gl::AttributeSorter::AttributeSorter):
(gl::ProgramBinary::initAttributesByLayout):
(gl::ProgramBinary::sortAttributesByLayout):
* src/libGLESv2/ProgramBinary.h:
* src/libGLESv2/Renderbuffer.cpp:
(gl::RenderbufferTexture2D::getTextureSerial):
(gl::RenderbufferTextureCubeMap::getTextureSerial):
(gl::Renderbuffer::getTextureSerial):
* src/libGLESv2/Renderbuffer.h:
(gl::RenderbufferStorage::getTextureSerial):
* src/libGLESv2/Shader.cpp:
(gl::Shader::parseVaryings):
(gl::Shader::uncompile):
* src/libGLESv2/Shader.h:
* src/libGLESv2/Texture.cpp:
(gl::TextureCubeMap::storage):
* src/libGLESv2/Uniform.cpp:
(gl::Uniform::Uniform):
(gl::Uniform::~Uniform):
(gl::Uniform::isArray):
(gl::Uniform::elementCount):
* src/libGLESv2/Uniform.h:
* src/libGLESv2/constants.h: Removed.
* src/libGLESv2/libGLESv2.def:
* src/libGLESv2/libGLESv2.rc:
* src/libGLESv2/libGLESv2.vcxproj: Added.
* src/libGLESv2/libGLESv2.vcxproj.filters: Added.
* src/libGLESv2/precompiled.h:
* src/libGLESv2/renderer/Image11.cpp:
(rx::Image11::generateMipmap):
(rx::Image11::loadData):
(rx::Image11::loadCompressedData):
(rx::Image11::copy):
(rx::Image11::createStagingTexture):
(rx::Image11::map):
* src/libGLESv2/renderer/Image11.h:
* src/libGLESv2/renderer/IndexBuffer.cpp:
(rx::IndexBufferInterface::mapBuffer):
(rx::StaticIndexBufferInterface::getIndexRangeCache):
* src/libGLESv2/renderer/IndexBuffer.h:
* src/libGLESv2/renderer/IndexBuffer11.cpp:
(rx::IndexBuffer11::mapBuffer):
* src/libGLESv2/renderer/IndexDataManager.cpp:
(rx::IndexDataManager::prepareIndexData):
(rx::IndexDataManager::getCountingIndices):
* src/libGLESv2/renderer/IndexRangeCache.cpp: Added.
(rx::IndexRangeCache::addRange):
(rx::IndexRangeCache::invalidateRange):
(rx::IndexRangeCache::findRange):
(rx::IndexRangeCache::clear):
(rx::IndexRangeCache::IndexRange::IndexRange):
(rx::IndexRangeCache::IndexRange::operator<):
(rx::IndexRangeCache::IndexBounds::IndexBounds):
* src/libGLESv2/renderer/IndexRangeCache.h: Added.
* src/libGLESv2/renderer/InputLayoutCache.cpp:
(rx::InputLayoutCache::InputLayoutCache):
(rx::InputLayoutCache::clear):
(rx::InputLayoutCache::markDirty):
(rx::InputLayoutCache::applyVertexBuffers):
(rx::InputLayoutCache::hashInputLayout):
(rx::InputLayoutCache::compareInputLayouts):
* src/libGLESv2/renderer/InputLayoutCache.h:
(rx::InputLayoutCache::InputLayoutKey::begin):
(rx::InputLayoutCache::InputLayoutKey::end):
* src/libGLESv2/renderer/RenderTarget11.cpp:
(rx::RenderTarget11::getTexture):
(rx::RenderTarget11::getRenderTargetView):
(rx::RenderTarget11::getDepthStencilView):
(rx::RenderTarget11::getShaderResourceView):
* src/libGLESv2/renderer/RenderTarget11.h:
* src/libGLESv2/renderer/Renderer.cpp:
(rx::Renderer::initializeCompiler):
* src/libGLESv2/renderer/Renderer.h:
* src/libGLESv2/renderer/Renderer11.cpp:
(rx::Renderer11::initialize):
(rx::Renderer11::applyPrimitiveType):
(rx::Renderer11::applyRenderTarget):
(rx::Renderer11::drawLineLoop):
(rx::Renderer11::drawTriangleFan):
(rx::Renderer11::applyUniforms):
(rx::Renderer11::clear):
(rx::Renderer11::markAllStateDirty):
(rx::Renderer11::copyImage):
(rx::Renderer11::compileToExecutable):
(rx::Renderer11::getRenderTargetResource):
(rx::Renderer11::blitRenderbufferRect):
* src/libGLESv2/renderer/Renderer11.h:
* src/libGLESv2/renderer/Renderer9.cpp:
(rx::Renderer9::initialize):
(rx::Renderer9::setViewport):
(rx::Renderer9::drawLineLoop):
(rx::Renderer9::compileToExecutable):
* src/libGLESv2/renderer/Renderer9.h:
* src/libGLESv2/renderer/SwapChain.h:
* src/libGLESv2/renderer/SwapChain11.cpp:
(rx::SwapChain11::resetOffscreenTexture):
(rx::SwapChain11::reset):
(rx::SwapChain11::swapRect):
* src/libGLESv2/renderer/SwapChain9.cpp:
(rx::convertInterval):
* src/libGLESv2/renderer/TextureStorage11.cpp:
(rx::TextureStorage11::IsTextureFormatRenderable):
(rx::TextureStorage11::generateMipmapLayer):
(rx::TextureStorage11_Cube::getRenderTarget):
* src/libGLESv2/renderer/VertexBuffer.cpp:
(rx::VertexBufferInterface::storeVertexAttributes):
(rx::VertexBufferInterface::storeRawData):
(rx::VertexBufferInterface::reserveVertexSpace):
(rx::StaticVertexBufferInterface::lookupAttribute):
(rx::StaticVertexBufferInterface::storeVertexAttributes):
* src/libGLESv2/renderer/VertexBuffer.h:
* src/libGLESv2/renderer/VertexBuffer11.cpp:
(rx::VertexBuffer11::getSpaceRequired):
* src/libGLESv2/renderer/VertexBuffer11.h:
* src/libGLESv2/renderer/VertexBuffer9.cpp:
(rx::VertexBuffer9::storeVertexAttributes):
(rx::VertexBuffer9::getSpaceRequired):
(rx::VertexBuffer9::requiresConversion):
(rx::VertexBuffer9::getVertexSize):
(rx::VertexBuffer9::spaceRequired):
* src/libGLESv2/renderer/VertexBuffer9.h:
* src/libGLESv2/renderer/VertexDataManager.cpp:
(rx::elementsInBuffer):
(rx::StreamingBufferElementCount):
(rx::VertexDataManager::prepareVertexData):
* src/libGLESv2/renderer/VertexDataManager.h:
* src/libGLESv2/renderer/renderer11_utils.cpp:
(gl_d3d11::ConvertTextureFormat):
* src/libGLESv2/renderer/shaders/compiled/clear11vs.h:
* src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h:
* src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h:
* src/libGLESv2/renderer/shaders/compiled/componentmaskps.h:
* src/libGLESv2/renderer/shaders/compiled/flipyvs.h:
* src/libGLESv2/renderer/shaders/compiled/luminanceps.h:
* src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h:
* src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h:
* src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h:
* src/libGLESv2/renderer/shaders/compiled/passthroughps.h:
* src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h:
* src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h:
* src/libGLESv2/renderer/shaders/compiled/standardvs.h:
* src/libGLESv2/renderer/shaders/generate_shaders.bat:
* src/libGLESv2/utilities.cpp:
(gl::ComputeTypeSize):
* src/libGLESv2/utilities.h:
* src/third_party/murmurhash/MurmurHash3.cpp:
(rotl32):
(rotl64):
(getblock):
(fmix):
(MurmurHash3_x86_32):
(MurmurHash3_x86_128):
(MurmurHash3_x64_128):
* src/third_party/murmurhash/MurmurHash3.h:
* src/third_party/trace_event: Added.
* src/third_party/trace_event/trace_event.h: Added.
(gl::TraceEvent::TraceID::TraceID):
(gl::TraceEvent::TraceID::data):
(gl::TraceEvent::TraceStringWithCopy::TraceStringWithCopy):
(gl::TraceEvent::TraceStringWithCopy::operator const char* ):
(gl::TraceEvent::setTraceValue):
(gl::TraceEvent::addTraceEvent):
(gl::TraceEvent::TraceEndOnScopeClose::TraceEndOnScopeClose):
(gl::TraceEvent::TraceEndOnScopeClose::~TraceEndOnScopeClose):
(gl::TraceEvent::TraceEndOnScopeClose::initialize):
(gl::TraceEvent::TraceEndOnScopeClose::addEventIfEnabled):
(gl::TraceEvent::SamplingStateScope::SamplingStateScope):
(gl::TraceEvent::SamplingStateScope::~SamplingStateScope):
(gl::TraceEvent::SamplingStateScope::current):
(gl::TraceEvent::SamplingStateScope::set):

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

6 years agoREGRESSION(158384) ARMv7 point checks too restrictive for native calls to traditional...
msaboff@apple.com [Wed, 20 Nov 2013 00:35:00 +0000 (00:35 +0000)]
REGRESSION(158384) ARMv7 point checks too restrictive for native calls to traditional ARM code
https://bugs.webkit.org/show_bug.cgi?id=124612

Reviewed by Geoffrey Garen.

Removed ASSERT checks (i.e. lower bit set) for ARM Thumb2 destination addresses related to
calls since we are calling native ARM traditional functions like sin() and cos().

* assembler/ARMv7Assembler.h:
(JSC::ARMv7Assembler::linkCall):
(JSC::ARMv7Assembler::relinkCall):
* assembler/MacroAssemblerCodeRef.h:

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

6 years agoUnreviewed, rolling out r159459.
commit-queue@webkit.org [Wed, 20 Nov 2013 00:29:43 +0000 (00:29 +0000)]
Unreviewed, rolling out r159459.
http://trac.webkit.org/changeset/159459
https://bugs.webkit.org/show_bug.cgi?id=124616

tons of assertions on launch (Requested by thorton on
#webkit).

* API/JSContext.mm:
(-[JSContext setException:]):
(-[JSContext wrapperForObjCObject:]):
(-[JSContext wrapperForJSObject:]):
* API/JSContextRef.cpp:
(JSContextGroupRelease):
(JSGlobalContextRelease):
* API/JSManagedValue.mm:
(-[JSManagedValue initWithValue:]):
(-[JSManagedValue value]):
* API/JSObjectRef.cpp:
(JSObjectIsFunction):
(JSObjectCopyPropertyNames):
* API/JSValue.mm:
(containerValueToObject):
* API/JSWrapperMap.mm:
(tryUnwrapObjcObject):

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

6 years agoRename WatchpointSet::notifyWrite() should be renamed to WatchpointSet::fireAll()
fpizlo@apple.com [Tue, 19 Nov 2013 23:48:23 +0000 (23:48 +0000)]
Rename WatchpointSet::notifyWrite() should be renamed to WatchpointSet::fireAll()
https://bugs.webkit.org/show_bug.cgi?id=124609

Source/JavaScriptCore:

Rubber stamped by Mark Lam.

notifyWrite() is a thing that SymbolTable does. WatchpointSet uses that terminology
because it was original designed to match exactly SymbolTable's semantics. But now
it's a confusing term.

* bytecode/Watchpoint.cpp:
(JSC::WatchpointSet::fireAllSlow):
* bytecode/Watchpoint.h:
(JSC::WatchpointSet::fireAll):
(JSC::InlineWatchpointSet::fireAll):
* interpreter/Interpreter.cpp:
(JSC::Interpreter::execute):
* runtime/JSFunction.cpp:
(JSC::JSFunction::put):
(JSC::JSFunction::defineOwnProperty):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::haveABadTime):
* runtime/Structure.h:
(JSC::Structure::notifyTransitionFromThisStructure):
* runtime/SymbolTable.cpp:
(JSC::SymbolTableEntry::notifyWriteSlow):

Source/WebCore:

Rubber stamped by Mark Lam.

No new tests because no new behavior.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
* bindings/scripts/test/JS/JSTestEventTarget.h:
(WebCore::JSTestEventTarget::create):

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

6 years ago[CSS Shapes] Parse [<box> || <shape>] values
betravis@adobe.com [Tue, 19 Nov 2013 23:38:56 +0000 (23:38 +0000)]
[CSS Shapes] Parse [<box> || <shape>] values
https://bugs.webkit.org/show_bug.cgi?id=124426

Reviewed by Dirk Schulze.

Source/WebCore:

Shape values can now have an optional box specifying the coordinate sytem to use
for sizing and positioning the shape. This patch adds the functionality to support
parsing these new values.

* css/BasicShapeFunctions.cpp:
(WebCore::valueForBox): Added function to convert between BasicShape::ReferenceBox
and CSSPrimitiveValue (which wraps a CSSValueID).
(WebCore::boxForValue): Ditto.
(WebCore::valueForBasicShape): Translations between CSSBasicShape and BasicShape
must now include the reference box.
(WebCore::basicShapeForValue): Ditto.
* css/BasicShapeFunctions.h:
* css/CSSBasicShapes.cpp:
(WebCore::buildRectangleString): Include the box in the built CSS string.
(WebCore::CSSBasicShapeRectangle::cssText): Ditto.
(WebCore::CSSBasicShapeRectangle::equals): Include the box in comparisions.
(WebCore::buildCircleString):
(WebCore::CSSBasicShapeCircle::cssText):
(WebCore::CSSBasicShapeCircle::equals):
(WebCore::buildEllipseString):
(WebCore::CSSBasicShapeEllipse::cssText):
(WebCore::CSSBasicShapeEllipse::equals):
(WebCore::buildPolygonString):
(WebCore::CSSBasicShapePolygon::cssText):
(WebCore::CSSBasicShapePolygon::equals):
(WebCore::buildInsetRectangleString):
(WebCore::CSSBasicShapeInsetRectangle::cssText):
(WebCore::CSSBasicShapeInsetRectangle::equals):
* css/CSSBasicShapes.h:
(WebCore::CSSBasicShape::box): BasicShapes now have an reference box.
(WebCore::CSSBasicShape::setBox): Ditto.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue): Shape-inside can also
parse the box values.
* css/CSSParser.cpp:
(WebCore::CSSParser::parseValue): The shape properties use parseShapeProperty,
while minor adjustments were made to parseBasicShape's return type.
(WebCore::isBoxValue): Is the CSSValueID one of  the box values.
(WebCore::CSSParser::parseShapeProperty): Parse one of the shape properties
and return an appropriate CSSValue.
(WebCore::CSSParser::parseBasicShape): Return a CSSBasicShape rather than
adding a ShapeValue to the style.
* css/CSSParser.h:
* rendering/style/BasicShapes.h:
(WebCore::BasicShape::box): Add a box to BasicShape and getters/setters.
(WebCore::BasicShape::setBox): Ditto.
(WebCore::BasicShape::BasicShape): Ditto.

LayoutTests:

Test that <box> <shape> and <shape> <box> values are both supported and successfully parsed.
Currently, we order the parsed result as <shape> <box> when the value is output through
the CSSOM. Also test that other combinations with shapes and boxes are not parsed.

* fast/shapes/parsing/parsing-shape-inside-expected.txt:
* fast/shapes/parsing/parsing-shape-inside.html:
* fast/shapes/parsing/parsing-shape-outside-expected.txt:
* fast/shapes/parsing/parsing-shape-outside.html:
* fast/shapes/parsing/parsing-test-utils.js:

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

6 years ago[Mac] 9 WebGL conformance failures after r159518.
jer.noble@apple.com [Tue, 19 Nov 2013 23:06:22 +0000 (23:06 +0000)]
[Mac] 9 WebGL conformance failures after r159518.
https://bugs.webkit.org/show_bug.cgi?id=124608

Reviewed by Dean Jackson.

Once we removed the CIImage drawing path, there was no longer any reason to flip the
CGImageRef before drawing to the provided GraphicsContext.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):

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

6 years agoWeb Speech API crashes onboundary event handling with reload
cfleizach@apple.com [Tue, 19 Nov 2013 22:50:11 +0000 (22:50 +0000)]
Web Speech API crashes onboundary event handling with reload
https://bugs.webkit.org/show_bug.cgi?id=124607

Reviewed by Tim Horton.

If the page goes away, we need to cleanup the Mac platform synthesizer object, because
NSSpeechSynthesizer is retained elsewhere to handle the callbacks (so it doesn't automatically
get torn down).

The layout tests for speech rely on a Mock synthesizer, so there is no good way to test this
Mac platform specific behavior.

* platform/mac/PlatformSpeechSynthesizerMac.mm:
(-[WebSpeechSynthesisWrapper invalidate]):
(WebCore::PlatformSpeechSynthesizer::~PlatformSpeechSynthesizer):

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

6 years ago<rdar://problem/15139479> Reenable the JSC Objective-C API tests on Mountain Lion...
mitz@apple.com [Tue, 19 Nov 2013 22:27:36 +0000 (22:27 +0000)]
<rdar://problem/15139479> Reenable the JSC Objective-C API tests on Mountain Lion once the bots are running Xcode 5

Rubber-stamped by Mark Rowe.

Reverted r156840.

* TestWebKitAPI/Tests/mac/WebViewDidCreateJavaScriptContext.mm:

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

6 years agoREGRESSION (r159395): Error compiling for ARMv7
msaboff@apple.com [Tue, 19 Nov 2013 21:59:40 +0000 (21:59 +0000)]
REGRESSION (r159395): Error compiling for ARMv7
https://bugs.webkit.org/show_bug.cgi?id=124552

Reviewed by Geoffrey Garen.

Fixed the implementation of branch8(RelationalCondition cond, AbsoluteAddress address, TrustedImm32 right)
to materialize and use address similar to other ARMv7 branchXX() functions.

* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::branch8):

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

6 years agoAdd tracking of endColumn for Executables.
mark.lam@apple.com [Tue, 19 Nov 2013 21:55:16 +0000 (21:55 +0000)]
Add tracking of endColumn for Executables.
https://bugs.webkit.org/show_bug.cgi?id=124245.

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

1. Fixed computation of columns to take into account the startColumn from
   <script> tags. Previously, we were only computing the column relative
   to the char after the <script> tag. Now, the column number that JSC
   computes is always the column number you'll see when viewing the source
   in a text editor (assuming the first column position is 1, not 0).

2. Previously, unlinkedExecutables kept the a base-1 startColumn for
   ProgramExecutables and EvalExecutables, but uses base-0 columns for
   FunctionExecutables. This has been fixed so that they all use base-0
   columns. When the executable gets linked, the column is adjusted into
   a base-1 value.

3. In the UnlinkedFunctionExecutable, renamed m_functionStartOffset to
   m_unlinkedFunctionNameStart because it actually points to the start
   column in the name part of the function declaration.

   Similarly, renamed m_functionStartColumn to m_unlinkedBodyStartColumn
   because it points to the first character in the function body. This is
   usually '{' except for functions created from "global code" which
   excludes its braces. See FunctionExecutable::fromGlobalCode().

       The exclusion of braces for the global code case is needed so that
   computed start and end columns will more readily map to what a JS
   developer would expect them to be. Otherwise, the first column of the
   function source will not be 1 (includes prepended characters added in
   constructFunctionSkippingEvalEnabledCheck()).

   Also, similarly, a m_unlinkedBodyEndColumn has been added to track the
   end column of the UnlinkedFunctionExecutable.

4. For unlinked executables, end column values are either:
   a. Relative to the start of the last line if (last line != first line).
   b. Relative to the start column position if (last line == first line).

   The second case is needed so that we can add an appropriate adjustment
   to the end column value (just like we do for the start column) when we
   link the executable.

5. This is not new to this patch, but it worth noting that the lineCount
   values used through this patch has the following meaning:
   - a lineCount of 0 means the source for this code block is on 1 line.
   - a lineCount of N means there are N + l lines of source.

   This interpretation is janky, but was present before this patch. We can
   clean that up later in another patch.

* JavaScriptCore.xcodeproj/project.pbxproj:
- In order to implement WebCore::Internals::parserMetaData(), we need to
  move some seemingly unrelated header files from the Project section to
  the Private section so that they can be #include'd by the forwarding
  CodeBlock.h from WebCore.
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::sourceCodeForTools):
(JSC::CodeBlock::CodeBlock):
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::generateFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
- m_isFromGlobalCode is needed to support the exclusion of the open brace /
  prepended code for functions created from "global code".
(JSC::UnlinkedFunctionExecutable::link):
(JSC::UnlinkedFunctionExecutable::fromGlobalCode):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
* bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedFunctionExecutable::create):
(JSC::UnlinkedFunctionExecutable::unlinkedFunctionNameStart):
(JSC::UnlinkedFunctionExecutable::unlinkedBodyStartColumn):
(JSC::UnlinkedFunctionExecutable::unlinkedBodyEndColumn):
(JSC::UnlinkedFunctionExecutable::recordParse):
(JSC::UnlinkedCodeBlock::recordParse):
(JSC::UnlinkedCodeBlock::endColumn):
* bytecompiler/NodesCodegen.cpp:
(JSC::FunctionBodyNode::emitBytecode):
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createFunctionBody):
(JSC::ASTBuilder::setFunctionNameStart):
* parser/Lexer.cpp:
(JSC::::shiftLineTerminator):
- Removed an unused SourceCode Lexer<T>::sourceCode() function.
* parser/Lexer.h:
(JSC::Lexer::positionBeforeLastNewline):
(JSC::Lexer::prevTerminator):
- Added tracking of m_positionBeforeLastNewline in the Lexer to enable us
  to exclude the close brace / appended code for functions created from "global
  code".
* parser/Nodes.cpp:
(JSC::ProgramNode::ProgramNode):
(JSC::ProgramNode::create):
(JSC::EvalNode::EvalNode):
(JSC::EvalNode::create):
(JSC::FunctionBodyNode::FunctionBodyNode):
(JSC::FunctionBodyNode::create):
(JSC::FunctionBodyNode::setEndPosition):
- setEndPosition() is needed to fixed up the end position so that we can
  exclude the close brace / appended code for functions created from "global
  code".
* parser/Nodes.h:
(JSC::ProgramNode::startColumn):
(JSC::ProgramNode::endColumn):
(JSC::EvalNode::startColumn):
(JSC::EvalNode::endColumn):
(JSC::FunctionBodyNode::setFunctionNameStart):
(JSC::FunctionBodyNode::functionNameStart):
(JSC::FunctionBodyNode::endColumn):
* parser/Parser.cpp:
(JSC::::parseFunctionBody):
(JSC::::parseFunctionInfo):
* parser/Parser.h:
(JSC::Parser::positionBeforeLastNewline):
(JSC::::parse):
- Subtracted 1 from startColumn here to keep the node column values consistently
  base-0. See note 2 above.
(JSC::parse):
* parser/SourceProviderCacheItem.h:
(JSC::SourceProviderCacheItem::SourceProviderCacheItem):
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createFunctionBody):
(JSC::SyntaxChecker::setFunctionNameStart):
* runtime/CodeCache.cpp:
(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getProgramCodeBlock):
(JSC::CodeCache::getEvalCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):
* runtime/CodeCache.h:
* runtime/Executable.cpp:
(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::FunctionExecutable::FunctionExecutable):
(JSC::ProgramExecutable::initializeGlobalProperties):
(JSC::FunctionExecutable::fromGlobalCode):
* runtime/Executable.h:
(JSC::ExecutableBase::isEvalExecutable):
(JSC::ExecutableBase::isProgramExecutable):
(JSC::ScriptExecutable::ScriptExecutable):
(JSC::ScriptExecutable::endColumn):
(JSC::ScriptExecutable::recordParse):
(JSC::FunctionExecutable::create):
(JSC::FunctionExecutable::bodyIncludesBraces):
* runtime/FunctionConstructor.cpp:
(JSC::constructFunctionSkippingEvalEnabledCheck):
* runtime/FunctionPrototype.cpp:
(JSC::insertSemicolonIfNeeded):
(JSC::functionProtoFuncToString):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::createProgramCodeBlock):
(JSC::JSGlobalObject::createEvalCodeBlock):

Source/WebCore:

Test: js/dom/script-start-end-locations.html

* ForwardingHeaders/bytecode: Added.
* ForwardingHeaders/bytecode/CodeBlock.h: Added.
* WebCore.exp.in:
* testing/Internals.cpp:
(WebCore::GetCallerCodeBlockFunctor::GetCallerCodeBlockFunctor):
(WebCore::GetCallerCodeBlockFunctor::operator()):
(WebCore::GetCallerCodeBlockFunctor::codeBlock):
(WebCore::Internals::parserMetaData):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
- Added an exported symbol to make the Win32 build happy. The Win64 symbol
  is currently a copy of the Win32 one. It'll need to be updated if the
  mangled symbol is different for Win64.

LayoutTests:

* fast/events/window-onerror2-expected.txt:
* inspector-protocol/debugger/setBreakpoint-actions-expected.txt:
* js/dom/script-start-end-locations-expected.txt: Added.
* js/dom/script-start-end-locations.html: Added.
* js/dom/script-tests/script-start-end-locations.js: Added.
* js/dom/stack-trace-expected.txt:
* js/dom/stack-trace.html:
- Changed tabs to spaces. The tabs were making it hard to visually confirm
  the exected column values for 2 functions.

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

6 years ago[MSE] Support fastSeek() in MediaSource.
jer.noble@apple.com [Tue, 19 Nov 2013 21:39:43 +0000 (21:39 +0000)]
[MSE] Support fastSeek() in MediaSource.
https://bugs.webkit.org/show_bug.cgi?id=124422

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-fastseek.html

* Modules/mediasource/MediaSource.cpp:
* Modules/mediasource/MediaSource.h:

Add support for "seek to the next fastest time" in MediaSource by
returning the time of the nearest Sync sample.

Move the data structure logic out of SourceBuffer and into it's own
class:
* Modules/mediasource/SampleMap.cpp: Added.
(WebCore::SampleIsLessThanMediaTimeComparator::operator()):
(WebCore::SampleIsGreaterThanMediaTimeComparator::operator()):
(WebCore::SampleIsRandomAccess::operator()):
(WebCore::SamplePresentationTimeIsWithinRangeComparator::operator()):
(WebCore::SampleMap::addSample):
(WebCore::SampleMap::removeSample):
(WebCore::SampleMap::findSampleContainingPresentationTime):
(WebCore::SampleMap::findSampleAfterPresentationTime):
(WebCore::SampleMap::findSampleWithDecodeTime):
(WebCore::SampleMap::reverseFindSampleContainingPresentationTime):
(WebCore::SampleMap::reverseFindSampleBeforePresentationTime):
(WebCore::SampleMap::reverseFindSampleWithDecodeTime):
(WebCore::SampleMap::findSyncSamplePriorToPresentationTime):
(WebCore::SampleMap::findSyncSamplePriorToDecodeIterator):
(WebCore::SampleMap::findSyncSampleAfterPresentationTime):
(WebCore::SampleMap::findSyncSampleAfterDecodeIterator):
(WebCore::SampleMap::findSamplesBetweenPresentationTimes):
(WebCore::SampleMap::findDependentSamples):
* Modules/mediasource/SampleMap.h: Added.
(WebCore::SampleMap::presentationBegin):
(WebCore::SampleMap::presentationEnd):
(WebCore::SampleMap::decodeBegin):
(WebCore::SampleMap::decodeEnd):
(WebCore::SampleMap::reversePresentationBegin):
(WebCore::SampleMap::reversePresentationEnd):
(WebCore::SampleMap::reverseDecodeBegin):
(WebCore::SampleMap::reverseDecodeEnd):

Add logic to find and return the time of the next & previous sync
sample, within the threshold provided:
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::TrackBuffer::TrackBuffer):
(WebCore::SourceBuffer::sourceBufferPrivateSeekToTime):
(WebCore::SourceBuffer::sourceBufferPrivateFastSeekTimeForMediaTime):
(WebCore::SourceBuffer::appendBufferTimerFired):
(WebCore::SourceBuffer::setActive):
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
(WebCore::SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples):
(WebCore::SourceBuffer::provideMediaData):
* Modules/mediasource/SourceBuffer.h:
* platform/graphics/SourceBufferPrivate.h:
(WebCore::SourceBufferPrivate::setActive):
* platform/graphics/SourceBufferPrivateClient.h:
(WebCore::SourceBufferPrivateClient::sourceBufferPrivateFastSeekTimeForMediaTime):
(WebCore::SourceBufferPrivateClient::sourceBufferPrivateSeekToTime):

Add new files to the project:
* WebCore.xcodeproj/project.pbxproj:

Drive-by fixes in HTMLMediaElement:
* html/HTMLMediaSource.h:
* html/HTMLMediaElement.cpp:
(HTMLMediaElement::finishSeek): Cause the MediaSource to check the ready state of all its buffers.
(HTMLMediaElement::selectNextSourceChild): Pass in whether the source element has a MediaSource URL.

Implement the seekWithTolerance behavior in MockMediaPlayerMediaSource:
* platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
(WebCore::MockMediaPlayerMediaSource::maxTimeSeekableDouble):
(WebCore::MockMediaPlayerMediaSource::currentTimeDouble):
(WebCore::MockMediaPlayerMediaSource::seekWithTolerance):
(WebCore::MockMediaPlayerMediaSource::advanceCurrentTime):
* platform/mock/mediasource/MockMediaPlayerMediaSource.h:
* platform/mock/mediasource/MockMediaSourcePrivate.cpp:
(WebCore::MockMediaSourcePrivate::seekToTime):
* platform/mock/mediasource/MockMediaSourcePrivate.h:
* platform/mock/mediasource/MockSourceBufferPrivate.cpp:
(WebCore::MockMediaSample::flags):
(WebCore::MockSourceBufferPrivate::setActive):
(WebCore::MockSourceBufferPrivate::fastSeekTimeForMediaTime):
(WebCore::MockSourceBufferPrivate::seekToTime):
* platform/mock/mediasource/MockSourceBufferPrivate.h:

LayoutTests:

* media/media-source/media-source-fastseek-expected.txt: Added.
* media/media-source/media-source-fastseek.html: Added.
* media/media-source/mock-media-source.js:
(var):

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

6 years ago[Mac] 10X slower than Chrome when drawing a video into a canvas
jer.noble@apple.com [Tue, 19 Nov 2013 21:37:02 +0000 (21:37 +0000)]
[Mac] 10X slower than Chrome when drawing a video into a canvas
https://bugs.webkit.org/show_bug.cgi?id=124599

Reviewed by Dean Jackson.

Improve performance by creating a CGImageRef which directly references the CVPixelBuffer provided
by AVPlayerItemVideoOutput:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::CVPixelBufferGetBytePointerCallback):
(WebCore::CVPixelBufferReleaseBytePointerCallback):
(WebCore::CVPixelBufferReleaseInfoCallback):
(WebCore::createImageFromPixelBuffer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):

Additionally, when asked to paint with an AVPlayerItemVideoOutput, block until the output notifies
its delegate that a pixel buffer is available:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::globalPullDelegateQueue):
(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange):
(WebCore::MediaPlayerPrivateAVFoundationObjC::outputMediaDataWillChange):
(-[WebCoreAVFPullDelegate initWithCallback:]):
(-[WebCoreAVFPullDelegate outputMediaDataWillChange:]):
(-[WebCoreAVFPullDelegate outputSequenceWasFlushed:]):

To further optimize video -> canvas drawing, add a method which can return a PassNativeImage to be
drawn directly onto the canvas, rather than rendering into an intermediary context:
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::nativeImageForCurrentTime):
* html/HTMLVideoElement.h:
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::drawImage):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::nativeImageForCurrentTime):
* platform/graphics/MediaPlayer.h:
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::nativeImageForCurrentTime):

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