[EFL][WK2] Add ewk_view_fixed_layout_size_set|get()
authorgyuyoung.kim@samsung.com <gyuyoung.kim@samsung.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 14 May 2014 06:20:28 +0000 (06:20 +0000)
committergyuyoung.kim@samsung.com <gyuyoung.kim@samsung.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 14 May 2014 06:20:28 +0000 (06:20 +0000)
https://bugs.webkit.org/show_bug.cgi?id=132811

Reviewed by Christophe Dumez.

Some EFL applications need to set size of fixed layout when enabling fixed layout.
This APIs can pass ownership regarding the size of fixed layout to application side.

* UIProcess/API/efl/ewk_view.cpp:
(ewk_view_layout_fixed_size_set):
(ewk_view_layout_fixed_size_get):
* UIProcess/API/efl/ewk_view.h:
* UIProcess/API/efl/tests/test_ewk2_view.cpp:
(TEST_F):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@168787 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp
Source/WebKit2/UIProcess/API/efl/ewk_view.h
Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp

index 9fbfa25..21404b2 100644 (file)
@@ -1,3 +1,20 @@
+2014-05-13  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
+
+        [EFL][WK2] Add ewk_view_fixed_layout_size_set|get()
+        https://bugs.webkit.org/show_bug.cgi?id=132811
+
+        Reviewed by Christophe Dumez.
+
+        Some EFL applications need to set size of fixed layout when enabling fixed layout.
+        This APIs can pass ownership regarding the size of fixed layout to application side.
+
+        * UIProcess/API/efl/ewk_view.cpp:
+        (ewk_view_layout_fixed_size_set):
+        (ewk_view_layout_fixed_size_get):
+        * UIProcess/API/efl/ewk_view.h:
+        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
+        (TEST_F):
+
 2014-05-13  Simon Fraser  <simon.fraser@apple.com>
 
         Fix "ASSERTION FAILED: m_representation == PlatformLayerRepresentation" with UI-side compositing
index 92d31fc..721be8a 100644 (file)
@@ -713,6 +713,25 @@ Eina_Bool ewk_view_layout_fixed_get(const Evas_Object* ewkView)
     return WKPageUseFixedLayout(WKViewGetPage(impl->wkView()));
 }
 
+void ewk_view_layout_fixed_size_set(const Evas_Object* ewkView, Evas_Coord width, Evas_Coord height)
+{
+    EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
+
+    WKPageSetFixedLayoutSize(WKViewGetPage(impl->wkView()), WKSizeMake(width, height));
+}
+
+void ewk_view_layout_fixed_size_get(const Evas_Object* ewkView, Evas_Coord* width, Evas_Coord* height)
+{
+    EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
+
+    WKSize size = WKPageFixedLayoutSize(WKViewGetPage(impl->wkView()));
+
+    if (width)
+        *width = size.width;
+    if (height)
+        *height = size.height;
+}
+
 void ewk_view_bg_color_set(Evas_Object* ewkView, int red, int green, int blue, int alpha)
 {
     if (EINA_UNLIKELY(alpha < 0 || alpha > 255)) {
index 9921dda..9ca2649 100644 (file)
@@ -898,6 +898,27 @@ EAPI Eina_Bool ewk_view_layout_fixed_set(Evas_Object *o, Eina_Bool enabled);
 EAPI Eina_Bool ewk_view_layout_fixed_get(const Evas_Object *o);
 
 /**
+ * Sets size of fixed layout to web page.
+ *
+ * The webview size will be set with given size.
+ *
+ * @param o view object to set fixed layout
+ * @param width an integer value in which to set width of fixed layout
+ * @param height an integer value in which to set height of fixed layout
+ */
+EAPI void ewk_view_layout_fixed_size_set(const Evas_Object *o, Evas_Coord width, Evas_Coord height);
+
+/**
+ * Gets the fixed layout size of current web page.
+ *
+ * @param o view object to query the size
+ *
+ * @param width pointer to an integer value in which to get the width of fixed layout
+ * @param height pointer to an integer value in which to get the height of fixed layout
+ */
+EAPI void ewk_view_layout_fixed_size_get(const Evas_Object *o, Evas_Coord *width, Evas_Coord *height);
+
+/**
  * Sets the background color and transparency of the view.
  *
  * @param o view object to change the background color
index c50371f..6587322 100644 (file)
@@ -1083,6 +1083,26 @@ TEST_F(EWK2ViewTest, ewk_view_layout_fixed)
     EXPECT_TRUE(ewk_view_layout_fixed_get(webView()));
 }
 
+TEST_F(EWK2ViewTest, ewk_view_layout_fixed_size)
+{    
+    // Fixed layout is not enabled in webview as default.
+    EXPECT_FALSE(ewk_view_layout_fixed_get(webView()));
+    EXPECT_TRUE(ewk_view_layout_fixed_set(webView(), true));
+
+    Evas_Coord width = 0;
+    Evas_Coord height = 0;
+
+    ewk_view_layout_fixed_size_set(webView(), 480, 800);
+    ewk_view_layout_fixed_size_get(webView(), &width, &height);
+    EXPECT_EQ(480, width);
+    EXPECT_EQ(800, height);
+
+    ewk_view_layout_fixed_size_set(webView(), 980, 1020);
+    ewk_view_layout_fixed_size_get(webView(), &width, &height);
+    EXPECT_EQ(980, width);
+    EXPECT_EQ(1020, height);
+}
+
 TEST_F(EWK2ViewTest, ewk_view_bg_color)
 {
     const char noBackgroundHTML[] = "<!doctype html><body></body>";