diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index b59ec73115f79162bf1b4897fd60d48587e36745..19558980be0360dc7c16b14e4f275eb4a8ab674f 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -214,7 +214,7 @@ void WebEngineSettings::initDefaults(bool offTheRecord)
     m_attributes.insert(ScrollAnimatorEnabled, false);
     m_attributes.insert(ErrorPageEnabled, true);
     m_attributes.insert(PluginsEnabled, false);
-    m_attributes.insert(FullscreenSupportEnabled, false);
+    m_attributes.insert(FullScreenSupportEnabled, false);
 
     // Default fonts
     QFont defaultFont;
@@ -280,7 +280,7 @@ void WebEngineSettings::applySettingsToWebPreferences(content::WebPreferences *p
     prefs->enable_scroll_animator = testAttribute(ScrollAnimatorEnabled);
     prefs->enable_error_page = testAttribute(ErrorPageEnabled);
     prefs->plugins_enabled = testAttribute(PluginsEnabled);
-    prefs->fullscreen_supported = testAttribute(FullscreenSupportEnabled);
+    prefs->fullscreen_supported = testAttribute(FullScreenSupportEnabled);
 
     // Fonts settings.
     prefs->standard_font_family_map[content::kCommonScript] = toString16(fontFamily(StandardFont));
diff --git a/src/core/web_engine_settings.h b/src/core/web_engine_settings.h
index 1d8f83184bf757f762a25342cde1d1e3a495cd7e..29ef079b7652c55920a5815762f95d9ff635faa8 100644
--- a/src/core/web_engine_settings.h
+++ b/src/core/web_engine_settings.h
@@ -72,7 +72,7 @@ public:
         ScrollAnimatorEnabled,
         ErrorPageEnabled,
         PluginsEnabled,
-        FullscreenSupportEnabled,
+        FullScreenSupportEnabled,
     };
 
     // Must match the values from the public API in qwebenginesettings.h.
diff --git a/src/webengine/api/qquickwebengineprofile.cpp b/src/webengine/api/qquickwebengineprofile.cpp
index 38b042fff38375d44f7d21a7e0adecc562339022..027ac3b22ce9de120761b57f4dacfee7a6ed50e1 100644
--- a/src/webengine/api/qquickwebengineprofile.cpp
+++ b/src/webengine/api/qquickwebengineprofile.cpp
@@ -58,7 +58,7 @@ QQuickWebEngineProfilePrivate::QQuickWebEngineProfilePrivate(BrowserContextAdapt
     m_settings->d_ptr->initDefaults(browserContext->isOffTheRecord());
     // Fullscreen API was implemented before the supported setting, so we must
     // make it default true to avoid change in default API behavior.
-    m_settings->d_ptr->setAttribute(QtWebEngineCore::WebEngineSettings::FullscreenSupportEnabled, true);
+    m_settings->d_ptr->setAttribute(QtWebEngineCore::WebEngineSettings::FullScreenSupportEnabled, true);
 }
 
 QQuickWebEngineProfilePrivate::~QQuickWebEngineProfilePrivate()
diff --git a/src/webengine/api/qquickwebenginesettings.cpp b/src/webengine/api/qquickwebenginesettings.cpp
index 0da01d69d7c0732ca58dc1b3274da6079ca0714a..9662a9ef94bedea1f2f971dc301a6a340daf200c 100644
--- a/src/webengine/api/qquickwebenginesettings.cpp
+++ b/src/webengine/api/qquickwebenginesettings.cpp
@@ -228,9 +228,9 @@ bool QQuickWebEngineSettings::pluginsEnabled() const
 
     Enabled by default.
 */
-bool QQuickWebEngineSettings::fullscreenSupportEnabled() const
+bool QQuickWebEngineSettings::fullScreenSupportEnabled() const
 {
-    return d_ptr->testAttribute(WebEngineSettings::FullscreenSupportEnabled);
+    return d_ptr->testAttribute(WebEngineSettings::FullScreenSupportEnabled);
 }
 
 /*!
@@ -345,12 +345,12 @@ void QQuickWebEngineSettings::setPluginsEnabled(bool on)
         Q_EMIT pluginsEnabledChanged();
 }
 
-void QQuickWebEngineSettings::setFullscreenSupportEnabled(bool on)
+void QQuickWebEngineSettings::setFullScreenSupportEnabled(bool on)
 {
-    bool wasOn = d_ptr->testAttribute(WebEngineSettings::FullscreenSupportEnabled);
-    d_ptr->setAttribute(WebEngineSettings::FullscreenSupportEnabled, on);
+    bool wasOn = d_ptr->testAttribute(WebEngineSettings::FullScreenSupportEnabled);
+    d_ptr->setAttribute(WebEngineSettings::FullScreenSupportEnabled, on);
     if (wasOn != on)
-        Q_EMIT fullscreenSupportEnabledChanged();
+        Q_EMIT fullScreenSupportEnabledChanged();
 }
 
 void QQuickWebEngineSettings::setDefaultTextEncoding(QString encoding)
diff --git a/src/webengine/api/qquickwebenginesettings_p.h b/src/webengine/api/qquickwebenginesettings_p.h
index e3f28ac9247105ec6e0c4d75b17fb1b1a8868e89..604e5693dc2f59a74d76c1dc9223390ff96bc523 100644
--- a/src/webengine/api/qquickwebenginesettings_p.h
+++ b/src/webengine/api/qquickwebenginesettings_p.h
@@ -72,7 +72,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineSettings : public QObject {
     Q_PROPERTY(bool hyperlinkAuditingEnabled READ hyperlinkAuditingEnabled WRITE setHyperlinkAuditingEnabled NOTIFY hyperlinkAuditingEnabledChanged)
     Q_PROPERTY(bool errorPageEnabled READ errorPageEnabled WRITE setErrorPageEnabled NOTIFY errorPageEnabledChanged)
     Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled NOTIFY pluginsEnabledChanged)
-    Q_PROPERTY(bool fullscreenSupportEnabled READ fullscreenSupportEnabled WRITE setFullscreenSupportEnabled NOTIFY fullscreenSupportEnabledChanged REVISION 1)
+    Q_PROPERTY(bool fullScreenSupportEnabled READ fullScreenSupportEnabled WRITE setFullScreenSupportEnabled NOTIFY fullScreenSupportEnabledChanged REVISION 1)
     Q_PROPERTY(QString defaultTextEncoding READ defaultTextEncoding WRITE setDefaultTextEncoding NOTIFY defaultTextEncodingChanged)
 
 public:
@@ -90,7 +90,7 @@ public:
     bool hyperlinkAuditingEnabled() const;
     bool errorPageEnabled() const;
     bool pluginsEnabled() const;
-    bool fullscreenSupportEnabled() const;
+    bool fullScreenSupportEnabled() const;
     QString defaultTextEncoding() const;
 
     void setAutoLoadImages(bool on);
@@ -105,7 +105,7 @@ public:
     void setHyperlinkAuditingEnabled(bool on);
     void setErrorPageEnabled(bool on);
     void setPluginsEnabled(bool on);
-    void setFullscreenSupportEnabled(bool on);
+    void setFullScreenSupportEnabled(bool on);
     void setDefaultTextEncoding(QString encoding);
 
 signals:
@@ -121,7 +121,7 @@ signals:
     void hyperlinkAuditingEnabledChanged();
     void errorPageEnabledChanged();
     void pluginsEnabledChanged();
-    Q_REVISION(1) void fullscreenSupportEnabledChanged();
+    Q_REVISION(1) void fullScreenSupportEnabledChanged();
     void defaultTextEncodingChanged();
 
 private:
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index dd96c38903f5c25aa1aa0a4cc3973fe4006cfc2d..1cf51df72db7a5c87e32af7c385fc40875641690 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -88,6 +88,7 @@ QWebEnginePagePrivate::QWebEnginePagePrivate(QWebEngineProfile *_profile)
     , isLoading(false)
     , scriptCollection(new QWebEngineScriptCollectionPrivate(browserContextAdapter()->userScriptController(), adapter.data()))
     , m_backgroundColor(Qt::white)
+    , m_fullscreenRequested(false)
 {
     memset(actions, 0, sizeof(actions));
 }
@@ -826,6 +827,18 @@ void QWebEnginePagePrivate::navigationRequested(int navigationType, const QUrl &
     navigationRequestAction = accepted ? WebContentsAdapterClient::AcceptRequest : WebContentsAdapterClient::IgnoreRequest;
 }
 
+void QWebEnginePagePrivate::requestFullScreen(bool fullScreen)
+{
+    Q_Q(QWebEnginePage);
+    m_fullscreenRequested = fullScreen;
+    Q_EMIT q->fullScreenRequested(fullScreen);
+}
+
+bool QWebEnginePagePrivate::isFullScreen() const
+{
+    return m_fullscreenRequested && q_ptr->isFullScreen();
+}
+
 void QWebEnginePagePrivate::javascriptDialog(QSharedPointer<JavaScriptDialogController> controller)
 {
     Q_Q(QWebEnginePage);
@@ -1207,6 +1220,12 @@ bool QWebEnginePage::acceptNavigationRequest(const QUrl &url, NavigationType typ
     return true;
 }
 
+bool QWebEnginePage::isFullScreen()
+{
+    Q_D(const QWebEnginePage);
+    return d->view ? d->view->isFullScreen() : false;
+}
+
 QT_END_NAMESPACE
 
 #include "moc_qwebenginepage.cpp"
diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h
index 1753cd75ac0ca8751b6294a1773ea1f4f397f831..c324f37373a4b9662beece892fb4df0bbe708674 100644
--- a/src/webenginewidgets/api/qwebenginepage.h
+++ b/src/webenginewidgets/api/qwebenginepage.h
@@ -236,6 +236,7 @@ Q_SIGNALS:
 
     void linkHovered(const QString &url);
     void selectionChanged();
+    void fullScreenRequested(bool fullScreen);
     void geometryChangeRequested(const QRect& geom);
     void windowCloseRequested();
 
@@ -260,7 +261,7 @@ protected:
     virtual void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID);
     virtual bool certificateError(const QWebEngineCertificateError &certificateError);
     virtual bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame);
-
+    virtual bool isFullScreen();
 private:
     Q_DISABLE_COPY(QWebEnginePage)
     Q_DECLARE_PRIVATE(QWebEnginePage)
diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h
index af37ae82f2e4001c2840197d2c4781c417a5350e..84974d6a7c1d40cc15f9eaa514658b928512118c 100644
--- a/src/webenginewidgets/api/qwebenginepage_p.h
+++ b/src/webenginewidgets/api/qwebenginepage_p.h
@@ -97,8 +97,8 @@ public:
     virtual void close() Q_DECL_OVERRIDE;
     virtual bool contextMenuRequested(const QtWebEngineCore::WebEngineContextMenuData &data) Q_DECL_OVERRIDE;
     virtual void navigationRequested(int navigationType, const QUrl &url, int &navigationRequestAction, bool isMainFrame) Q_DECL_OVERRIDE;
-    virtual void requestFullScreen(bool) Q_DECL_OVERRIDE { }
-    virtual bool isFullScreen() const Q_DECL_OVERRIDE { return false; }
+    virtual void requestFullScreen(bool) Q_DECL_OVERRIDE;
+    virtual bool isFullScreen() const Q_DECL_OVERRIDE;
     virtual void javascriptDialog(QSharedPointer<QtWebEngineCore::JavaScriptDialogController>) Q_DECL_OVERRIDE;
     virtual void runFileChooser(QtWebEngineCore::FilePickerController *controller) Q_DECL_OVERRIDE;
     virtual void didRunJavaScript(quint64 requestId, const QVariant& result) Q_DECL_OVERRIDE;
@@ -139,6 +139,7 @@ public:
     bool isLoading;
     QWebEngineScriptCollection scriptCollection;
     QColor m_backgroundColor;
+    bool m_fullscreenRequested;
 
     mutable QtWebEngineCore::CallbackDirectory m_callbacks;
     mutable QAction *actions[QWebEnginePage::WebActionCount];
diff --git a/src/webenginewidgets/api/qwebenginesettings.cpp b/src/webenginewidgets/api/qwebenginesettings.cpp
index aaa93ab9f65dcf4fe9943ca77f0612675441d3bc..1c45095b898288137ab9ec1e9529d350c354840b 100644
--- a/src/webenginewidgets/api/qwebenginesettings.cpp
+++ b/src/webenginewidgets/api/qwebenginesettings.cpp
@@ -74,6 +74,8 @@ static WebEngineSettings::Attribute toWebEngineAttribute(QWebEngineSettings::Web
         return WebEngineSettings::ErrorPageEnabled;
     case QWebEngineSettings::PluginsEnabled:
         return WebEngineSettings::PluginsEnabled;
+    case QWebEngineSettings::FullScreenSupportEnabled:
+        return WebEngineSettings::FullScreenSupportEnabled;
     default:
         return WebEngineSettings::UnsupportedInCoreSettings;
     }
diff --git a/src/webenginewidgets/api/qwebenginesettings.h b/src/webenginewidgets/api/qwebenginesettings.h
index 50a93e393e8e9141092d6bcc23188fdf5d7f1d31..327fd447ba4d7f0ae42c1108f309ac957a3df84a 100644
--- a/src/webenginewidgets/api/qwebenginesettings.h
+++ b/src/webenginewidgets/api/qwebenginesettings.h
@@ -59,7 +59,8 @@ public:
         HyperlinkAuditingEnabled,
         ScrollAnimatorEnabled,
         ErrorPageEnabled,
-        PluginsEnabled
+        PluginsEnabled,
+        FullScreenSupportEnabled
     };
 
     enum FontSize {
diff --git a/tests/auto/widgets/qwebenginepage/resources/fullscreen.html b/tests/auto/widgets/qwebenginepage/resources/fullscreen.html
new file mode 100644
index 0000000000000000000000000000000000000000..84771ca85ffd2626944ab1b7301b637cf0c4d8f9
--- /dev/null
+++ b/tests/auto/widgets/qwebenginepage/resources/fullscreen.html
@@ -0,0 +1,10 @@
+<html>
+<body onkeypress='onKeyPress()'>
+<a>This is test content</a>
+<script>
+function onKeyPress() {
+    document.documentElement.webkitRequestFullScreen();
+}
+</script>
+</body>
+</html>
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index 9562871b38437bc29b75cd6b9165f1e56d65b853..ae66d928f97695901a171da9b51542c8de6a8009 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -192,6 +192,7 @@ private Q_SLOTS:
 #endif
 
     void runJavaScript();
+    void fullScreenRequested();
 
 private:
     QWebEngineView* m_view;
@@ -3740,5 +3741,56 @@ void tst_QWebEnginePage::runJavaScript()
     QTest::qWait(100);
 }
 
+class FullScreenPage : public QWebEnginePage {
+    Q_OBJECT
+public:
+    FullScreenPage(QObject* parent = 0)
+        : QWebEnginePage(parent)
+        , m_isFullScreen(true)
+    { }
+
+    void setIsFullScreen(bool b) { m_isFullScreen = b; }
+
+protected:
+    bool isFullScreen() override
+    {
+        return m_isFullScreen;
+    }
+    bool m_isFullScreen;
+};
+
+void tst_QWebEnginePage::fullScreenRequested()
+{
+    FullScreenPage* page = new FullScreenPage;
+    QWebEngineView* view = new QWebEngineView;
+    view->setPage(page);
+    view->show();
+
+    page->settings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, true);
+
+    QSignalSpy loadSpy(view, SIGNAL(loadFinished(bool)));
+    page->load(QUrl("qrc:///resources/fullscreen.html"));
+    QTRY_COMPARE(loadSpy.count(), 1);
+
+    page->runJavaScript("document.webkitFullscreenEnabled", JavaScriptCallback(true));
+    page->runJavaScript("document.webkitIsFullScreen", JavaScriptCallback(false));
+
+    // FullscreenRequest must be a user gesture
+    QTest::keyPress(qApp->focusWindow(), Qt::Key_Space);
+    QTest::qWait(100);
+    page->runJavaScript("document.webkitIsFullScreen", JavaScriptCallback(true));
+    page->runJavaScript("document.webkitExitFullscreen()");
+    QTest::qWait(100);
+    page->setIsFullScreen(false);
+    page->runJavaScript("document.webkitFullscreenEnabled", JavaScriptCallback(true));
+    QTest::keyPress(qApp->focusWindow(), Qt::Key_Space);
+    QTest::qWait(100);
+    page->runJavaScript("document.webkitIsFullScreen", JavaScriptCallback(false));
+    QTest::qWait(100);
+
+    delete view;
+    delete page;
+}
+
 QTEST_MAIN(tst_QWebEnginePage)
 #include "tst_qwebenginepage.moc"
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.qrc b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.qrc
index 994d71b430e5631be40f49e2eb765e8cb6833395..0a89950906f304c6a95b07f3e6fe0009ebd55f60 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.qrc
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.qrc
@@ -1,5 +1,6 @@
 <!DOCTYPE RCC><RCC version="1.0">
 <qresource>
+    <file>resources/content.html</file>
     <file>resources/index.html</file>
     <file>resources/frame_a.html</file>
     <file>resources/frame_c.html</file>
@@ -7,7 +8,7 @@
     <file>resources/iframe2.html</file>
     <file>resources/iframe3.html</file>
     <file>resources/framedindex.html</file>
-    <file>resources/content.html</file>
+    <file>resources/fullscreen.html</file>
     <file>resources/script.html</file>
     <file>resources/user.css</file>
 </qresource>