[Win][WebGL] Crash on exit
https://bugs.webkit.org/show_bug.cgi?id=120764

Patch by peavo@outlook.com <peavo@outlook.com> on 2013-10-04
Reviewed by Martin Robinson.

On exit, libGLESv2.dll is detached from the process and relevant memory is released
before the atexit GL context cleanup handler is called, causing a NULL pointer crash.
The GL context cleanup code was originally written to avoid a X server crash on exit,
so it's only needed for PLATFORM(X11).

* platform/graphics/GLContext.cpp: Only clean up active GL contexts on exit for PLATFORM(X11).
(WebCore::GLContext::cleanupSharedX11Display):
(WebCore::GLContext::cleanupActiveContextsAtExit):
(WebCore::GLContext::GLContext):
(WebCore::GLContext::~GLContext):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156893 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add svn:ignore to *.pyc files in inspector/Scripts directory, so that they don't
show up as unversioned all the time.

* inspector/Scripts: Added property svn:ignore.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156894 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove Qt features from build and test tools
https://bugs.webkit.org/show_bug.cgi?id=122312

Reviewed by Anders Carlsson.

* Scripts/build-dumprendertree:
* Scripts/build-jsc:
* Scripts/build-webkit:
* Scripts/build-webkittestrunner:
* Scripts/old-run-webkit-tests:
(openDumpTool):
(buildPlatformResultHierarchy):
(buildPlatformTestHierarchy):
(readSkippedFiles):
* Scripts/run-launcher:
* Scripts/run-qtwebkit-tests: Removed.
* Scripts/run-webkit-tests:
(useNewRunWebKitTests):
* Scripts/update-webkit:
* Scripts/webkit-build-directory:
* Scripts/webkitdirs.pm:
(argumentsForConfiguration):
(jscProductDir):
(builtDylibPathForName):
(isAppleWebKit):
(launcherPath):
(launcherName):
(checkRequiredSystemConfig):
(setupCygwinEnv):
(copyInspectorFrontendFiles):
(setPathForRunningWebKitApp):
* Scripts/webkitpy/common/checkout/baselineoptimizer.py:
* Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
(BaselineOptimizerTest.test_mac_future):
(BaselineOptimizerTest.test_win_does_not_drop_to_win_7sp0):
(BaselineOptimizerTest.test_common_directory_includes_root):
(BaselineOptimizerTest.test_virtual_ports_filtered):
* Scripts/webkitpy/common/checkout/changelog_unittest.py:
(test_parse_reviewer_text):
* Scripts/webkitpy/common/config/watchlist:
* Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
(PortTest.disabled_test_chromium_mac_lion_in_test_shell_mode):
* Scripts/webkitpy/port/base.py:
(Port.__init__):
(Port._port_flag_for_scripts):
(Port._wk2_port_name):
* Scripts/webkitpy/port/builders.py:
* Scripts/webkitpy/port/factory.py:
(platform_options):
(PortFactory):
(PortFactory._default_port):
* Scripts/webkitpy/port/factory_unittest.py:
(FactoryTest.test_gtk):
* Scripts/webkitpy/port/qt.py: Removed.
* Scripts/webkitpy/port/qt_unittest.py: Removed.
* Scripts/webkitpy/style/checker.py:
* Scripts/webkitpy/style/checker_unittest.py:
(GlobalVariablesTest.test_path_rules_specifier):
* Scripts/webkitpy/style/checkers/cmake.py:
(CMakeChecker):
* Scripts/webkitpy/style/checkers/cpp.py:
(_classify_include):
(check_include_line):
(check_identifier_name_in_declaration):
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(OrderOfIncludesTest.test_classify_include):
(WebKitStyleTest.test_names):
* Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
(TestExpectationsTestCase.test_determine_port_from_expectations_path):
* Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
(TestRebaselineTest.test_baseline_directory):
* Scripts/webkitpy/tool/main.py:
(WebKitPatch):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156895 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add callOperation to Baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=122306

Reviewed by Geoffrey Garen.

Created baseline JIT compatible versions for a few flavors of callOperation().
Migrated cti_op_new_regexp() and its caller to callOperation(operationNewRegexp()).

* dfg/DFGOperations.cpp: Moved operationNewRegexp() to JITOperations
* dfg/DFGOperations.h:
* jit/JIT.h:
(JSC::JIT::appendCall):
* jit/JITInlines.h:
(JSC::JIT::appendCallWithExceptionCheck):
(JSC::JIT::appendCallWithExceptionCheckSetJSValueResult):
(JSC::JIT::callOperation):
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_new_regexp):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* jit/JITStubs.cpp:
* jit/JITStubs.h:
* jit/JSInterfaceJIT.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156896 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Watchlist is broken after <http://trac.webkit.org/r156880>

* Scripts/webkitpy/common/config/watchlist: Remove an incorrect change.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156897 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[mac][wk2] ScrollPinningBehaviors, SpacebarScrolling, and ScrollByLineCommands fail after r156793
https://bugs.webkit.org/show_bug.cgi?id=122299

Reviewed by Beth Dakin.

* TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp:
* TestWebKitAPI/Tests/WebKit2/mac/EditorCommands.mm:
The last fix didn't work; instead of trying to block, turn off threaded scrolling for all three tests.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156898 268f45cc-cd09-0410-ab3c-d52691b4dbfc
remove dpranke from webkitpy watchlist
https://bugs.webkit.org/show_bug.cgi?id=122331

Reviewed by Brent Fulgham.

* Scripts/webkitpy/common/config/watchlist:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156899 268f45cc-cd09-0410-ab3c-d52691b4dbfc
FTL: Crash in OSRExit::convertToForward() using VirtualRegister.offset() as array index
https://bugs.webkit.org/show_bug.cgi?id=122332

Reviewed by Oliver Hunt.

Changed the uses of .offset(), which returns a negative number for locals, to be
toLocal() which returns a local's ordinal number.

* ftl/FTLOSRExit.cpp:
(JSC::FTL::OSRExit::convertToForward):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156900 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Tests added in r141354 erroneously assume correction suggestion to be in the context menu
https://bugs.webkit.org/show_bug.cgi?id=113742

Reviewed by Ryosuke Niwa.

Tests from r141354 erroneously assume that all WebKit ports populate
spell checking suggestion in the context menu.

Remove verification of spell checking suggestion and all context menu stuff from tests
that do that unnecessarily. Instead of that check whether spelling markers behave correctly,
for example, after deleting a text, double click or selecting a misspellings.

However, two tests are adapted to verify spell checking suggestions (their availability
rather than correctness, similarly to context-menu-suggestions.html).
Those are useful for ports which populate spelling suggestion in the context menu.

* editing/spelling/resources/util.js:
(initSpellTest):
Do not assume that the tests are running with "Windows" editing behavior.
Unix ports do not make a selection for the misspelled word and they don't
require selection to get spell checking suggestions.

* editing/spelling/spelling-changed-text-expected.txt:
* editing/spelling/spelling-changed-text.html:
* editing/spelling/spelling-double-clicked-word-expected.txt:
* editing/spelling/spelling-double-clicked-word.html:
* editing/spelling/spelling-exactly-selected-word-expected.txt:
* editing/spelling/spelling-exactly-selected-word.html:
Remove verification of correction suggestion.
Instead of that check whether the spelling markers behave correctly.

* editing/spelling/context-menu-suggestions-multiword-selection-expected.txt: Renamed from LayoutTests/editing/spelling/spelling-multiword-selection-expected.txt.
* editing/spelling/context-menu-suggestions-multiword-selection.html: Renamed from LayoutTests/editing/spelling/spelling-multiword-selection.html.
* editing/spelling/context-menu-suggestions-subword-selection-expected.txt: Renamed from LayoutTests/editing/spelling/spelling-subword-selection-expected.txt.
* editing/spelling/context-menu-suggestions-subword-selection.html: Renamed from LayoutTests/editing/spelling/spelling-subword-selection.html.
Adapt those tests for platforms which populate spell check suggestion
in the context menu.

* platform/efl-wk2/TestExpectations:
Now context-menu-suggestions-multiword-selection.html and
context-menu-suggestions-subword-selection.html are passing for EFL.

* platform/gtk-wk2/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac-wk2/TestExpectations:
* platform/win/TestExpectations:
* platform/wincairo/TestExpectations:
Update tests path due to rename.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156901 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Optimize strings copies in srcset parser
https://bugs.webkit.org/show_bug.cgi?id=121899

Patch by Romain Perier <romain.perier@gmail.com> on 2013-10-04
Reviewed by Alexey Proskuryakov.

No new tests, covered by existing ones.

* html/parser/HTMLParserIdioms.cpp:
(WebCore::parseImagesWithScaleFromSrcsetAttribute): Don't copy
image.imageURL at each loop iteration, save indexes instead.
(WebCore::bestFitSourceForImageAttributes): Make a String for
the URL only when the corresponding candidate is chosen
by the selection algorithm. It reduces the number of copies
significantly and improves performance
(around 30% with the "Release" profile and 60% with the "Debug" one).



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156902 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Node: removedFrom() and insertedInto() should use references.
<https://webkit.org/b/122315>

Reviewed by Anders Carlsson.

ContainerNode* -> ContainerNode&

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156903 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Tighten markContainingBlocksForLayout
https://bugs.webkit.org/show_bug.cgi?id=122326

Reviewed by Anders Carlsson.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156904 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Shapes] Shape Outside should relayout when set dynamically
https://bugs.webkit.org/show_bug.cgi?id=122197

Reviewed by Alexandru Chiculita.

Source/WebCore:

Tests: fast/shapes/shape-outside-floats/shape-outside-dynamic-shape.html
       fast/shapes/shape-outside-floats/shape-outside-dynamic-shape-overhang.html

When shape outside is modified, dependent content needs to relayout. This patch
removes the float from the float lists and marks dependents for layout using
RenderBox::removeFloatingOrPositionedChildFromBlockLists(). This is the same
method used when switching from float: left to float: right and vice versa
(see RenderElement::styleWillChange).

* rendering/RenderBox.cpp:
(WebCore::RenderBox::updateShapeOutsideInfoAfterStyleChange): Mark shape-outside dependents
for layout.
* rendering/RenderBox.h:
(WebCore::RenderBox::markShapeOutsideDependentsForLayout): Mark all the items that may be
affected by this shape-outside for relayout.

LayoutTests:

Test that a shape can be dynamically added, modified, or removed and that
content does a proper relayout.

* fast/shapes/shape-outside-floats/shape-outside-dynamic-shape-overhang-expected.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-dynamic-shape-overhang.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-dynamic-shape-expected.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-dynamic-shape.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156905 268f45cc-cd09-0410-ab3c-d52691b4dbfc
FTL::OSRExit::convertToForward() shouldn't misuse Operands<>::operator[]
https://bugs.webkit.org/show_bug.cgi?id=122336

Reviewed by Geoffrey Garen.

Changed code in change set r156900 to use the operand() accessor instead of operator[].

* ftl/FTLOSRExit.cpp:
(JSC::FTL::OSRExit::convertToForward):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156906 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[WebIDL] Annotate IDL interfaces under Source/WebCore/xml/ with the OperationsNotDeletable attribute
https://bugs.webkit.org/show_bug.cgi?id=122269

Reviewed by Darin Adler.

Before changing the JSC bindings generator to enforce WebIDL operations to be configurable, all the
interfaces are being annotated with the OperationsNotDeletable attribute. The attribute currently
doesn't have any effect, but will keep the operations not configurable after the generator is modified
to preserve the original behavior. The attribute will be removed from each interface after checking
conformity with other browsers (in terms of configurability of operations of that interface) and the
WebKit's existing test suites.

This patch covers IDL interfaces under Source/WebCore/xml/.

* xml/DOMParser.idl:
* xml/XMLHttpRequest.idl:
* xml/XMLHttpRequestException.idl:
* xml/XMLHttpRequestUpload.idl:
* xml/XMLSerializer.idl:
* xml/XPathEvaluator.idl:
* xml/XPathException.idl:
* xml/XPathExpression.idl:
* xml/XPathNSResolver.idl:
* xml/XPathResult.idl:
* xml/XSLTProcessor.idl:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156907 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[WebIDL] Annotate IDL interfaces under Source/WebCore/dom/ with the OperationsNotDeletable attribute
https://bugs.webkit.org/show_bug.cgi?id=122271

Reviewed by Darin Adler.

Before changing the JSC bindings generator to enforce WebIDL operations to be configurable, all the
interfaces are being annotated with the OperationsNotDeletable attribute. The attribute currently
doesn't have any effect, but will keep the operations not configurable after the generator is modified
to preserve the original behavior. The attribute will be removed from each interface after checking
conformity with other browsers (in terms of configurability of operations of that interface) and the
WebKit's existing test suites.

This patch covers IDL interfaces under Source/WebCore/dom/.

* dom/CharacterData.idl:
* dom/ChildNode.idl:
* dom/ClientRectList.idl:
* dom/Clipboard.idl:
* dom/CompositionEvent.idl:
* dom/CustomEvent.idl:
* dom/DOMCoreException.idl:
* dom/DOMImplementation.idl:
* dom/DOMNamedFlowCollection.idl:
* dom/DOMStringList.idl:
* dom/DOMStringMap.idl:
* dom/DataTransferItem.idl:
* dom/DataTransferItemList.idl:
* dom/DeviceMotionEvent.idl:
* dom/DeviceOrientationEvent.idl:
* dom/Document.idl:
* dom/DocumentFragment.idl:
* dom/DocumentType.idl:
* dom/Element.idl:
* dom/Event.idl:
* dom/EventException.idl:
* dom/EventListener.idl:
* dom/EventTarget.idl:
* dom/KeyboardEvent.idl:
* dom/MessageEvent.idl:
* dom/MessagePort.idl:
* dom/MouseEvent.idl:
* dom/MutationEvent.idl:
* dom/MutationObserver.idl:
* dom/NamedNodeMap.idl:
* dom/Node.idl:
* dom/NodeFilter.idl:
* dom/NodeIterator.idl:
* dom/NodeList.idl:
* dom/Range.idl:
* dom/RangeException.idl:
* dom/ShadowRoot.idl:
* dom/Text.idl:
* dom/TextEvent.idl:
* dom/TouchEvent.idl:
* dom/TouchList.idl:
* dom/TreeWalker.idl:
* dom/UIEvent.idl:
* dom/WebKitNamedFlow.idl:
* dom/WheelEvent.idl:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156908 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[WebIDL] Annotate IDL interfaces under Source/WebCore/fileapi/ with the OperationsNotDeletable attribute
https://bugs.webkit.org/show_bug.cgi?id=122275

Reviewed by Darin Adler.

Before changing the JSC bindings generator to enforce WebIDL operations to be configurable, all the
interfaces are being annotated with the OperationsNotDeletable attribute. The attribute currently
doesn't have any effect, but will keep the operations not configurable after the generator is modified
to preserve the original behavior. The attribute will be removed from each interface after checking
conformity with other browsers (in terms of configurability of operations of that interface) and the
WebKit's existing test suites.

This patch covers IDL interfaces under Source/WebCore/fileapi/.

* fileapi/Blob.idl:
* fileapi/FileException.idl:
* fileapi/FileList.idl:
* fileapi/FileReader.idl:
* fileapi/FileReaderSync.idl:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156909 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Support for-of syntax
https://bugs.webkit.org/show_bug.cgi?id=122339

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Add support for for-of syntax to JSC.  As part of doing this I had to make
us support unique empty strings as identifiers.  In a follow on patch i'm
going to remove the distinction entirely as it's purely a complicating
separation.

Otherwise the logic here is fairly self-explanatory.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::addConstant):
(JSC::BytecodeGenerator::emitCall):
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::CallArguments::CallArguments):
(JSC::ForOfNode::emitBytecode):
* jit/JITOperations.cpp:
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createForOfLoop):
* parser/NodeConstructors.h:
(JSC::EnumerationNode::EnumerationNode):
(JSC::ForInNode::ForInNode):
(JSC::ForOfNode::ForOfNode):
* parser/Nodes.h:
* parser/Parser.cpp:
(JSC::::parseVarDeclarationList):
(JSC::::parseForStatement):
* parser/Parser.h:
(JSC::Parser::isofToken):
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createForOfLoop):
* runtime/ArrayIteratorPrototype.cpp:
(JSC::ArrayIteratorPrototype::finishCreation):
(JSC::arrayIteratorPrototypeIterate):
* runtime/ArrayPrototype.cpp:
(JSC::ArrayPrototype::create):
(JSC::ArrayPrototype::finishCreation):
* runtime/ArrayPrototype.h:
* runtime/CommonIdentifiers.cpp:
(JSC::CommonIdentifiers::CommonIdentifiers):
* runtime/CommonIdentifiers.h:
* runtime/Identifier.h:
(JSC::Identifier::from):
* runtime/JSCJSValue.cpp:
(JSC::JSValue::dumpInContext):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::reset):
* runtime/JSObject.cpp:
(JSC::JSObject::putDirectNativeFunction):
* runtime/PrivateName.h:
(JSC::PrivateName::PrivateName):
* runtime/PropertyName.h:
(JSC::PropertyName::PropertyName):

Source/WTF:

Update assertions and add a helper function to StringImpl
to save repeated unique or identifier calls.

* wtf/text/StringImpl.h:
(WTF::StringImpl::isIdentifierOrUnique):
(WTF::StringImpl::setIsIdentifier):
(WTF::StringImpl::setIsAtomic):

LayoutTests:

Add test cases for the one type that supports for-of so far

* js/basic-for-of-expected.txt: Added.
* js/basic-for-of.html: Added.
* js/regress/for-of-iterate-array-entries.html: Added.
* js/regress/for-of-iterate-array-keys.html: Added.
* js/regress/for-of-iterate-array-values.html: Added.
* js/regress/script-tests/for-of-iterate-array-entries.js: Added.
(foo):
* js/regress/script-tests/for-of-iterate-array-keys.js: Added.
(foo):
* js/regress/script-tests/for-of-iterate-array-values.js: Added.
(foo):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156910 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Made WinLauncher have better error handling, crash reporting, and modifiability.
https://bugs.webkit.org/show_bug.cgi?id=122319

Patch by Alex Christensen <achristensen@webkit.org> on 2013-10-04
Reviewed by Brent Fulgham.

* WinLauncher/WinLauncher.cpp:
(WinLauncherWebHost::didFailProvisionalLoadWithError):
Don't display the numerous "Cancelled" messages that are obviously from the user.
(createCrashReport): Added.
(dllLauncherEntryPoint):
Made main loop back into while loop and write a crash report if it crashes.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj:
* WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters:
Added WinLauncherReplace.h.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props:
Added linking to DbgHelp.lib.
* WinLauncher/WinLauncherReplace.h:
Added to make modifying WinLauncher behaviour and appearance easy.
(processCrashDump): Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156911 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Inserting a JS generated keyframe animation shouldn't trigger a whole document style recalc
https://bugs.webkit.org/show_bug.cgi?id=119479

Patch by Ralph Thomas <ralpht@gmail.com> on 2013-10-04
Reviewed by Antti Koivisto.

Change CSSStyleSheet::didMutateRules to not invalidate all node's styles when inserting a
@-webkit-keyframes rule, and to instead insert the rule directly into the StyleResolver.

Test: animation/keyframes-dynamic.html: adds and removes keyframe rules using JavaScript and
validates that the correct elements are animated.

* css/CSSStyleSheet.cpp:
(WebCore::CSSStyleSheet::didMutateRules):
(WebCore::CSSStyleSheet::insertRule):
* css/CSSStyleSheet.h:

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