Modified: trunk/Source/WebKit/efl/ewk/ewk_view.cpp (129593 => 129594)
--- trunk/Source/WebKit/efl/ewk/ewk_view.cpp 2012-09-26 05:13:21 UTC (rev 129593)
+++ trunk/Source/WebKit/efl/ewk/ewk_view.cpp 2012-09-26 05:39:54 UTC (rev 129594)
@@ -304,6 +304,9 @@
bool enableScripts : 1;
bool enablePlugins : 1;
bool enableFrameFlattening : 1;
+#if ENABLE(FULLSCREEN_API)
+ bool enableFullscreen : 1;
+#endif
bool encodingDetector : 1;
bool hyperlinkAuditingEnabled : 1;
bool scriptsCanOpenWindows : 1;
@@ -848,6 +851,9 @@
priv->settings.enableScripts = priv->pageSettings->isScriptEnabled();
priv->settings.enablePlugins = priv->pageSettings->arePluginsEnabled();
priv->settings.enableFrameFlattening = priv->pageSettings->frameFlatteningEnabled();
+#if ENABLE(FULLSCREEN_API)
+ priv->settings.enableFullscreen = priv->pageSettings->fullScreenEnabled();
+#endif
priv->settings.enableXSSAuditor = priv->pageSettings->xssAuditorEnabled();
priv->settings.hyperlinkAuditingEnabled = priv->pageSettings->hyperlinkAuditingEnabled();
priv->settings.scriptsCanOpenWindows = priv->pageSettings->_javascript_CanOpenWindowsAutomatically();
@@ -4575,6 +4581,66 @@
}
}
+Eina_Bool ewk_view_setting_enable_fullscreen_get(const Evas_Object* ewkView)
+{
+#if ENABLE(FULLSCREEN_API)
+ EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false);
+ EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);
+ return priv->settings.enableFullscreen;
+#else
+ UNUSED_PARAM(ewkView);
+ return false;
+#endif
+}
+
+Eina_Bool ewk_view_setting_enable_fullscreen_set(Evas_Object* ewkView, Eina_Bool enable)
+{
+#if ENABLE(FULLSCREEN_API)
+ EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false);
+ EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);
+ enable = !!enable;
+ if (priv->settings.enableFullscreen != enable) {
+ priv->pageSettings->setFullScreenEnabled(enable);
+ priv->settings.enableFullscreen = enable;
+ }
+ return true;
+#else
+ UNUSED_PARAM(ewkView);
+ UNUSED_PARAM(enable);
+ return false;
+#endif
+}
+
+#if ENABLE(FULLSCREEN_API)
+/**
+ * @internal
+ * Calls fullscreen_enter callback or falls back to default behavior and enables fullscreen mode.
+ */
+void ewk_view_fullscreen_enter(const Evas_Object* ewkView)
+{
+ EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData);
+
+ if (!smartData->api->fullscreen_enter || !smartData->api->fullscreen_enter(smartData)) {
+ Ecore_Evas* ecoreEvas = ecore_evas_ecore_evas_get(smartData->base.evas);
+ ecore_evas_fullscreen_set(ecoreEvas, true);
+ }
+}
+
+/**
+ * @internal
+ * Calls fullscreen_exit callback or falls back to default behavior and disables fullscreen mode.
+ */
+void ewk_view_fullscreen_exit(const Evas_Object* ewkView)
+{
+ EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData);
+
+ if (!smartData->api->fullscreen_enter || !smartData->api->fullscreen_enter(smartData)) {
+ Ecore_Evas* ecoreEvas = ecore_evas_ecore_evas_get(smartData->base.evas);
+ ecore_evas_fullscreen_set(ecoreEvas, false);
+ }
+}
+#endif
+
namespace EWKPrivate {
WebCore::Page* corePage(const Evas_Object* ewkView)
Modified: trunk/Source/WebKit/efl/ewk/ewk_view.h (129593 => 129594)
--- trunk/Source/WebKit/efl/ewk/ewk_view.h 2012-09-26 05:13:21 UTC (rev 129593)
+++ trunk/Source/WebKit/efl/ewk/ewk_view.h 2012-09-26 05:39:54 UTC (rev 129594)
@@ -173,6 +173,8 @@
// - if overridden, have to call parent method if desired
Eina_Bool (*focus_in)(Ewk_View_Smart_Data *sd);
Eina_Bool (*focus_out)(Ewk_View_Smart_Data *sd);
+ Eina_Bool (*fullscreen_enter)(Ewk_View_Smart_Data *sd);
+ Eina_Bool (*fullscreen_exit)(Ewk_View_Smart_Data *sd);
Eina_Bool (*mouse_wheel)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Wheel *ev);
Eina_Bool (*mouse_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Down *ev);
Eina_Bool (*mouse_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Up *ev);
@@ -198,7 +200,7 @@
* The version you have to put into the version field
* in the @a Ewk_View_Smart_Class structure.
*/
-#define EWK_VIEW_SMART_CLASS_VERSION 6UL
+#define EWK_VIEW_SMART_CLASS_VERSION 7UL
/**
* Initializes a whole @a Ewk_View_Smart_Class structure.
@@ -210,7 +212,7 @@
* @see EWK_VIEW_SMART_CLASS_INIT_VERSION
* @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
*/
-#define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
+#define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
/**
* Initializes to zero a whole @a Ewk_View_Smart_Class structure.
@@ -2747,6 +2749,31 @@
*/
EAPI void ewk_view_web_inspector_view_set(Evas_Object *o, Evas_Object *inspector_view);
+/**
+ * Enables/disables the fullscreen mode by _javascript_ fullscreen API.
+ * The _javascript_ API allows to request full screen mode, for more information see:
+ * http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
+ *
+ * Default value for _javascript_ fullscreen API setting is @c EINA_TRUE.
+ *
+ * @param o view object to enable _javascript_ fullscreen API
+ * @param enable @c EINA_TRUE to enable _javascript_ fullscreen API or
+ * @c EINA_FALSE to disable
+ *
+ * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool ewk_view_setting_enable_fullscreen_set(Evas_Object *o, Eina_Bool enable);
+
+/**
+ * Queries if the fullscreen mode is enabled.
+ *
+ * @param o view object to query whether _javascript_ fullscreen API is enabled
+ *
+ * @return @c EINA_TRUE if the _javascript_ fullscreen API is enabled
+ * @c EINA_FALSE if not or on failure
+ */
+EAPI Eina_Bool ewk_view_setting_enable_fullscreen_get(const Evas_Object *o);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit/efl/tests/test_ewk_view.cpp (129593 => 129594)
--- trunk/Source/WebKit/efl/tests/test_ewk_view.cpp 2012-09-26 05:13:21 UTC (rev 129593)
+++ trunk/Source/WebKit/efl/tests/test_ewk_view.cpp 2012-09-26 05:39:54 UTC (rev 129594)
@@ -52,3 +52,33 @@
{
RUN_TEST("http://www.webkit.org", ewkViewUriGetCb);
}
+
+/**
+* @brief Checking whether function properly get/set fullscreen setting value.
+*/
+static void ewkViewEnableFullscreenCb(void* eventInfo, Evas_Object* webView, void* data)
+{
+#if ENABLE(FULLSCREEN_API)
+ ASSERT_TRUE(ewk_view_setting_enable_fullscreen_get(webView));
+
+ ASSERT_TRUE(ewk_view_setting_enable_fullscreen_set(webView, true));
+ ASSERT_TRUE(ewk_view_setting_enable_fullscreen_get(webView));
+
+ ASSERT_TRUE(ewk_view_setting_enable_fullscreen_set(webView, false));
+ ASSERT_FALSE(ewk_view_setting_enable_fullscreen_get(webView));
+#else
+ ASSERT_FALSE(ewk_view_setting_enable_fullscreen_get(webView));
+
+ ASSERT_FALSE(ewk_view_setting_enable_fullscreen_set(webView, true));
+ ASSERT_FALSE(ewk_view_setting_enable_fullscreen_get(webView));
+
+ ASSERT_FALSE(ewk_view_setting_enable_fullscreen_set(webView, false));
+ ASSERT_FALSE(ewk_view_setting_enable_fullscreen_get(webView));
+#endif
+ END_TEST();
+}
+
+TEST(test_ewk_view, ewk_view_setting_enable_fullscreen)
+{
+ RUN_TEST(ewkViewEnableFullscreenCb);
+}