diff --git a/src/3rdparty b/src/3rdparty
index 154d7a3611197845352b3e1d3ebeaf429d37e656..4140f5c535bd1626c06c6be122da6b97e2a737bb 160000
--- a/src/3rdparty
+++ b/src/3rdparty
@@ -1 +1 @@
-Subproject commit 154d7a3611197845352b3e1d3ebeaf429d37e656
+Subproject commit 4140f5c535bd1626c06c6be122da6b97e2a737bb
diff --git a/src/core/config/embedded_linux.pri b/src/core/config/embedded_linux.pri
index 0133dc6b09a53d2de81fa83676bc318857e5e19d..bc7c42ab77f0f1a9c0a4dc05bd42e3fe644ad564 100644
--- a/src/core/config/embedded_linux.pri
+++ b/src/core/config/embedded_linux.pri
@@ -23,6 +23,7 @@ GYP_CONFIG += \
     gtest_target_type=none \
     host_clang=0 \
     notifications=0 \
+    ozone_auto_platforms=0 \
     ozone_platform_dri=0 \
     ozone_platform_test=0 \
     p2p_apis=0 \
@@ -39,7 +40,9 @@ GYP_CONFIG += \
     use_gnome_keyring=0 \
     use_kerberos=0 \
     use_libpci=0 \
+    use_nss_certs=0 \
     use_openssl=1 \
+    use_openssl_certs=1 \
     use_ozone=1 \
     use_pango=0 \
     use_system_fontconfig=1 \
diff --git a/src/core/ozone_platform_eglfs.cpp b/src/core/ozone_platform_eglfs.cpp
index 43a3e4a116eabacfdb8a29c6ce8488b31857b793..9dca83685233aa258a2dff3198074a27da86848e 100644
--- a/src/core/ozone_platform_eglfs.cpp
+++ b/src/core/ozone_platform_eglfs.cpp
@@ -95,6 +95,7 @@ public:
     void Restore() override { }
     void SetCursor(PlatformCursor) override { }
     void MoveCursorTo(const gfx::Point&) override { }
+    void ConfineCursorToBounds(const gfx::Rect&) override { }
 
     // PlatformEventDispatcher:
     bool CanDispatchEvent(const PlatformEvent& event) override;
@@ -160,6 +161,14 @@ scoped_ptr<PlatformWindow> OzonePlatformEglfs::CreatePlatformWindow(
                           bounds));
 }
 
+ui::InputController* OzonePlatformEglfs::GetInputController() {
+    return input_controller_.get();
+}
+
+scoped_ptr<ui::SystemInputInjector> OzonePlatformEglfs::CreateSystemInputInjector() {
+    return nullptr;  // no input injection support.
+}
+
 scoped_ptr<ui::NativeDisplayDelegate> OzonePlatformEglfs::CreateNativeDisplayDelegate()
 {
     return scoped_ptr<NativeDisplayDelegate>(new NativeDisplayDelegateOzone());
@@ -170,8 +179,9 @@ OzonePlatform* CreateOzonePlatformEglfs() { return new OzonePlatformEglfs; }
 void OzonePlatformEglfs::InitializeUI() {
   device_manager_ = CreateDeviceManager();
   cursor_factory_ozone_.reset(new CursorFactoryOzone());
-  event_factory_ozone_.reset(new EventFactoryEvdev(NULL, device_manager_.get()));
+  event_factory_ozone_.reset(new EventFactoryEvdev(NULL, device_manager_.get(), NULL));
   gpu_platform_support_host_.reset(CreateStubGpuPlatformSupportHost());
+  input_controller_ = CreateStubInputController();
 }
 
 void OzonePlatformEglfs::InitializeGPU() {
diff --git a/src/core/ozone_platform_eglfs.h b/src/core/ozone_platform_eglfs.h
index 6954595dd59298b5b83abe5ecdb2a5e72d990334..ae95fa8eb2c0e811169dc9d7665126ef59985558 100644
--- a/src/core/ozone_platform_eglfs.h
+++ b/src/core/ozone_platform_eglfs.h
@@ -62,6 +62,8 @@ class OzonePlatformEglfs : public OzonePlatform {
       PlatformWindowDelegate* delegate,
       const gfx::Rect& bounds) override;
   virtual scoped_ptr<ui::NativeDisplayDelegate> CreateNativeDisplayDelegate() override;
+  virtual ui::InputController* GetInputController() override;
+  virtual scoped_ptr<ui::SystemInputInjector> CreateSystemInputInjector() override;
 
  private:
   virtual void InitializeUI() override;
@@ -74,6 +76,7 @@ class OzonePlatformEglfs : public OzonePlatform {
 
   scoped_ptr<GpuPlatformSupport> gpu_platform_support_;
   scoped_ptr<GpuPlatformSupportHost> gpu_platform_support_host_;
+  scoped_ptr<InputController> input_controller_;
 
   DISALLOW_COPY_AND_ASSIGN(OzonePlatformEglfs);
 };
diff --git a/src/core/qtwebengine.gypi b/src/core/qtwebengine.gypi
index cad6882eb59d6860aac501db9aad024f523a8e08..7a6b26ab756d23cd80ff7af44df3de5f583bd517 100644
--- a/src/core/qtwebengine.gypi
+++ b/src/core/qtwebengine.gypi
@@ -84,6 +84,9 @@
             ],
           },
         },
+        'dependencies': [
+          '<(chromium_src_dir)/ui/events/ozone/events_ozone.gyp:events_ozone_evdev'
+        ]
       }],
       ['qt_os=="win32" and qt_gl=="opengl"', {
         'include_dirs': [
diff --git a/tools/buildscripts/gyp_qtwebengine b/tools/buildscripts/gyp_qtwebengine
index 116f8f2bdf734b059fd6636dd45d50a3b0411207..39d9cc4b45e360cc2f4f4175e50976b468058822 100755
--- a/tools/buildscripts/gyp_qtwebengine
+++ b/tools/buildscripts/gyp_qtwebengine
@@ -86,6 +86,11 @@ if __name__ == '__main__':
   if 'qt_cross_compile=1' in sys.argv:
     os.environ['GYP_CROSSCOMPILE'] = '1'
 
+  sysroot = 'sysroot='
+  for opt in sys.argv:
+    if opt.startswith(sysroot):
+        os.environ['PKG_CONFIG_SYSROOT_DIR'] = opt[len(sysroot):]
+
   gyp_helper.apply_chromium_gyp_env()
 
   # This could give false positives since it doesn't actually do real option