[GTK] Add support for running unit tests in the web process
https://bugs.webkit.org/show_bug.cgi?id=118427

Reviewed by Gustavo Noronha Silva.

Some tests, like GObject DOM bindings API tests, run entirely in
the WebProcess, so we just need to start the test from the UI
process and wait until the test finishes running in the
WebProcess. Tests are split in two files, one containing the
actual test that runs in the WebProcess and another one to add the
tests to the glib test system that works as a
proxy. WebProcessTestRunner class starts a private DBus session
bus and starts the tests sending a message to the WebExtension
waiting until it finishes or fails. WebProcess tests are created
by defining a class derived from WebProcessTest class and
implementing the static create method and the virtual runTest
method. The macro REGISTER_TEST is used by the web process tests
to register their test cases. This patch includes the migration
of the WebKitDOMNode test, all other GObject DOM bindings tests
will be migrated in the same way in follow up patches.

* UIProcess/API/gtk/tests/DOMNodeTest.cpp: Added.
(WebKitDOMNodeTest::create): Create a new WebKitDOMNodeTest.
(WebKitDOMNodeTest::webPageFromArgs): Get the pageID parameter
from the arguments dictionary.
(WebKitDOMNodeTest::testHierarchyNavigation):
(WebKitDOMNodeTest::testInsertion):
(WebKitDOMNodeTest::runTest): Run the given test.
(registerTests): Register test cases.
* UIProcess/API/gtk/tests/GNUmakefile.am: Add new files to
compilation.
* UIProcess/API/gtk/tests/TestDOMNode.cpp: Added.
(testWebKitDOMNodeHierarchyNavigation):
(testWebKitDOMNodeInsertion):
(beforeAll):
(afterAll):
* UIProcess/API/gtk/tests/TestMain.cpp:
(main): Unset DBUS_SESSION_BUS_ADDRESS environment variable to
make sure that the GLib bus singleton is initialized by the
private DBus session bus created by the tests.
* UIProcess/API/gtk/tests/WebProcessTest.cpp: Added.
(testsMap): Initialize and get the global map of tests.
(WebProcessTest::add): Add a new test to the map, keeping a
function to create the test.
(WebProcessTest::create): Create a test for the given name.
(methodCallCallback): Handle RunTest DBus method. It creates and
runs the given test.
(webkit_web_extension_initialize):Register the DBus service for
this WebExtension.
* UIProcess/API/gtk/tests/WebProcessTest.h: Added.
* UIProcess/API/gtk/tests/WebProcessTestRunner.cpp: Added.
(WebProcessTestRunner::WebProcessTestRunner): Start a private DBus
session bus and get a connection to it.
(WebProcessTestRunner::~WebProcessTestRunner): Stop the private
DBus session bus.
(WebProcessTestRunner::proxyCreatedCallback):
(WebProcessTestRunner::proxy): Create a new proxy to send messages
to the WebExtension if it doesn't exists.
(WebProcessTestRunner::onNameAppeared): Called when the DBus
service has been registered in the WebExtension and it's safe to
create a proxy.
(WebProcessTestRunner::onNameVanished): Called when the DBus
service is unregistered. This happens when the web process crash,
so we just exit here, because the g_asserts in the web process
have already registered the error message.
(WebProcessTestRunner::testFinishedCallback): Called when the
WebProcess tests has finished.
(WebProcessTestRunner::runTest): Send a message to the
WebExtension to start the given test and monitor the service.
(WebProcessTestRunner::finishTest): Save the test result and
finish the main loop.
* UIProcess/API/gtk/tests/WebProcessTestRunner.h: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153327 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Build fix: add missing #include.
https://bugs.webkit.org/show_bug.cgi?id=119087

Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-07-25
Reviewed by Allan Sandfeld Jensen.

* bytecode/ArrayProfile.cpp:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153328 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed build fix after r153218.

Broke the EFL port build with gcc 4.7.

* interpreter/StackIterator.cpp:
(JSC::printif):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153329 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Shapes] Shape methods and member variables should be guarded with the CSS_SHAPES flag
https://bugs.webkit.org/show_bug.cgi?id=117277

Reviewed by Alexandru Chiculita.

This patch adds some compile guards that were missing from the RenderStyle and
StyleRareNonInheritedData files. When the compile guard caused parameters to
not be used, the parameters were marked using UNUSED_PARAM.

* css/CSSPropertyNames.in: Inserting a line to trigger build.
* rendering/RenderBlock.cpp:
(WebCore::shapeInfoRequiresRelayout):
(WebCore::RenderBlock::updateRegionsAndShapesBeforeChildLayout):
(WebCore::RenderBlock::logicalRightFloatOffsetForLine):
* rendering/RenderBox.cpp:
(WebCore::isCandidateForOpaquenessTest):
* rendering/RenderBox.h:
* rendering/RenderObject.h:
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresLayout):
(WebCore::RenderStyle::changeRequiresRepaint):
* rendering/style/RenderStyle.h:
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
* rendering/style/StyleRareNonInheritedData.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153330 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Optimize the thread locks for API Shims
https://bugs.webkit.org/show_bug.cgi?id=118573

Patch by Yi Shen <max.hong.shen@gmail.com> on 2013-07-25
Reviewed by Geoffrey Garen.

Remove the thread lock from API Shims if the VM has an exclusive thread (e.g. the VM
only used by WebCore's main thread).

Source/JavaScriptCore:

* API/APIShims.h:
(JSC::APIEntryShim::APIEntryShim):
(JSC::APICallbackShim::APICallbackShim):
* runtime/JSLock.cpp:
(JSC::JSLockHolder::JSLockHolder):
(JSC::JSLockHolder::init):
(JSC::JSLockHolder::~JSLockHolder):
(JSC::JSLock::DropAllLocks::DropAllLocks):
(JSC::JSLock::DropAllLocks::~DropAllLocks):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WebCore:

No new tests required since no functionality changed.

* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::commonVM):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153331 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed EFL build fix after r153315.

Use -std=gnu++0x instead of -std=c++0x as we rely on GNU extensions such as
typeof().

* Source/cmake/WebKitHelpers.cmake:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153332 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove lastModifiedDate from ResourceResponse
https://bugs.webkit.org/show_bug.cgi?id=119092

Reviewed by Andreas Kling.

Source/WebCore:

Computing m_lastResponseDate is costly on some platforms and we already have a better way to
get the last response time, so convert the two call sites that used to call ResourceresponseBase::lastModifiedDate()
over to using lastModified() instead.

* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::ResourceResponseBase):
(WebCore::ResourceResponseBase::adopt):
(WebCore::ResourceResponseBase::copyData):
* platform/network/ResourceResponseBase.h:
* platform/network/cf/ResourceResponseCFNet.cpp:
(WebCore::ResourceResponse::platformLazyInit):
* plugins/PluginStream.cpp:
(WebCore::lastModifiedDate):
(WebCore::PluginStream::startStream):

Source/WebKit2:

Update for WebCore changes.

* WebProcess/Plugins/PluginView.cpp:
(WebKit::lastModifiedDate):
Use ResourceResponse::lastModified() to get the last modified date.

(WebKit::PluginView::Stream::didReceiveResponse):
Call the static lastModified function.

(WebKit::PluginView::manualLoadDidReceiveResponse):
Ditto.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153333 268f45cc-cd09-0410-ab3c-d52691b4dbfc
More 32bit build fixes

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