Giter Site home page Giter Site logo

wpewebkit's Introduction

WebKit

WebKit is a cross-platform web browser engine. On iOS and macOS, it powers Safari, Mail, iBooks, and many other applications.

Feature Status

Visit WebKit Feature Status page to see which Web API has been implemented, in development, or under consideration.

Trying the Latest

On macOS, download Safari Technology Preview to test the latest version of WebKit. On Linux, download Epiphany Technology Preview. On Windows, you'll have to build it yourself.

Reporting Bugs

  1. Search WebKit Bugzilla to see if there is an existing report for the bug you've encountered.
  2. Create a Bugzilla account to to report bugs (and to comment on them) if you haven't done so already.
  3. File a bug in accordance with our guidelines.

Once your bug is filed, you will receive email when it is updated at each stage in the bug life cycle. After the bug is considered fixed, you may be asked to download the latest nightly and confirm that the fix works for you.

Getting the Code

Run the following command to clone WebKit's Git repository:

git clone https://github.com/WebKit/WebKit.git WebKit

Building WebKit

Building macOS Port

Install Xcode and its command line tools if you haven't done so already:

  1. Install Xcode Get Xcode from https://developer.apple.com/downloads. To build WebKit for OS X, Xcode 5.1.1 or later is required. To build WebKit for iOS Simulator, Xcode 7 or later is required.
  2. Install the Xcode Command Line Tools In Terminal, run the command: xcode-select --install

Run the following command to build a debug build with debugging symbols and assertions:

Tools/Scripts/build-webkit --debug

For performance testing, and other purposes, use --release instead.

Using Xcode

You can open WebKit.xcworkspace to build and debug WebKit within Xcode.

If you don't use a custom build location in Xcode preferences, you have to update the workspace settings to use WebKitBuild directory. In menu bar, choose File > Workspace Settings, then click the Advanced button, select "Custom", "Relative to Workspace", and enter WebKitBuild for both Products and Intermediates.

Embedded Builds

iOS, tvOS and watchOS are all considered embedded builds. The first time after you install a new Xcode, you will need to run:

sudo Tools/Scripts/configure-xcode-for-embedded-development

Without this step, you will see the error message: "target specifies product type ‘com.apple.product-type.tool’, but there’s no such product type for the ‘iphonesimulator’ platform." when building target JSCLLIntOffsetsExtractor of project JavaScriptCore.

Run the following command to build a debug build with debugging symbols and assertions for embedded simulators:

Tools/Scripts/build-webkit --debug --<platform>-simulator

or embedded devices:

Tools/Scripts/build-webkit --debug --<platform>-device

where platform is ios, tvos or watchos.

Building the GTK+ Port

For production builds:

cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=RelWithDebInfo -GNinja
ninja
sudo ninja install

For development builds:

Tools/gtk/install-dependencies
Tools/Scripts/update-webkitgtk-libs
Tools/Scripts/build-webkit --gtk --debug

For more information on building WebKitGTK+, see the wiki page.

Building the WPE Port

For production builds:

cmake -DPORT=WPE -DCMAKE_BUILD_TYPE=RelWithDebInfo -GNinja
ninja
sudo ninja install

For development builds:

Tools/wpe/install-dependencies
Tools/Scripts/update-webkitwpe-libs
Tools/Scripts/build-webkit --wpe --debug

Building Windows Port

For building WebKit on Windows, see the WebKit on Windows page.

Running WebKit

With Safari and Other macOS Applications

Run the following command to launch Safari with your local build of WebKit:

Tools/Scripts/run-safari --debug

The run-safari script sets the DYLD_FRAMEWORK_PATH environment variable to point to your build products, and then launches /Applications/Safari.app. DYLD_FRAMEWORK_PATH tells the system loader to prefer your build products over the frameworks installed in /System/Library/Frameworks.

To run other applications with your local build of WebKit, run the following command:

Tools/Scripts/run-webkit-app <application-path>

iOS Simulator

Run the following command to launch iOS simulator with your local build of WebKit:

run-safari --debug --ios-simulator

In both cases, if you have built release builds instead, use --release instead of --debug.

Linux Ports

If you have a development build, you can use the run-minibrowser script, e.g.:

run-minibrowser --debug --wpe

Pass one of --gtk, --jsc-only, or --wpe to indicate the port to use.

Contribute

Congratulations! You’re up and running. Now you can begin coding in WebKit and contribute your fixes and new features to the project. For details on submitting your code to the project, read Contributing Code.

wpewebkit's People

Contributors

achristensen07 avatar alanbaradlay avatar anttijk avatar aproskuryakov avatar aroben avatar bdash avatar beidson avatar brentfulgham avatar carlosgcampos avatar cdumez avatar constellation avatar darinadler avatar dcrousso avatar ddkilzer avatar eseidel avatar geoffreygaren avatar hortont424 avatar jernoble avatar josephpecoraro avatar ossy-szeged avatar othermaciej avatar philn avatar rniwa avatar ryanhaddad avatar smfr avatar webkit-commit-queue avatar weinig avatar whsieh avatar youennf avatar zdobersek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wpewebkit's Issues

Creating new JS window object from c++ code

Hi,
I am using WPE Webkit. I want to create new JS window object (i.e new window.XX) and map it to the c++ function. Could you please tell the way to do this. Thanks.

Regards,
Madan

PageUp/PageDown keys are not working

Easy to reproduce by opening a web page and pressing Page Up/Down on the keyboard.
By modifying WebEditorClientWPE.cpp and replacing command bindings for

    { VK_PRIOR,  0,                  "MovePageUp"                              },
    { VK_NEXT,   0,                  "MovePageDown"                            },

with "ScrollPageBackward" and "ScrollPageForward" appropriately, I was able to make it working, but the keys were only working while editable area was focused on a web page.

Wpe webkit problem with westeros-wpe-image for rpi

I'm trying to compile westeros-wpe-image and face some problem. I had a warning message at 40% but it didn't stopped the compile. But when I arrived to 99% then it reappears and stops the compile. I searched but didn't found anything about it. So the problem is the compile get problem with the wpe webkit. I post the log here

Loading cache...done.
Loaded 2219 entries from dependency cache.
Parsing recipes...done.
Parsing of 1618 .bb files complete (1617 cached, 1 parsed). 2220 targets, 194 skipped, 0 masked, 0 errors.
WARNING: No recipes available for:
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.2.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.8.2.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.8.3.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.6.2.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.6.3.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.8.2.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.8.3.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.6.2.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.6.3.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.8.2.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.8.3.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.8.2.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.8.3.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0_1.6.2.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0_1.6.3.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0_1.8.2.bbappend
/home/Alexis/meta-wpe/recipes-multimedia/gstreamer/gstreamer1.0_1.8.3.bbappend
/home/Alexis/meta-wpe/recipes-support/icu/icu_56%.bbappend
/home/Alexis/meta-wpe/recipes-support/icu/icu_57%.bbappend
NOTE: Resolving any missing task queue dependencies
--
Build Configuration:
BB_VERSION = "1.33.4"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "universal-4.8"
TARGET_SYS = "arm-poky-linux-gnueabi"
MACHINE = "raspberrypi2"
DISTRO = "poky"
DISTRO_VERSION = "2.2+snapshot-20170419"
TUNE_FEATURES = "arm armv7ve vfp thumb neon vfpv4 callconvention-hard cortexa7"
TARGET_FPU = "hard"
meta
meta-poky
meta-yocto-bsp = "master:94467d5087ca3b13e7baac670af107550701b333"
meta-raspberrypi = "master:4b0bc450e08e6836744c97d21e72600f8320fc05"
meta-96boards = "master:a38418d43ed4453215d4adc3c4ea440b0c64721b"
meta-wpe = "master:9be346658ad0ab375dc1a61a53ac3f8ca65a6d83"
meta-oe
meta-multimedia = "master:2cdea6c5bb09aa90184c17c9157f4fed0e10b3c2"
--
Initialising tasks...done.
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Running task 2755 of 4703 (/home/Alexis/meta-wpe/recipes-wpe/wpewebkit/wpewebkit_0.1.bb:do_compile)
NOTE: recipe wpewebkit-0.1+gitAUTOINC+4983973988-r0: task do_compile: Started
Log data follows:
| DEBUG: Executing shell function do_compile
| [1/1014] Generate bindings (WebCoreBindings)
| [2/150] cd /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/build/Source/WebKit2 && /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/recipe-sysroot-native/usr/bin/perl-native/perl /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Scripts/generate-forwarding-headers.pl --include-path /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2 --output /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/build/DerivedSources/ForwardingHeaders --platform wpe --platform soup
| [3/150] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/WebKit2InitializeWPE.cpp.o
| [4/150] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebTouchEventWPE.cpp.o
| FAILED: Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebTouchEventWPE.cpp.o
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ @Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebTouchEventWPE.cpp.o.rsp -MD -MT Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebTouchEventWPE.cpp.o -MF Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebTouchEventWPE.cpp.o.d -o Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebTouchEventWPE.cpp.o -c /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebTouchEventWPE.cpp
| In file included from /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebTouchEventWPE.cpp:29:0:
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.h:43:12: error: 'WebTouchEvent' does not name a type
| static WebTouchEvent createWebTouchEvent(struct wpe_input_touch_event*);
| ^~~~~~~~~~~~~
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebTouchEventWPE.cpp:33:1: error: 'NativeWebTouchEvent' does not name a type
| NativeWebTouchEvent::NativeWebTouchEvent(struct wpe_input_touch_event* event)
| ^~~~~~~~~~~~~~~~~~~
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebTouchEventWPE.cpp:36:1: error: expected unqualified-id before '{' token
| {
| ^
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebTouchEventWPE.cpp:46:1: error: expected '}' at end of input
| } // namespace WebKit
| ^
| [5/150] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebMouseEventWPE.cpp.o
| FAILED: Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebMouseEventWPE.cpp.o
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ @Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebMouseEventWPE.cpp.o.rsp -MD -MT Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebMouseEventWPE.cpp.o -MF Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebMouseEventWPE.cpp.o.d -o Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebMouseEventWPE.cpp.o -c /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebMouseEventWPE.cpp
| In file included from /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebMouseEventWPE.cpp:29:0:
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.h:43:12: error: 'WebTouchEvent' does not name a type
| static WebTouchEvent createWebTouchEvent(struct wpe_input_touch_event*);
| ^~~~~~~~~~~~~
| [6/150] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebWheelEventWPE.cpp.o
| FAILED: Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebWheelEventWPE.cpp.o
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ @Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebWheelEventWPE.cpp.o.rsp -MD -MT Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebWheelEventWPE.cpp.o -MF Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebWheelEventWPE.cpp.o.d -o Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebWheelEventWPE.cpp.o -c /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebWheelEventWPE.cpp
| In file included from /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebWheelEventWPE.cpp:29:0:
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.h:43:12: error: 'WebTouchEvent' does not name a type
| static WebTouchEvent createWebTouchEvent(struct wpe_input_touch_event*);
| ^~~~~~~~~~~~~
| [7/150] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebKeyboardEventWPE.cpp.o
| FAILED: Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebKeyboardEventWPE.cpp.o
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ @Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebKeyboardEventWPE.cpp.o.rsp -MD -MT Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebKeyboardEventWPE.cpp.o -MF Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebKeyboardEventWPE.cpp.o.d -o Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/NativeWebKeyboardEventWPE.cpp.o -c /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebKeyboardEventWPE.cpp
| In file included from /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/NativeWebKeyboardEventWPE.cpp:29:0:
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.h:43:12: error: 'WebTouchEvent' does not name a type
| static WebTouchEvent createWebTouchEvent(struct wpe_input_touch_event*);
| ^~~~~~~~~~~~~
| [8/150] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/ProcessExecutablePathWPE.cpp.o
| [9/150] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/WebEventFactory.cpp.o
| FAILED: Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/WebEventFactory.cpp.o
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ @Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/WebEventFactory.cpp.o.rsp -MD -MT Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/WebEventFactory.cpp.o -MF Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/WebEventFactory.cpp.o.d -o Source/WebKit2/CMakeFiles/WebKit2.dir/Shared/wpe/WebEventFactory.cpp.o -c /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.cpp
| In file included from /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.cpp:27:0:
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.h:43:12: error: 'WebTouchEvent' does not name a type
| static WebTouchEvent createWebTouchEvent(struct wpe_input_touch_event*);
| ^~~~~~~~~~~~~
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.cpp:154:16: error: 'WebPlatformTouchPoint' in namespace 'WebKit' does not name a type
| static WebKit::WebPlatformTouchPoint::TouchPointState stateForTouchPoint(int mainEventId, const struct wpe_input_touch_event_raw* point)
| ^~~~~~~~~~~~~~~~~~~~~
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.cpp:174:1: error: 'WebTouchEvent' does not name a type
| WebTouchEvent WebEventFactory::createWebTouchEvent(struct wpe_input_touch_event* event)
| ^~~~~~~~~~~~~
| [10/150] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/C/cairo/WKIconDatabaseCairo.cpp.o
| [11/150] Building CXX object Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/WebPage/WebPage.cpp.o
| FAILED: Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/WebPage/WebPage.cpp.o
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ @Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/WebPage/WebPage.cpp.o.rsp -MD -MT Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/WebPage/WebPage.cpp.o -MF Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/WebPage/WebPage.cpp.o.d -o Source/WebKit2/CMakeFiles/WebKit2.dir/WebProcess/WebPage/WebPage.cpp.o -c /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
| In file included from /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/WebProcess/WebPage/WebPage.cpp:77:0:
| /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/git/Source/WebKit2/Shared/wpe/WebEventFactory.h:43:12: error: 'WebTouchEvent' does not name a type
| static WebTouchEvent createWebTouchEvent(struct wpe_input_touch_event*);
| ^~~~~~~~~~~~~
| ninja: build stopped: subcommand failed.
| WARNING: /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/temp/run.do_compile.1403:1 exit 1 from '/home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/recipe-sysroot-native/usr/bin/ninja -j 8 libWPEWebKit.so libWPEWebInspectorResources.so WPEWebProcess WPENetworkProcess WPEDatabaseProcess'
| ERROR: Function failed: do_compile (log file is located at /home/Alexis/rpi-ml-build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/wpewebkit/0.1+gitAUTOINC+4983973988-r0/temp/log.do_compile.1403)
NOTE: recipe wpewebkit-0.1+gitAUTOINC+4983973988-r0: task do_compile: Failed
NOTE: Tasks Summary: Attempted 4665 tasks of which 4664 didn't need to be rerun and 1 failed.
--
Summary: 1 task failed:
/home/Alexis/meta-wpe/recipes-wpe/wpewebkit/wpewebkit_0.1.bb:do_compile
Summary: There was 1 WARNING message shown.
Summary: There was 1 ERROR message shown, returning a non-zero exit code.`

I used this tutorial for the compile "https://github.com/Comcast/rdk-on-raspberrypi"

If you have any idea to help me, Ill take it !

No antialias

I've built the wpe buildroot and I cannot figure out why canvas or webgl are not antialiased.

Platform is a Raspberry Pi 2.

Network process use >100% CPU on Youtube UI navigation PI2 (Yocto)

Start youtube and try rapidly change video categories (Recommended, Trending, Music, etc)

export XDG_RUNTIME_DIR=/tmp
export WAYLAND_DISPLAY=main0

westeros --renderer libwesteros_render_dispmanx.so.0.0.0 --framerate 60 --display ${WAYLAND_DISPLAY} --enableCursor &

WPELauncher https://youtube.com/tv

See CPU usage in top

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 1130 root      20   0  234452  30112  17416 S 172.8  4.9   1:10.01 WPENetworkProce                                                                                                                                
 1132 root      20   0  417736 144640  43420 R 111.9 23.7   1:23.16 WPEWebProcess 

Instructions on how to build image: https://github.com/Comcast/rdk-on-raspberrypi

Newest version doesn't builds with punch hole gstreamer set

I get this error:
../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: In member function 'void WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor()':
../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:684:70: error: cannot bind 'WTF::RefPtrWebCore::GraphicsContext3D' lvalue to 'WTF::RefPtrWebCore::GraphicsContext3D&&'
RefPtr texture = adoptRef(new BitmapTextureGL(m_context3D));
^
In file included from ../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:80:0:

The lines may be shifted as I have some own patches also, but basically the problem is that m_context3D.copyRef() has to be used as it was before.

Thread leak during clean up

We have browser working as service in our system. We are using westeros backend.
We create WKContext, WKView runtime as request to load page comes.
Once request is done we delete the WKContext and WKView and release the resources.

What we observe is that there is thread leak happening for "ReceiveQueue" threads.
These ReceiveQueue threads are created by IPC::Connection through WorkQueue.

Source/WebKit2/Platform/IPC/Connection.cpp
When releasing the resources, the 2 ReceiveQueue threads are going in deadlock state.

WorkQueue destructor ~WorkQueue() is getting called in the same thread.
It is calling WorkQueue::platformInvalidate() which calls wait as below.
m_terminateRunLoopCondition.wait(m_terminateRunLoopConditionMutex);

This condition is notified by the same thread and hence the thread goes in deadlock state.

Below link provides the backtrace of the stack that we see for the deadlocked threads.
Out of these top 6 threads have leaked.
https://gist.github.com/aazamansari/40494a4036aeebfacd0c25a106b22229

Below is an example code of how we load the page and then cleanup the resources.
https://gist.github.com/aazamansari/f64b3d8db8f89c51097c83899961a36b

[EME] can't play Playready DASH content with latest buildroot-wpe RPi2 image

Tried playing PR DASH content using dash.hs v2.3 and bitdash players on the RPi2 but both of them failed. dec12 branches can play the content so it seems to be a regression.

bitdash link:
http://52.8.38.95/bitdash-demo/playready.html
Error log:
# GST_DEBUG=3 WPELauncher http://52.8.38.95/bitdash-demo/playready.html [LibinputServer] Initialization of linux input system succeeded. [WPEInjectedBundle] Initialized. didClearWindowObjectForFrame https://bitmovin-a.akamaihd.net/bitmovin-player/beta/7/bitmovinplayer.js:12:347736: CONSOLE LOG %cAdaptive Video Streaming Service by www.bitmovin.com color:blue;font-weight:bold;font-size:14px; https://bitmovin-a.akamaihd.net/bitmovin-player/beta/7/bitmovinplayer.js:12:360400: CONSOLE LOG Player Version 7.1.0-b5 [WPELauncher] Hello InjectedBundle ... [WPEInjectedBundle] Hello! array item: Test1 array item: Test2 array item: Test3 http://52.8.38.95/bitdash-demo/playready.html:128:16: CONSOLE LOG Successfully created bitmovin player instance 0:00:02.927517603 1644 0x3256c0 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc1:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:02.932637603 1644 0x325920 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc3:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id Closed connection for Provisioning. 3 0:00:04.207678019 1644 0x6f102380 ERROR webkitmediaplayer MediaPlayerPrivateGStreamerBase.cpp:1554:generateKeyRequest: the key request wasn't properly generated HTMLMediaElement::webkitGenerateKeyRequest() result 1 0:00:04.378625832 1644 0x325580 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:04.380343592 1644 0x325580 WARN qtdemux qtdemux_types.c:223:qtdemux_type_get: unknown QuickTime node type ainf 0:00:04.457243071 1644 0x325980 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc2:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:04.458340884 1644 0x325980 WARN qtdemux qtdemux_types.c:223:qtdemux_type_get: unknown QuickTime node type ainf [WPELauncher] 22.80FPS 0:00:05.099118852 1644 0x6f102380 ERROR default AppendPipeline.cpp:764:didReceiveInitializationSegment: Unsupported stream type or codec 0:00:05.100230207 1644 0x6f102380 WARN default AppendPipeline.cpp:1064:disconnectDemuxerSrcPadFromAppsinkFromAnyThread: Not disconnecting demuxer src pad because it wasn't linked 0:00:05.102302759 1644 0x6f102380 WARN default AppendPipeline.cpp:1064:disconnectDemuxerSrcPadFromAppsinkFromAnyThread: Not disconnecting demuxer src pad because it wasn't linked https://bitmovin-a.akamaihd.net/bitmovin-player/beta/7/bitmovinplayer.js:12:405938: CONSOLE WARN MediaSource is not open (readyState=closed) 0:00:05.491921665 1644 0x325580 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc5:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:05.494371404 1644 0x325980 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc7:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id Closed connection for Provisioning. 3 0:00:06.710759373 1644 0x6f102380 ERROR webkitmediaplayer MediaPlayerPrivateGStreamerBase.cpp:1554:generateKeyRequest: the key request wasn't properly generated HTMLMediaElement::webkitGenerateKeyRequest() result 1

Dash.js link:
http://52.8.38.95/dash.js/samples/playready.html
Error log:
[LibinputServer] Initialization of linux input system succeeded. [WPEInjectedBundle] Initialized. didClearWindowObjectForFrame didClearWindowObjectForFrame http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [60] EME detected on this user agent! (ProtectionModel_01b) http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [78] Playback Initialized http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [137] [dash.js 2.3.0] MediaPlayer has been initialized [WPELauncher] Hello InjectedBundle ... [WPEInjectedBundle] Hello! array item: Test1 array item: Test2 array item: Test3 http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [410] Parsing complete: ( xml2json: 80.0ms, objectiron: 109ms, total: 0.189s) http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [417] Manifest has been refreshed at Mon Feb 13 2017 20:31:06 GMT+0000 (UTC)[1487017866.06] http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [440] SegmentTimeline detected using calculated Live Edge Time http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [465] MediaSource attached to element. Waiting on open... http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [650] MediaSource is open! http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [652] Duration successfully set to: 734.167 http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [657] Added 0 inline events http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [662] video codec: video/mp4;codecs="avc1.640028" http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [712] Schedule controller stopping for video http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [756] audio codec: audio/mp4;codecs="mp4a.40.2" http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [771] Schedule controller stopping for audio http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [775] No text data. http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [775] No fragmentedText data. http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [779] No embeddedText data. http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [779] No muxed data. 0:00:01.543359792 2088 0x19e5a90 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc1:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:01.546606198 2088 0x19e5b80 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc3:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [827] DRM: KeySystem Access Granted (com.microsoft.playready)! Selecting key system... http://52.8.38.95/dash.js/dist/dash.all.debug.js:26114:28: CONSOLE LOG systemID is 9a04f079-9840-4286-ab92-e65be0885f95 Closed connection for Provisioning. 3 HTMLMediaElement::webkitGenerateKeyRequest() result 0 http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2133] Start Event Controller http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2150] Schedule controller starting for video http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2153] Schedule controller starting for audio http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2207] DRM: onKeyMessage http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2211] keymessage is <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><AcquireLicense xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols"><challenge><Challenge xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/messages"><LA xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols" Id="SignedData" xml:space="preserve"><Version>1</Version><ContentHeader> http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2212] keySystemString com.microsoft.playready http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2212] messageType license-request http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2213] onKeyMessage: gurdal1 http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2213] onKeyMessage: gurdal2 url is http://playready.directtaps.net/pr/svc/rightsmanager.asmx?PlayRight=1&UseSimpleNonPersistentLicense=1 http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2214] onKeyMessage: gurdal3 http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2220] Native video element event: play http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2261] Init fragment finished loading saving to video's init cache 0:00:03.004214270 2088 0x19e6af0 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:03.006198072 2088 0x19e6af0 WARN qtdemux qtdemux_types.c:223:qtdemux_type_get: unknown QuickTime node type ainf http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2288] Init fragment finished loading saving to audio's init cache 0:00:03.025406510 2088 0x19e6c90 FIXME default gstutils.c:3826:gst_pad_create_stream_id_internal:<appsrc2:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:03.025958281 2088 0x19e6c90 WARN qtdemux qtdemux_types.c:223:qtdemux_type_get: unknown QuickTime node type ainf 0:00:03.027680572 2088 0x6fd02380 ERROR default AppendPipeline.cpp:764:didReceiveInitializationSegment: Unsupported stream type or codec 0:00:03.029865728 2088 0x6fd02380 WARN default AppendPipeline.cpp:1064:disconnectDemuxerSrcPadFromAppsinkFromAnyThread: Not disconnecting demuxer src pad because it wasn't linked 0:00:03.031712812 2088 0x6fd02380 WARN default AppendPipeline.cpp:1064:disconnectDemuxerSrcPadFromAppsinkFromAnyThread: Not disconnecting demuxer src pad because it wasn't linked http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2329] Caught pending play exception - continuing ([object DOMError]) http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2334] Video Element Error: MEDIA_ERR_SRC_NOT_SUPPORTED http://52.8.38.95/dash.js/dist/dash.all.debug.js:2917:24: CONSOLE LOG [2334] [object MediaError]

smashcat canvas test doesn't work on PI2 (Yocto image)

We see a black screen after starting WPELauncher:

export XDG_RUNTIME_DIR=/tmp
export WAYLAND_DISPLAY=main0

westeros --renderer libwesteros_render_dispmanx.so.0.0.0 --framerate 60 --display ${WAYLAND_DISPLAY} --enableCursor &

WPELauncher http://www.smashcat.org/av/canvas_test/

Instructions on how to build image: https://github.com/Comcast/rdk-on-raspberrypi

P.S.:
Expected to see about 20-22 FPS reported by smashcat test. Bigger numbers would indicate another ISSUE with rendering!!!

Assert in WebKit::ThreadedCompositor::~ThreadedCompositor

(gdb) bt
#0  0x74aa24b8 in WTFCrash () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Assertions.cpp:324
#1  0x72cec070 in WebKit::ThreadedCompositor::~ThreadedCompositor (this=0x6dbfa230, __in_chrg=<optimized out>)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:81
#2  0x72cec15c in WebKit::ThreadedCompositor::~ThreadedCompositor (this=0x6dbfa230, __in_chrg=<optimized out>)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:82
#3  0x72cedb68 in WTF::ThreadSafeRefCounted<WebKit::ThreadedCompositor>::deref (this=0x6dbfa234)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/ThreadSafeRefCounted.h:79
#4  0x72d26444 in derefIfNotNull<WebKit::ThreadedCompositor> (ptr=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/PassRefPtr.h:40
#5  ~RefPtr (this=0x6dba01d0, __in_chrg=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/RefPtr.h:62
#6  WebKit::ThreadedCoordinatedLayerTreeHost::~ThreadedCoordinatedLayerTreeHost (this=0x6dba0000, __in_chrg=<optimized out>)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:54
#7  0x72d2649c in WebKit::ThreadedCoordinatedLayerTreeHost::~ThreadedCoordinatedLayerTreeHost (this=0x6dba0000, __in_chrg=<optimized out>)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:56
#8  0x72d28580 in deref (this=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/RefCounted.h:145
#9  derefIfNotNull<WebKit::LayerTreeHost> (ptr=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/PassRefPtr.h:40
#10 WTF::RefPtr<WebKit::LayerTreeHost>::~RefPtr (this=<optimized out>, __in_chrg=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/RefPtr.h:62
#11 0x72d28148 in WebKit::DrawingAreaWPE::~DrawingAreaWPE (this=0x4650d0, __in_chrg=<optimized out>)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/WebPage/wpe/DrawingAreaWPE.cpp:26
#12 0x72d281a0 in WebKit::DrawingAreaWPE::~DrawingAreaWPE (this=0x4650d0, __in_chrg=<optimized out>)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/WebPage/wpe/DrawingAreaWPE.cpp:28
#13 0x72ca763c in std::default_delete<WebKit::DrawingArea>::operator() (__ptr=<optimized out>, this=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/include/c++/bits/unique_ptr.h:76
#14 0x72cafa94 in reset (__p=<optimized out>, this=0x6dbd103c) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/include/c++/bits/unique_ptr.h:344
#15 operator= (this=0x6dbd103c) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/include/c++/bits/unique_ptr.h:280
#16 WebKit::WebPage::close (this=0x6dbd1000) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1107
#17 0x72bf5950 in WebKit::WebProcess::didClose (this=0x43a300) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/WebProcess.cpp:670
#18 0x72a562ec in operator() (__closure=0x6dbec0a4) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/Platform/IPC/Connection.cpp:774
#19 WTF::Function<void()>::CallableWrapper<IPC::Connection::connectionDidClose()::<lambda()> >::call(void) (this=0x6dbec0a0)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Function.h:101
#20 0x72cdd2f8 in WTF::Function<void ()>::operator()() const (this=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Function.h:50
#21 0x74ab9770 in WTF::RunLoop::performWork (this=0x6dbfa000) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/RunLoop.cpp:122
#22 0x74af190c in WTF::RunLoop::RunLoop()::{lambda(void*)#1}::_FUN(void*) () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/glib/RunLoopGLib.cpp:66
#23 0x74af1998 in operator() (__closure=0x0, userData=0x6dbfa000, callback=0x74af18e0 <WTF::RunLoop::RunLoop()::{lambda(void*)#1}::_FUN(void*)>, source=0x439830)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/glib/RunLoopGLib.cpp:44
#24 WTF::<lambda(GSource*, GSourceFunc, gpointer)>::_FUN(GSource *, GSourceFunc, gpointer) ()
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#25 0x70e01a44 in g_main_dispatch (context=0x439780) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gmain.c:3154
#26 g_main_context_dispatch (context=0x439780) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gmain.c:3769
#27 0x70e01ef4 in g_main_context_iterate (context=0x439780, block=1, dispatch=1, self=<optimized out>) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gmain.c:3840
#28 0x70e02554 in g_main_loop_run (loop=0x439820) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gmain.c:4034
#29 0x74af2954 in WTF::RunLoop::run () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/glib/RunLoopGLib.cpp:97
#30 0x72d2a0c0 in WebKit::ChildProcessMain<WebKit::WebProcess, WebKit::WebProcessMain> (argc=3, argv=0x7fec1384)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/Shared/unix/ChildProcessMain.h:61
#31 0x72d29c1c in WebKit::WebProcessMainUnix (argc=<optimized out>, argv=<optimized out>)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/wpe/WebProcessMainWPE.cpp:81
#32 0x00404fdc in main (argc=3, argv=0x7fec1384) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp:52
(gdb) 

.mp3 files not loading or playing

I found that .mp3 files do not load metadata, nor the audio file itself when using wpe. I tried from the own filesystem in a server and from different html5 pages(w3school) and it won't load. It renders a player but it remains loading(I tried 1 hour) and if you hit play it won't play the track. In the inspector I'm not getting any error neither. And how could I get .wav codecs?
I'm using rpi2.

Debug build fails with the following error (master branch)

In file included from ../../Source/WTF/wtf/StdLibExtras.h:33:0,
                 from ../../Source/WTF/wtf/FastMalloc.h:26,
                 from ../../Source/WebCore/config.h:75,
                 from ../../Source/WebCore/platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp:20:
../../Source/WebCore/platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp: In function ‘void gst_allocator_fast_malloc_free(GstAllocator*, GstMemory*)’:
../../Source/WebCore/platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp:60:39: error: ‘allocator’ was not declared in this scope
     ASSERT(G_TYPE_CHECK_INSTANCE_TYPE(allocator, gst_allocator_fast_malloc_get_type()));
                                       ^
../../Source/WTF/wtf/Assertions.h:254:11: note: in definition of macro ‘ASSERT’
     if (!(assertion)) { \
           ^
../../Source/WebCore/platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp:60:39: note: suggested alternative:
     ASSERT(G_TYPE_CHECK_INSTANCE_TYPE(allocator, gst_allocator_fast_malloc_get_type()));
                                       ^
../../Source/WTF/wtf/Assertions.h:254:11: note: in definition of macro ‘ASSERT’
     if (!(assertion)) { \
           ^
In file included from /usr/include/c++/4.9/bits/allocator.h:47:0,
                 from /usr/include/c++/4.9/memory:63,
                 from ../../Source/WTF/wtf/StdLibExtras.h:31,
                 from ../../Source/WTF/wtf/FastMalloc.h:26,
                 from ../../Source/WebCore/config.h:75,
                 from ../../Source/WebCore/platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp:20:
/usr/include/c++/4.9/bits/memoryfwd.h:64:11: note:   ‘std::allocator’
     class allocator;
           ^

Assert in WebKit::ThreadedCompositor::frameComplete

Core was generated by `/usr/bin/WPEWebProcess 36 -1'.
Program terminated with signal SIGBUS, Bus error.
#0  0x755084f8 in WTFCrash () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Assertions.cpp:324
324         *(int *)(uintptr_t)0xbbadbeef = 0;
(gdb) bt
#0  0x755084f8 in WTFCrash () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Assertions.cpp:324
#1  0x737506d4 in WebKit::ThreadedCompositor::frameComplete (this=0x6e5fa230)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:323
#2  0x748b2eec in WebCore::PlatformDisplayWPE::EGLTarget::EGLTarget(WebCore::PlatformDisplayWPE const&, WebCore::PlatformDisplayWPE::EGLTarget::Client&, int)::{lambda(void*)#1}::_FUN(void*) ()
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebCore/platform/graphics/wpe/PlatformDisplayWPE.cpp:93
#3  0x71592f00 in wpe_renderer_backend_egl_target_dispatch_frame_complete (target=<optimized out>)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/ThirdParty/WPE/src/renderer-backend-egl.c:183
#4  0x6e6b710c in operator() (__closure=0x0, callback=<optimized out>, data=0x5a5028c8)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/ThirdParty/WPE-platform/src/westeros/renderer-backend.cpp:229
#5  Westeros::EGLTarget::<lambda(void*, wl_callback*, uint32_t)>::_FUN(void *, wl_callback *, uint32_t) ()
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/ThirdParty/WPE-platform/src/westeros/renderer-backend.cpp:230
#6  0x72305b9c in noretval () at /usr/src/debug/libffi/3.0.13-r0/libffi-3.0.13/src/mips/o32.S:172
#7  0x723056c8 in ffi_call (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>) at /usr/src/debug/libffi/3.0.13-r0/libffi-3.0.13/src/mips/ffi.c:605
#8  0x77deb218 in wl_closure_invoke (closure=<optimized out>, flags=<optimized out>, target=0x5a50d238, opcode=0, data=0x5a5028c8) at /usr/src/debug/wayland/1.6.0-r0/wayland-1.6.0/src/connection.c:934
#9  0x77de7680 in dispatch_event (display=0x441240, queue=<optimized out>) at /usr/src/debug/wayland/1.6.0-r0/wayland-1.6.0/src/wayland-client.c:1136
#10 0x77de7740 in dispatch_queue (display=0x441240, queue=0x4412a8) at /usr/src/debug/wayland/1.6.0-r0/wayland-1.6.0/src/wayland-client.c:1261
#11 0x77de8994 in wl_display_dispatch_queue (display=0x441240, queue=0x4412a8) at /usr/src/debug/wayland/1.6.0-r0/wayland-1.6.0/src/wayland-client.c:1445
#12 0x77de8b34 in wl_display_dispatch (display=<optimized out>) at /usr/src/debug/wayland/1.6.0-r0/wayland-1.6.0/src/wayland-client.c:1512
#13 0x6e6b7098 in operator() (__closure=0x0, base=0x445458)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/ThirdParty/WPE-platform/src/westeros/renderer-backend.cpp:72
#14 Westeros::EventSource::<lambda(GSource*, GSourceFunc, gpointer)>::_FUN(GSource *, GSourceFunc, gpointer) ()
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/ThirdParty/WPE-platform/src/westeros/renderer-backend.cpp:79
#15 0x71867bc8 in g_main_dispatch (context=0x439798) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gmain.c:3154
#16 g_main_context_dispatch (context=0x439798) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gmain.c:3769
#17 0x71867ef4 in g_main_context_iterate (context=0x439798, block=1, dispatch=1, self=<optimized out>) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gmain.c:3840
#18 0x71868554 in g_main_loop_run (loop=0x439838) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gmain.c:4034
#19 0x75558994 in WTF::RunLoop::run () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/glib/RunLoopGLib.cpp:97
#20 0x73790100 in WebKit::ChildProcessMain<WebKit::WebProcess, WebKit::WebProcessMain> (argc=3, argv=0x7fd9e944)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/Shared/unix/ChildProcessMain.h:61
#21 0x7378fc5c in WebKit::WebProcessMainUnix (argc=<optimized out>, argv=<optimized out>)
    at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/wpe/WebProcessMainWPE.cpp:81
#22 0x00404fdc in main (argc=3, argv=0x7fd9e944) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp:52

Build error when trying to build for desktop

[2284/5223] Building CXX object Source/ThirdParty/WPE-platform/CMakeFiles/WPE-platform.dir/src/westeros/renderer-backend.cpp.o
FAILED: /usr/bin/c++   -DBACKEND_WESTEROS=1 -DBUILDING_WITH_CMAKE=1 -DBUILDING_WPE__=1 -DDATA_DIR=\"share\" -DHAVE_CONFIG_H=1 -DKEY_INPUT_HANDLING_XKB=1 -DKEY_INPUT_UDEV=1 -DWPE_platform_EXPORTS -I../../Source/ThirdParty/WPE/include -I../../Source/ThirdParty/WPE-platform/src/external -I../../Source/ThirdParty/WPE-platform/src/input -I../../Source/ThirdParty/WPE-platform/src/util -I../DependenciesWPE/Root/include/gio-unix-2.0 -I../DependenciesWPE/Root/include/glib-2.0 -I../DependenciesWPE/Root/lib/glib-2.0/include -I../DependenciesWPE/Root/include -std=c++1y -gsplit-dwarf -g -fPIC -MMD -MT Source/ThirdParty/WPE-platform/CMakeFiles/WPE-platform.dir/src/westeros/renderer-backend.cpp.o -MF Source/ThirdParty/WPE-platform/CMakeFiles/WPE-platform.dir/src/westeros/renderer-backend.cpp.o.d -o Source/ThirdParty/WPE-platform/CMakeFiles/WPE-platform.dir/src/westeros/renderer-backend.cpp.o -c ../../Source/ThirdParty/WPE-platform/src/westeros/renderer-backend.cpp
../../Source/ThirdParty/WPE-platform/src/westeros/renderer-backend.cpp: In lambda function:
../../Source/ThirdParty/WPE-platform/src/westeros/renderer-backend.cpp:253:32: error: cannot convert ‘wl_display*’ to ‘EGLNativeDisplayType {aka _XDisplay*}’ in return
         return backend.display();
                                ^
In file included from /home/ihor/wpe/WebKitForWayland/WebKitBuild/DependenciesWPE/Root/include/wayland-client.h:36:0,
                 from ../../Source/ThirdParty/WPE-platform/src/westeros/renderer-backend.cpp:32:
/home/ihor/wpe/WebKitForWayland/WebKitBuild/DependenciesWPE/Root/include/wayland-client-core.h:109:8: note: class type ‘wl_display’ is incomplete
 struct wl_display;
        ^
[2284/5223] Building CXX object Source/WebCore/CMakeFiles/WebCoreDerivedSources.dir/__/__/DerivedSources/WebCore/JSSVGElementWrapperFactory.cpp.o
ninja: build stopped: subcommand failed.

Response time is slow when we press OK key in Youtube/tv content.

We are seeing ~3sec delay when we press OK key in Youtube/tv content in Pace XI3 device.
KeyPress event is processed immediately but It takes 2 sec for KeyUp event to reach WebPage::keyEvent() API. After that HTML MediaElement Creation and Gstreamer pipeline starts.

This delay got reduced to ~2sec when we change the optimization flags from Os to O2/O3.

Master branch is not buildable with GCC 4.9

Build failure log:

[49/5418] Building CXX object Source/WTF/wtf/CMakeFiles/WTF.dir/ParkingLot.cpp.o
FAILED: /mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/sysroots/x86_64-linux/usr/bin/mips32el-rdk-linux/mipsel-rdk-linux-g++   -DBUILDING_WITH_CMAKE=1 -DBUILDING_WPE__=1 -DBUILDING_WTF -DDATA_DIR=\"/usr/share\" -DHAVE_CONFIG_H=1 -DUSE_BREAKPAD=1 -DUSE_PLAYREADY=1 -mel -mabi=32 -mhard-float -march=mips32 -Wa,-mno-pdr -fno-omit-frame-pointer -fno-optimize-sibling-calls  --sysroot=/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/sysroots/pacexg1v3  -O2 -g -feliminate-unused-debug-types -Os -g1 -fvisibility-inlines-hidden -I=/usr/include/breakpad  -fpermissive -std=c++1y -O2 -g -feliminate-unused-debug-types -Os -g1  -O2 -g -feliminate-unused-debug-types -Os -g1 -fvisibility-inlines-hidden -I=/usr/include/breakpad  -DNDEBUG -fno-exceptions -fno-strict-aliasing -fno-rtti -fvisibility=hidden -fvisibility-inlines-hidden -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/bmalloc -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf/dtoa -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf/text -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf/text/icu -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf/threads -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf/unicode -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/ThirdParty -I. -IDerivedSources -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/include/glib-2.0 -I/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/lib/glib-2.0/include    -Wall -Wextra -Wformat-security -Wmissing-format-attribute -Wpointer-arith -Wundef -Wwrite-strings -Wno-missing-field-initializers -fPIC -MMD -MT Source/WTF/wtf/CMakeFiles/WTF.dir/ParkingLot.cpp.o -MF "Source/WTF/wtf/CMakeFiles/WTF.dir/ParkingLot.cpp.o.d" -o Source/WTF/wtf/CMakeFiles/WTF.dir/ParkingLot.cpp.o -c /mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf/ParkingLot.cpp
In file included from /mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/include/c++/atomic:41:0,
                 from /mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf/Atomics.h:29,
                 from /mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf/ParkingLot.h:30,
                 from /mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+4498b5edcc-r0/git/Source/WTF/wtf/ParkingLot.cpp:27:
/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/include/c++/bits/atomic_base.h: In member function 'void WTF::WordLockBase::lock()':
/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/include/c++/bits/atomic_base.h:538:70: error: failure memory model cannot be stronger than success memory model for '__atomic_compare_exchange'
  return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2);
                                                                      ^
/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/include/c++/bits/atomic_base.h: In member function 'void WTF::WordLockBase::unlock()':
/mnt/cached/Yocto/NEW/build-pacexg1v3/tmp/sysroots/pacexg1v3/usr/include/c++/bits/atomic_base.h:538:70: error: failure memory model cannot be stronger than success memory model for '__atomic_compare_exchange'
  return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2);
                                                                      ^
[49/5418] Building CXX object Source/WTF/wtf/CMakeFiles/WTF.dir/StringPrintStream.cpp.o

Blank page with remote inspector

Hi,

I am trying wpe wayland and opened remote inspector, only by the below command:

export WEBKIT_INSPECTOR_SERVER=ipaddress:port

I opened http://ipaddress:port in firefox. It is showing the opened URL in inspectable views. When i click that link, JS Pages are downloaded but showing empty page. Please suggest a way to debug this.

Regards,
Madan

1920x1080 output

WPE compiled by buildroot rpi2_wpe_minimal_defconfig yesterday (at afd955b ) and a raspberry pi 2 running in 1080p resolution (hdm_group=1, hdmi_mode=16) results in a 1280x720 (720p) browser content "window", meaning that the page is displayed only in the top left corner of the screen, rest is black. Tried with our own material and the google front page with same results. A environment compiled on 2nd of September doesn't have this same issue.

regarding buildroot-wpe

Hi, I know this is the wrong repo to submit this issue, but there is no public issue tracker over at metrological/buildroot-wpe, and it’s somewhat related to this repo.

Anyways, if you would be so kind to forward this to the buildroot-wpe team. Namely, the download for WebKitForWayland is resolving to sources.buildroot.net.

>>> wpe 622e996fc528212bd0453a076571261d28328d34 Downloading
--2016-12-18 15:08:38--  https://github.com/Metrological/WebKitForWayland/archive/622e996fc528212bd0453a076571261d28328d34/wpe-622e996fc528212bd0453a076571261d28328d34.tar.gz
Resolving github.com (github.com)... 192.30.253.113, 192.30.253.112
Connecting to github.com (github.com)|192.30.253.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/Metrological/WebKitForWayland/tar.gz/622e996fc528212bd0453a076571261d28328d34 [following]
--2016-12-18 15:08:39--  https://codeload.github.com/Metrological/WebKitForWayland/tar.gz/622e996fc528212bd0453a076571261d28328d34
Resolving codeload.github.com (codeload.github.com)... 192.30.253.121, 192.30.253.120
Connecting to codeload.github.com (codeload.github.com)|192.30.253.121|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 979795793 (934M) [application/x-gzip]
Saving to: '/home/ubuntu/buildroot-wpe/output/build/.wpe-622e996fc528212bd0453a076571261d28328d34.tar.gz.gdwm0l/output'

/home/ubuntu/buildroot-wpe/output/build/.wpe 100%[============================================================================================>] 934.41M  1.82MB/s    in 10m 21s 

2016-12-18 15:19:01 (1.51 MB/s) - '/home/ubuntu/buildroot-wpe/output/build/.wpe-622e996fc528212bd0453a076571261d28328d34.tar.gz.gdwm0l/output' saved [979795793/979795793]

WARNING: no hash file for wpe-622e996fc528212bd0453a076571261d28328d34.tar.gz
cat: write error: No space left on device
--2016-12-18 15:19:02--  http://sources.buildroot.net/wpe-622e996fc528212bd0453a076571261d28328d34.tar.gz
Resolving sources.buildroot.net (sources.buildroot.net)... 176.9.16.109
Connecting to sources.buildroot.net (sources.buildroot.net)|176.9.16.109|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2016-12-18 15:19:03 ERROR 404: Not Found.

package/pkg-generic.mk:113: recipe for target '/home/ubuntu/buildroot-wpe/output/build/wpe-622e996fc528212bd0453a076571261d28328d34/.stamp_downloaded' failed
make[1]: *** [/home/ubuntu/buildroot-wpe/output/build/wpe-622e996fc528212bd0453a076571261d28328d34/.stamp_downloaded] Error 1
Makefile:41: recipe for target '_all' failed
make: *** [_all] Error 2

I’m building on Ubuntu 16.04.

[WebGL] Bug in handling of integer uniforms

When you provide a big 32-bit (signed) integer number as a uniform to a vertex shader, and perform operations with it, the least significant byte will not be as expected.

When running this provided code (standalone html page) on a modern browser, you will see a yellow square. The red channel is active if the local integer operation has the correct result, while the green channel is shown when the uniform integer operation has the correct result. Note that the code does nothing more than drawing a square on the screen, please focus on the shaders, the rest is just stuff to make the test work properly.

On the RPi3 running WPE, you will see a red square instead of a yellow one. On closer inspection, the last couple of bits in the integer are incorrect.

My thought is that the integers are casted to floats and then back to integers at some level in WPE when running these operations. The strange thing is, that when you use a local int variable in the vertex shader, things will be normal. But if you try to assign the uniform value to that local variable, the same erronous behaviour of the uniform value is also 'copied' to the local variable.

Another, possibly related, problem is that when you use the division operator on a uniform int32, the result will not be the floored result, but the rounded one. If you enable the 3 commented-out lines in the vertex shader, you will see a purple square on WPE and a white one in your browser.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>WPE WebGL bug</title>
    <style>
    body {
      background-color: #aaa;
      margin: 0;
      padding: 0;
    }
    </style>
  </head>
  <body style="overflow: hidden;">
    <script>
        /**
         * The WebGL Renderer.
         * @constructor
         */
        function Renderer() {

            var w = 1280;
            var h = 720;
            this.w = w;
            this.h = h;

            this.canvas = document.createElement('canvas');
            this.canvas.width = w;
            this.canvas.height = h;

            /**
             * @type {WebGLRenderingContext}
             */
            this.gl = null;

            this.program = null;

            this.vertexShaderSrc = [
                "precision lowp float;",
                "attribute vec2 aVertexPosition;",
                "uniform int u019977f9;",
                "uniform int u66777777;",
                "uniform int u66888888;",
                "varying vec4 vColor;",
                "void main(void){",
                "    gl_Position = vec4(aVertexPosition, 0.0, 1.0);",
                "    float _red = 0.0, _green = 0.0, _blue = 0.0;",
                "    int local = 0x019977f9;",
                "    if ((local - 0x01100000 == 0x008977f9)) _red = 1.0;",
                "    if ((u019977f9 - 0x01100000 == 0x008977f9)) _green = 1.0;",
//                "    if ((0x66888888 / 0x1000000 == 0x66)) _red = 1.0;",
//                "    if ((u66888888 / 0x1000000 == 0x66)) _green = 1.0;",
//                "    if ((u66777777 / 0x1000000 == 0x66)) _blue = 1.0;",
                "    vColor = vec4(_red, _green, _blue, 1);",
                "}"
            ].join("\n");

            this.fragmentShaderSrc = [
                "precision lowp float;",
                "varying vec4 vColor;",
                "void main(void){",
                "    gl_FragColor = vec4(vColor.rgb * vColor.a, vColor.a);",
                "}"
            ].join("\n");

            this.createContext();

            this.paramsGlBuffer = null;
            this.paramsBuffer = new ArrayBuffer(8 * 4 * 10);
            this.glFloat32 = new Float32Array(this.paramsBuffer);

            this.program = null;

            this.vertexPositionAttribute = null;

            this.indicesGlBuffer = null;

            this.initShaderProgram();
        }

        /**
         * @access private
         */
        Renderer.prototype.createContext = function() {
            var opts = {
                alpha: true,
                antialias: false,
                premultipliedAlpha: true,
                stencil: true,
                preserveDrawingBuffer: false
            };

            var gl = this.canvas.getContext('webgl', opts) || this.canvas.getContext('experimental-webgl', opts);
            this.gl = gl;

            if (!gl) {
                throw new Error('This browser does not support webGL.');
            }
        };

        /**
         * @access private
         */
        Renderer.prototype.initShaderProgram = function() {
            var gl = this.gl;

            var glVertShader = this.glCompile(gl.VERTEX_SHADER, this.vertexShaderSrc);
            var glFragShader = this.glCompile(gl.FRAGMENT_SHADER, this.fragmentShaderSrc);

            this.program = gl.createProgram();

            gl.attachShader(this.program, glVertShader);
            gl.attachShader(this.program, glFragShader);
            gl.linkProgram(this.program);

            // if linking fails, then log and cleanup
            if (!gl.getProgramParameter(this.program, gl.LINK_STATUS)) {
                console.error('Error: Could not initialize shader.');
                console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(this.program, gl.VALIDATE_STATUS));
                console.error('gl.getError()', gl.getError());

                // if there is a program info log, log it
                if (gl.getProgramInfoLog(this.program) !== '') {
                    console.warn('Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(this.program));
                }

                gl.deleteProgram(this.program);
                this.program = null;
            }
            gl.useProgram(this.program);

            // clean up some shaders
            gl.deleteShader(glVertShader);
            gl.deleteShader(glFragShader);

            // Bind attributes.
            this.vertexPositionAttribute = gl.getAttribLocation(this.program, "aVertexPosition");

            // Init webgl arrays.

            this.allIndices = new Uint16Array(100000);

            // fill the indices with the quads to draw.
            for (var i = 0, j = 0; i < 10 * 6; i += 6, j += 4) {
                this.allIndices[i] = j;
                this.allIndices[i + 1] = j + 1;
                this.allIndices[i + 2] = j + 2;
                this.allIndices[i + 3] = j;
                this.allIndices[i + 4] = j + 2;
                this.allIndices[i + 5] = j + 3;
            }

            this.paramsGlBuffer = gl.createBuffer();

            this.glFloat32[0] = -0.5;
            this.glFloat32[1] = -0.5;
            this.glFloat32[2] = 0.5;
            this.glFloat32[3] = -0.5;
            this.glFloat32[4] = 0.5;
            this.glFloat32[5] = 0.5;
            this.glFloat32[6] = -0.5;
            this.glFloat32[7] = 0.5;
            gl.bindBuffer(gl.ARRAY_BUFFER, this.paramsGlBuffer);
            gl.bufferData(gl.ARRAY_BUFFER, this.paramsBuffer, gl.DYNAMIC_DRAW);

            this.indicesGlBuffer = gl.createBuffer();
            gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesGlBuffer);
            gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.allIndices, gl.STATIC_DRAW);

            this.u019977f9 = gl.getUniformLocation(this.program, "u019977f9");
            this.u66777777 = gl.getUniformLocation(this.program, "u66777777");
            this.u66888888 = gl.getUniformLocation(this.program, "u66888888");

            gl.uniform1i(this.u019977f9, 0x019977f9);
            gl.uniform1i(this.u66777777, 0x66777777);
            gl.uniform1i(this.u66888888, 0x66888888);

        };

        /**
         */
        Renderer.prototype.renderItems = function() {
            var n;
            var gl = this.gl;

            // Set up WebGL program.
            gl.useProgram(this.program);
            gl.bindFramebuffer(gl.FRAMEBUFFER, null);
            gl.viewport(0,0,this.w,this.h);
            gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
            gl.enable(gl.BLEND);
            gl.disable(gl.DEPTH_TEST);

            // Clear screen.
            gl.clearColor(0, 0, 0, 0);
            gl.clear(gl.COLOR_BUFFER_BIT);

            gl.vertexAttribPointer(this.vertexPositionAttribute, 2, gl.FLOAT, false, 8, 0);
            gl.enableVertexAttribArray(this.vertexPositionAttribute);

            gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesGlBuffer);
            gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0);

            gl.disableVertexAttribArray(this.vertexPositionAttribute);
        };

        /**
         * @access private
         */
        Renderer.prototype.glCompile = function (type, src) {
            var shader = this.gl.createShader(type);

            this.gl.shaderSource(shader, src);
            this.gl.compileShader(shader);

            if (!this.gl.getShaderParameter(shader, this.gl.COMPILE_STATUS)) {
                console.log(this.gl.getShaderInfoLog(shader));
                return null;
            }

            return shader;
        };

        var renderer = new Renderer();
        document.body.appendChild(renderer.canvas);
        setInterval(function() {
            renderer.renderItems();
        }, 1000);
    </script>
  </body>
</html>

Issue with WPEDatabaseProcess

Hello :)

I can not find anywhere the docs to answer my question, "How is the WPEDatabaseProcess created?", except you use indexDB, which I don't. However, when I launch wpe, the process gets created every time.

Crash in wpe_view_backend_dispatch_keyboard_event

Crash thread #22  Filter by example
Frame	Signature	Module	Source
#0	wpe_view_backend_dispatch_keyboard_event	libWPE.so.0.0.20160901	/mnt/jenkins/workspace/PACEXG1V3-Yocto-Build/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+7c4e7020ff-r0/git/Source/ThirdParty/WPE/src/view-backend.c:122 (0x0)
#1	Westeros::WesterosViewbackendInput::handleKeyEvent	libWPE-platform.so	/mnt/jenkins/workspace/PACEXG1V3-Yocto-Build/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+7c4e7020ff-r0/git/Source/ThirdParty/WPE-platform/src/westeros/WesterosViewbackendInput.cpp:158 (0x0)
Thread #0
Frame	Signature	Module	Source
#0	libpthread-2.19.so@0x8650	libpthread-2.19.so	
#1	libwesteros_compositor.so.0.0.0@0xf5fc	libwesteros_compositor.so.0.0.0	
#2	Westeros::ViewBackend::~ViewBackend	libWPE-platform.so	/mnt/jenkins/workspace/PACEXG1V3-Yocto-Build/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+7c4e7020ff-r0/git/Source/ThirdParty/WPE-platform/src/westeros/view-backend.cpp:96 (0x0)
#3	Westeros::ViewBackend::~ViewBackend	libWPE-platform.so	/mnt/jenkins/workspace/PACEXG1V3-Yocto-Build/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+7c4e7020ff-r0/git/Source/ThirdParty/WPE-platform/src/westeros/view-backend.cpp:105 (0x0)
#4	<lambda(void*)>::_FUN	libWPE-platform.so	/mnt/jenkins/workspace/PACEXG1V3-Yocto-Build/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+7c4e7020ff-r0/git/Source/ThirdParty/WPE-platform/src/westeros/view-backend.cpp:129 (0x0)
#5	wpe_view_backend_destroy	libWPE.so.0.0.20160901	/mnt/jenkins/workspace/PACEXG1V3-Yocto-Build/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+7c4e7020ff-r0/git/Source/ThirdParty/WPE/src/view-backend.c:60 (0x0)
#6	WKWPE::View::~View	libWPEWebKit.so.0.0.20160901	/mnt/jenkins/workspace/PACEXG1V3-Yocto-Build/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+7c4e7020ff-r0/git/Source/WebKit2/UIProcess/API/wpe/WPEView.cpp:126 (0x0)
#7	WKWPE::View::~View	libWPEWebKit.so.0.0.20160901	/mnt/jenkins/workspace/PACEXG1V3-Yocto-Build/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+7c4e7020ff-r0/git/Source/WebKit2/UIProcess/API/wpe/WPEView.cpp:127 (0x0)
#8	WKRelease	libWPEWebKit.so.0.0.20160901	/mnt/jenkins/workspace/PACEXG1V3-Yocto-Build/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+7c4e7020ff-r0/git/Source/WTF/wtf/ThreadSafeRefCounted.h:79 (0x0)
#9	rdkbrowser2@0x55304	rdkbrowser2	
#10	rdkbrowser2@0x4ec3c	rdkbrowser2	

Build fails with 'cairo' Repository not found.

Got following build failure on Ubuntu 16.04:

$ Tools/Scripts/update-webkitwpe-libs
...
*** Checking out cairo *** [7/15]
git clone git://github.com/WebKitForWayland/cairo.git
Cloning into 'cairo'...
fatal: remote error: 
  Repository not found.
Failed to build WPE port dependencies with jhbuild

Resizing WPELauncher surface with IVI LayerManagerControl

I'm trying to implement a web view with weston with IVI shell and IVI extensions. By default WPELauncher creates a wayland surface with 800x600 size and everything seems to render normally, but when resizing the surface with LayerManagerControl, the surface resizes to the new size, but the layout is broken and stretched. It seems the new size is not propagated internally to the webkit renderer.

Steps to reproduce:
Launch weston:
weston --tty=4 --idle-time=0 -c .config/weston-ivi.ini

weston-ivi.ini

[core]
shell=ivi-shell.so
idle-time=0

[ivi-shell]
ivi-module=ivi-controller.so

launch WPELauncher:
WAYLAND_DISPLAY=wayland-0 LD_LIBRARY_PATH=WPE ./WPE/WPELauncher http://www.webkit.org/blog-files/3d-transforms/poster-circle.html

And resize the surface:
LayerManagerControl set surface <id> destination region 0 0 1920 1080

I've poked around in WPE code and noticed there is this code in view-backend-wayland.cpp
which looks like it should notify on resize event, but it does not seem to make a difference.

static const struct ivi_surface_listener g_iviSurfaceListener = {
    // configure
    [](void* data, struct ivi_surface*, int32_t width, int32_t height)
    {
        struct wpe_view_backend* backend = static_cast<ViewBackend::ResizingData*>(data)->backend;
        wpe_view_backend_dispatch_set_size(backend, std::max(0, width), std::max(0, height));
        printf("ivi surface configure %d %d\n", width, height);
    },
};

Any help would be appreciated

weston version: 1.11.0
I've tried different branches of WPEWebkit, with the same results.
Ubuntu 16.10

Assert in JSC::JITMathIC<JSC::JITSubGenerator>::generateInline

#13 0x7fcea3e8 in ?? ()
(gdb) bt
#0  0x756344b8 in WTFCrash () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Assertions.cpp:324
#1  0x73c3baa4 in JSC::JITMathIC<JSC::JITSubGenerator>::generateInline (this=<optimized out>, jit=..., state=..., shouldEmitProfiling=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/jit/JITMathIC.h:89
#2  0x73c3ed1c in JSC::JIT::emitMathICFast<JSC::JITSubGenerator, long long (*)(JSC::ExecState*, long long, long long, JSC::ArithProfile*), long long (*)(JSC::ExecState*, long long, long long)> (this=0x7fce9e80, mathIC=0x575f9b60, currentInstruction=0x595e913c, profiledFunction=0x73c564e0 <JSC::operationValueSubProfiled(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::ArithProfile*)>, nonProfiledFunction=0x73c5642c <JSC::operationValueSub(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue)>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/jit/JITArithmetic.cpp:750
#3  0x73c381d4 in JSC::JIT::emit_op_sub (this=0x7fce9e80, currentInstruction=0x595e913c) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/jit/JITArithmetic.cpp:931
#4  0x73c2fc94 in JSC::JIT::privateCompileMainPass (this=0x7fce9e80) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/jit/JIT.cpp:328
#5  0x73c31b6c in JSC::JIT::compileWithoutLinking (this=0x7fce9e80, effort=JSC::JITCompilationCanFail) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/jit/JIT.cpp:613
#6  0x739493d4 in JSC::JITWorklist::Plan::compileInThread (this=0x7fce9e60) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/jit/JITWorklist.cpp:48
#7  0x7394b128 in JSC::JITWorklist::Plan::compileNow (codeBlock=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/jit/JITWorklist.cpp:89
#8  0x739487a4 in JSC::JITWorklist::compileLater (this=0x6e7ee280, codeBlock=0x599a9f00) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/jit/JITWorklist.cpp:217
#9  0x73c98ac8 in JSC::LLInt::jitCompileAndSetHeuristics (codeBlock=0x599a9f00, exec=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:339
#10 0x73c9597c in JSC::LLInt::entryOSR (exec=0x7fcea368, codeBlock=0x599a9f00, name=0x75c7b448 "entry_osr_function_for_construct", kind=JSC::LLInt::Prologue) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:361
#11 0x73c95cd0 in JSC::LLInt::llint_entry_osr_function_for_construct (exec=0x7fcea368, pc=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:391
#12 0x7394d3c0 in llint_entry () from ./usr/lib/libWPEWebKit.so.0
#13 0x7fcea3e8 in ?? ()

Assertion failed in WebCore::AppendPipeline::AppendPipeline

Happened during an attempt to play an MSE video on https://www.youtube.com/tv

#0  0x75588438 in WTFCrash () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Assertions.cpp:324
324         *(int *)(uintptr_t)0xbbadbeef = 0;
(gdb) bt
#0  0x75588438 in WTFCrash () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Assertions.cpp:324
#1  0x74cacc6c in WTF::adoptGRef<_GstElement> (ptr=0x87d040) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp:30
#2  0x748af560 in WebCore::AppendPipeline::AppendPipeline (this=0x51765c30, mediaSourceClient=..., sourceBufferPrivate=..., playerPrivate=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerMSE.cpp:1194
#3  0x748b5a24 in WebCore::MediaSourceClientGStreamerMSE::addSourceBuffer (this=0x51768000, sourceBufferPrivate=...) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerMSE.cpp:2251
#4  0x748ba5c8 in WebCore::MediaSourceGStreamer::addSourceBuffer (this=<optimized out>, contentType=..., sourceBufferPrivate=...) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebCore/platform/graphics/gstreamer/MediaSourceGStreamer.cpp:77
#5  0x7496a508 in WebCore::MediaSource::createSourceBufferPrivate (this=<optimized out>, type=..., ec=@0x7fd9bed0: 0) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebCore/Modules/mediasource/MediaSource.cpp:856
#6  0x7496b5e4 in WebCore::MediaSource::addSourceBuffer (this=0x523ca410, type=..., ec=@0x7fd9bed0: 0) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebCore/Modules/mediasource/MediaSource.cpp:537
#7  0x74e35898 in WebCore::jsMediaSourcePrototypeFunctionAddSourceBuffer (state=0x7fd9bf18) at DerivedSources/WebCore/JSMediaSource.cpp:322
warning: GDB can't find the start of the function at 0x5a6b35df.
#8  0x5a6b35e0 in ?? ()

Certificates and websockets

Currently wpe fetches any and all content over https just fine regardless of certificates. But when it comes to websocket connections the behavior is reversed, and the connection fails, even if the server has a valid certificate, because no root certs are included.

This is from the wpe console when trying to open a secure (wss://) websocket:

´(WPEWebProcess:616): GLib-Net-WARNING **: couldn't load TLS file database: Failed to open file '/etc/ssl/certs/ca-certificates.crt': No such file or directory
CONSOLE ERROR WebSocket network error: Unacceptable TLS certificate

Build fails (cmake error) for platforms that do not provide gstreamer-gl libraries

In Source/cmake/FindGStreamer.cmake there is a find_library(${_component_prefix}_LIBRARIES. If a platform does not provide gstreamer-gl libraries then GSTREAMER_GL_LIBRARIES will be set to GSTREAMER_GL_LIBRARIES-NOTFOUND and then in Source/WebCore/PlatformWPE.cmake the list(APPEND WebCore_LIBRARIES will append GSTREAMER_GL_LIBRARIES-NOTFOUND to the list of WebCore libraries, and this will not be found and there will be a cmake error.

How to make PLAY multimedia key to work on the remote (XKB)

windows_key_code_for_key_event has no way to return VK_PLAY which is required for Youtube to react on the PLAY button
https://github.com/Metrological/WebKitForWayland/blame/master/Source/ThirdParty/WPE-platform/src/input/XKB/input-libxkbcommon.cpp#L618

VK_HAVI_PLAY is not working with Youtube
Please provide a key binding to return VK_PLAY
Preferrably XKB_KEY_3270_Play and XKB_KEY_XF86AudioPlay should be converted to VK_PLAY Windows binding.
Thank you

Unable to call classes in webkit from application

Hi,
Is it not possible to create objects for classes for WebInspector or any class inside WebKit2.This is because, i am seeing the symbols are seen local within objdump of generated libWPE.so file.Do i need to add new C API, inorder for application to speak with webkit?. Please let me know.

Regards,
Madan

[MSE] Key frame might be lost during ovelapped append

After merging #194, which fixed over-enqueueing, another issue appears,
during append of overlapping video segment to MSE SourceBuffer, Key frame might be not appended to the GStreamer pipeline.

This is reproducible on http://test.borovkov.com/mse_and_nonmse/lost_i_frame.html (around 10th second you can see video artifacts caused by skipped key frame)
You may have to disable websecurity to run the test: WKPreferencesSetWebSecurityEnabled(preferences.get(), false)

MSE Seek issue

This looks like an issue with fudgeFactor calculation.
Webkit was pushing data to pipeline during seek to 2511.00
The last sample for audiotrack had PTS=2510.913086
That caused hasCurrentTime method to return true (it considers "fudgeFactor")
Thus MediaSource::monitorSourceBuffers thought that currentTime was available and called completeSeek()
completeSeek() in turn silently failed to sourceBuffer->seekToTime(m_pendingSeekTime)
but unconditionally set m_pendingSeekTime = MediaTime::invalidTime()
thus the further seek failed

Assertion failed in getStreamByAppsrc

Happened during an attempt to play an MSE video on https://www.youtube.com/tv

Core was generated by `/usr/bin/WPEWebProcess 37 -1'.
Program terminated with signal SIGBUS, Bus error.
#0  0x756c6408 in WTFCrash () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Assertions.cpp:324
324         *(int *)(uintptr_t)0xbbadbeef = 0;
(gdb) bt
#0  0x756c6408 in WTFCrash () at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Assertions.cpp:324
#1  0x74a04994 in WTF::DequeIteratorBase<_Stream*, 0u>::removeFromIteratorsList (this=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Deque.h:567
#2  0x74a04a98 in WTF::DequeIteratorBase<_Stream*, 0u>::~DequeIteratorBase (this=0x5612e998, __in_chrg=<optimized out>) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Deque.h:628
#3  0x749ff330 in getStreamByAppsrc (source=0x87a0b8, appsrc=0xd8c468) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WTF/wtf/Deque.h:158
#4  0x749ff664 in enabledAppsrcNeedData (appsrc=0xd8c468, userData=0x87a0b8) at /mnt/cached/Yocto/WPE/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.1+gitAUTOINC+528200a31f-r0/git/Source/WebCore/platform/graphics/gstreamer/WebKitMediaSourceGStreamer.cpp:720
#5  0x7144a71c in gst_app_src_emit_need_data (appsrc=0xd8c468, size=4096) at gstappsrc.c:1033
#6  0x7144bc0c in gst_app_src_create (bsrc=0xd8c468, offset=<optimized out>, size=4096, buf=0x5612eb90) at gstappsrc.c:1182
#7  0x714041cc in gst_base_src_get_range (src=0xd8c468, offset=<optimized out>, length=4096, buf=buf@entry=0x5612eca0) at gstbasesrc.c:2445
#8  0x71406c1c in gst_base_src_loop (pad=0x6e410048) at gstbasesrc.c:2721
#9  0x71952f78 in gst_task_func (task=0x6e41c0d0) at gsttask.c:317
#10 0x71954808 in default_func (tdata=<optimized out>, pool=<optimized out>) at gsttaskpool.c:68
#11 0x71a5cc40 in g_thread_pool_thread_proxy (data=<optimized out>) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gthreadpool.c:307
#12 0x71a5bad0 in g_thread_proxy (data=0x4bbf50) at /usr/src/debug/glib-2.0/1_2.48.1-r0/glib-2.48.1/glib/gthread.c:780
#13 0x727e8cdc in start_thread (arg=0x5612f360) at pthread_create.c:314
#14 0x725df6a0 in __thread_start () at ../ports/sysdeps/unix/sysv/linux/mips/clone.S:150

[MSE][GStreamer][performance] append pipeline might be processing outdated samples during seek

Some buffers might remain at the append pipelines; when seek finishes, these buffers might travel further the pipeline and cause de-synchronization between audio and video.
We need to flush the append pipeline during the seeks as well.

2017-04-21T11:13:30.963 HTMLMediaElement::currentTime(0x582b5080) - seeking, returning {4640572387912318976/10000000, 181.000000}
2017-04-21T11:13:30.963 HTMLMediaElement::currentTime(0x582b5080) - seeking, returning {4640572387912318976/10000000, 181.000000}
2017-04-21T11:13:30.963 HTMLMediaElement::currentTime(0x582b5080) - seeking, returning {4640572387912318976/10000000, 181.000000}
2017-04-21T11:13:30.964 0:03:41.123028981 25984 0x6ec02b00 DEBUG              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:235:notifySeekNeedsDataForTime: MSE seek to 181.000000 finished
2017-04-21T11:13:30.964 0:03:41.123407574 25984 0x6ec02b00 DEBUG              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:397:maybeFinishSeek: [Seek] Seeked to 181.000000
2017-04-21T11:13:30.981 HTMLMediaElement::currentTime(0x582b5080) - seeking, returning {4640572387912318976/10000000, 181.000000}
2017-04-21T11:13:30.981 HTMLMediaElement::finishSeek(0x582b5080) - current time = {4640628152157077504/10000000, 182.584915}
2017-04-21T11:13:30.981 0:03:41.130479352 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=154.923538 presentationSize=0x0
2017-04-21T11:13:31.002 HTMLMediaElement::addPlayedRange(0x582b5080) - [{4640572387912318976/10000000, 181.000000}, {4640628152157077504/10000000, 182.584915}]
2017-04-21T11:13:31.011 HTMLMediaElement::addPlayedRange(0x582b5080) - [{4640572387912318976/10000000, 181.000000}, {4640628152157077504/10000000, 182.584915}]
2017-04-21T11:13:31.020 HTMLMediaElement::addPlayedRange(0x582b5080) - [{4640572387912318976/10000000, 181.000000}, {4640628152157077504/10000000, 182.584915}]
2017-04-21T11:13:31.022 HTMLMediaElement::addPlayedRange(0x582b5080) - [{4640572387912318976/10000000, 181.000000}, {4640628152157077504/10000000, 182.584915}]
2017-04-21T11:13:31.069 0:03:41.269929610 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=154.946747 presentationSize=0x0
2017-04-21T11:13:31.081 0:03:41.288487536 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=154.969986 presentationSize=0x0                                                                                                                                
2017-04-21T11:13:31.099 0:03:41.301697092 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=154.993195 presentationSize=0x0
2017-04-21T11:13:31.115 0:03:41.314277611 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=155.016418 presentationSize=0x0
2017-04-21T11:13:31.123 0:03:41.328931795 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=155.039627 presentationSize=0x0
2017-04-21T11:13:31.136 0:03:41.351947721 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=155.062866 presentationSize=0x0
2017-04-21T11:13:31.138 0:03:41.358995018 25984   0x463e90 DEBUG                 appsrc gstappsrc.c:1166:gst_app_src_create:<appsrc3> we have buffer 0xa1d5e8 of size 11300
2017-04-21T11:13:31.138 0:03:41.362051647 25984   0x463e90 DEBUG                 appsrc gstappsrc.c:1166:gst_app_src_create:<appsrc3> we have buffer 0xa1d548 of size 1940
2017-04-21T11:13:31.147 0:03:41.380398944 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=155.086075 presentationSize=0x0
2017-04-21T11:13:31.161 HTMLMediaElement::addPlayedRange(0x582b5080) - [{4640572387912318976/10000000, 181.000000}, {4640636956840034304/10000000, 182.835159}]
2017-04-21T11:13:31.164 0:03:41.413411611 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=155.109299 presentationSize=0x0
2017-04-21T11:13:31.175 0:03:41.431096832 25984 0x6ec02b00 TRACE              webkitmse /mnt/ssd2/Yocto/WPE_new/build-pacexg1v3/tmp/work/mips32el-rdk-linux/wpe-webkit/0.2+gitAUTOINC+6224a8d81a-r0/git/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:742:appsinkNewSample: append: trackId=A1 PTS=155.132507 presentationSize=0x0

Getting Console Logs @ UI Process

Hi,

I want to log the console messages in a file and there I stuck because I see no callbacks provided in UI Process to get the console logs. However I saw "willAddMessageToConsole" callback on InjectedBundlePage UI Client (which belongs to WebProcess).

Is there any way to get the console messages at the UI Process itself? If so, what is the way? I was searching for some callbacks to register so far in UI Process.

On slower CPUs, Youtube TV navigation is behaving incorrectly

To emulate slow CPU on raspberry PI2 with buildroot,

while :; do :; done &
while :; do :; done &
while :; do :; done &
while :; do :; done &
nice -n1 wpe https://www.youtube.com/tv

Then select a video and navigate to the right quickly several times.
You will observe that playback window will be shifted to the left.
This happens because an offscreen element (located to the right of the screen) gets focused and view area is scrolled.

[MSE] [GStreamer] Video and audio might get unsynchronized during playback

This may happen under following conditions:

  • sinks are operating in Async mode (not synchronized by the clock)
  • audio and video content is stored with separate files
  • either audio or video download is delayed

Observable effect:
video continues to play, but audio is not played, or the opposite: audio continues to play, but video is not played

Where is WPELauncher?

I am using ubuntu 16.04.
I follow the guide and find that there is no WPELauncher.
Do I miss something or how can I build "WPELauncher"?

Option to disable WebSecurity in webkit

I was trying to patch the webkit sources to make it possible to load into an iframe pages, which formally disallow this for regular browsers. I couldn't make it work.

Would it be possible to add this?

STM backend porting to new WPE-platform infra

The STM backend is not yet ported to the new WPE-platform infra, and still lives disabled in WPE-old.

I am using this backend on Broadcom STB boards.
I can help to port the backend to the new infra, if this is not work in progress already.

By the way, this should probably be renamed, since this is really just a generic wayland-egl backend so far.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.