React to Accessibility being enabled/disabled globally

Change-Id: I57a85682d132bfefcdb0e3d1b3065f0474317e32
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Wait on sync point fences instead of creating a new fence

Posting a runnable on the GPU thread's message loop and creating a GL
fence sync there assumes that there is a current GL context, and that
synchronizing with this context will make sure that we wait for all
GL context producing any of our consumed texture mailboxes.

This is however not always the case like when:
- The current GL context on the GPU thread is destroyed right before
  our runnable is handled, displaying errors on the console that
  glFlush needs a current context.
- The GL driver will do extra scheduling and let the scene graph
  thread synchronize its GL command stream only with the GL context
  in which the fence sync was created.

To remedy the situation, make sure that Chromium creates a fence sync
for every sync points associated with a mailbox that we consume and
do so directly in the GL context associated with the originating
glInsertSyncPointCHROMIUM call. Wait for all those syncs on the Qt
side afterward.

This might also help with a few erratic behaviors noticed on some
embedded GL drivers.

Change-Id: I5fc60fcf51497477b2e1b3a535d0a141954fc6e5
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Support using MessagePumpForUIQt in standalone base::Threads

We currently assume that MessagePumpForUIQt will only be used on Qt's
GUI thread but OSX and Windows do have some cases where TYPE_UI is
used for non-UI threads. This currently causes asserts in debug on
OSX since the DNS thread quits prematurely.

Instead of overriding all those edge cases to use TYPE_DEFAULT,
properly support MessagePumpForUIQt::Run by using a QEventLoop.

Change-Id: Icdb65966867ca6fd3679c75a698007f63848babc
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Avoid duplicating timers in MessagePumpForUIQt

Since DoDelayedWork always returns the time of the next delayed work
to process, we would create a new timer for the same event every
time we process an event. This would cause a timer starvation on
Windows for example.

Instead of blindly creating timers, keep track of the requested delay
and create a new timer only if the new delay is shorted than the
currently scheduled one.

Change-Id: I2606231f0a48b8feb85f058a78eb772d26b222f3
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Revert "Revert "Improve roles""

This reverts commit 0540dc569e5761378182485aadf4c91641f67d56.
The change in qtbase is in and qt5.git has been updated.

Change-Id: I6c44d2d8316e4f05a4f480ed276967d026c7a130
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Try harder to return accessible names

Always check if there is another accessible set as title for the one
queried. For text fields also return the placeholder property if nothing
else is set.

Change-Id: I3f10ff04338a405ad8de00e75e15dded4aaeed3b
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Settings for Qt quick

Expose settings in experimental for now.
Simply use the global/per-view mechanism as a group level
in between seems like overkill.

Change-Id: I7610e9c7765ccb41674702acdd24a52b87716da8
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
[Win] Enable multiple processes again.

This seems to work well with the Chromium 37-based snapshot.

Change-Id: If7640bf7f2428db12eb2bd01707ef82df9014cf2
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Settings in test browser

Expose some "testable" settings as well as test the integration with
the QML Settings API.

Change-Id: I7ec6a7e695f60338b2c16a648e9a93b64ea29a94
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Don't forward loading of error pages to the API layer

The fact that the error pages are HTML and get loaded through the
same mechanism should be kept an implementation detail and not be
considered as a new load in the API sense.
Also implement HasErrorPage for good measure and remove an anoying
warning from the demo browser.

The issue of the url not being changed remains in the QML test (but
it doesn't affect a typical browser-like UI since the user input is
still there untouched in the address bar), just make sure that failure
does not affect the later checks. It also seems like we have a focus
problem somehow, but the test should probably use a click for that
matter.

Change-Id: Ib5e363981a11287fdf4bfe84b93c999d96ed8087
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Update src/3rdparty to include fixes for the alpha packaging

Change-Id: I048ffb55c6205373aa7c5a7e0a3d9e824415b379
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
[Win] Add gnuwin32\bin directory to PATH.

This is necessary for finding gperf, bison, yacc, etc. on Windows.
Works only if the gnuwin32 directory is on the same level as the
qtwebengine root directory, which is the case with a qt checkout.

Change-Id: I09fe1523d4e4baca6612f1039bbba2e2ff9d87c0
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Hardcode the module version to not confuse syncqt.pl

syncqt.pl uses a combination of echo and sed to retrieve
the module version. It cannot run qmake, which would be
necessary for evaluating the version dynamically.

Change-Id: Ibdd95da5dc26edf18f005ab7f82e83136acd795e
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
[Win] Fix compiler error by using toQt method for string16.

Change-Id: I3412c8e7315020f517039290b03282513569ef2d
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Fix an assertion in net/url_request/url_request.cc:656

Instead of cancelling the request we have to set error to
net::ERR_ABORTED since URLRequest::BeforeRequestComplete
enforces not receiving cancelled requests with an assertion.
Our API requires the symmetric LoadStarten - LoadStopped
signals even on an ignored request so cancelling the request
and returning early would not be a solution, since it would
not emit any LoadStopped signal.

Change-Id: I1b13fe6520121805bcf420e810999c520c12bd5c
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Reviewed-by: Michael Bruning <michael.bruning@digia.com>
[Win64] Do not skip 64 bit builds on Windows.

Chromium has enabled this in the 37 based branch and it worked
with Qt WebEngine as well.

Change-Id: Idb1f9a2133be645cd044c9f0163cc87f6ae8e474
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Fix url stored in LoadRequest

The test_urlProperty() qml test has failed because the active url was
stored in LoadRequest in case of LoadFailedStatus.
With this fix the loadRequest stores the url of that page which implies
the request.

Change-Id: I6aab814a4a7d3b47043b03fccde3d9995b40d8fa
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
Split QMAKE_FRAMEWORKPATH in case there are multiple paths.

Change-Id: If391781604861961387019ea15e9c29b6a1e3e1a
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Bump the Xcode minimum version to 5.1

Upstream Chromium hasn't been building with the version of clang
available in Xcode 5.0 for a while and we have to disable the build
until we see a benefit to maintain this build environment.

Change-Id: Ia91844dc7f3be1b1623610be417409d0d065c623
Reviewed-by: Michael Bruning <michael.bruning@digia.com>
Generate moc and rcc files in the gyp build directory

The real problem that this patch fixes is that moc and rcc generated
files are added to the gyp sources variable with an absolute path,
which for some reason triggers gyp to place the output file in the
same directory as the source instead of the Release or Debug
directories. This causes the last compiled file to be shared by both
the release and debug builds when building debug-and-release, and
MSVC will fail linking if the linked files have incompatible CRTs.

This patch fixes the issue by moving both the generated cpp files
and their compiled objects under <(SHARED_INTERMEDIATE_DIR), which
points to (Release|Debug)/gen.

Change-Id: I4143340acf56c3c7ed665aaae8f6221c310aafa9
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Reviewed-by: Michael Bruning <michael.bruning@digia.com>