Title: [124461] trunk/Source/WebKit2
Revision
124461
Author
[email protected]
Date
2012-08-02 09:03:46 -0700 (Thu, 02 Aug 2012)

Log Message

[EFL][WK2]Add ewk_view_ui_client.
https://bugs.webkit.org/show_bug.cgi?id=89864

Patch by Hyerim Bae <[email protected]> on 2012-08-02
Reviewed by Kentaro Hara.

Add ewk_view_ui_client.h / cpp files for wrapping WKPageSetPageUIClient,
add close, createNewPage callback member to WKPageSetPageUIClient.

* PlatformEfl.cmake:
* UIProcess/API/efl/ewk_view.cpp:
(ewk_view_base_add):
(ewk_view_page_close):
(ewk_view_page_create):
* UIProcess/API/efl/ewk_view.h:
* UIProcess/API/efl/ewk_view_private.h:
* UIProcess/API/efl/ewk_view_ui_client.cpp: Added.
(toEwkView):
(closePage):
(createNewPage):
(ewk_view_ui_client_attach):
* UIProcess/API/efl/ewk_view_ui_client_private.h: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (124460 => 124461)


--- trunk/Source/WebKit2/ChangeLog	2012-08-02 15:56:21 UTC (rev 124460)
+++ trunk/Source/WebKit2/ChangeLog	2012-08-02 16:03:46 UTC (rev 124461)
@@ -1,3 +1,27 @@
+2012-08-02  Hyerim Bae  <[email protected]>
+
+        [EFL][WK2]Add ewk_view_ui_client.
+        https://bugs.webkit.org/show_bug.cgi?id=89864
+
+        Reviewed by Kentaro Hara.
+
+        Add ewk_view_ui_client.h / cpp files for wrapping WKPageSetPageUIClient,
+        add close, createNewPage callback member to WKPageSetPageUIClient.
+
+        * PlatformEfl.cmake:
+        * UIProcess/API/efl/ewk_view.cpp:
+        (ewk_view_base_add):
+        (ewk_view_page_close):
+        (ewk_view_page_create):
+        * UIProcess/API/efl/ewk_view.h:
+        * UIProcess/API/efl/ewk_view_private.h:
+        * UIProcess/API/efl/ewk_view_ui_client.cpp: Added.
+        (toEwkView):
+        (closePage):
+        (createNewPage):
+        (ewk_view_ui_client_attach):
+        * UIProcess/API/efl/ewk_view_ui_client_private.h: Added.
+
 2012-08-02  Carlos Garcia Campos  <[email protected]>
 
         [GTK] No main resource in WebView on load committed when page has been loaded from history cache

Modified: trunk/Source/WebKit2/PlatformEfl.cmake (124460 => 124461)


--- trunk/Source/WebKit2/PlatformEfl.cmake	2012-08-02 15:56:21 UTC (rev 124460)
+++ trunk/Source/WebKit2/PlatformEfl.cmake	2012-08-02 16:03:46 UTC (rev 124461)
@@ -59,6 +59,7 @@
     UIProcess/API/efl/ewk_view_loader_client.cpp
     UIProcess/API/efl/ewk_view_policy_client.cpp
     UIProcess/API/efl/ewk_view_resource_load_client.cpp
+    UIProcess/API/efl/ewk_view_ui_client.cpp
     UIProcess/API/efl/ewk_web_error.cpp
     UIProcess/API/efl/ewk_web_resource.cpp
 

Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp (124460 => 124461)


--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp	2012-08-02 15:56:21 UTC (rev 124460)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp	2012-08-02 16:03:46 UTC (rev 124461)
@@ -37,6 +37,7 @@
 #include "ewk_view_policy_client_private.h"
 #include "ewk_view_private.h"
 #include "ewk_view_resource_load_client_private.h"
+#include "ewk_view_ui_client_private.h"
 #include "ewk_web_resource.h"
 #include <Ecore_Evas.h>
 #include <Edje.h>
@@ -667,6 +668,7 @@
     ewk_view_loader_client_attach(wkPage, ewkView);
     ewk_view_policy_client_attach(wkPage, ewkView);
     ewk_view_resource_load_client_attach(wkPage, ewkView);
+    ewk_view_ui_client_attach(wkPage, ewkView);
 
     ewk_view_theme_set(ewkView, DEFAULT_THEME_PATH"/default.edj");
 
@@ -1297,3 +1299,19 @@
 
     return true;
 }
+
+void ewk_view_page_close(Evas_Object* ewkView)
+{
+    evas_object_smart_callback_call(ewkView, "close,window", 0);
+}
+
+WKPageRef ewk_view_page_create(Evas_Object* ewkView)
+{
+    Evas_Object* newEwkView = 0;
+    evas_object_smart_callback_call(ewkView, "create,window", &newEwkView);
+
+    if (!newEwkView)
+        return 0;
+
+    return static_cast<WKPageRef>(WKRetain(ewk_view_page_get(newEwkView)));
+}

Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h (124460 => 124461)


--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h	2012-08-02 15:56:21 UTC (rev 124460)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h	2012-08-02 16:03:46 UTC (rev 124461)
@@ -26,6 +26,8 @@
  *
  * The following signals (see evas_object_smart_callback_add()) are emitted:
  *
+ * - "close,window", void: window is closed.
+ * - "create,window", Evas_Object**: a new window is created.
  * - "download,cancelled", Ewk_Download_Job*: reports that a download was effectively cancelled.
  * - "download,failed", Ewk_Download_Job_Error*: reports that a download failed with the given error.
  * - "download,finished", Ewk_Download_Job*: reports that a download completed successfully.

Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h (124460 => 124461)


--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h	2012-08-02 15:56:21 UTC (rev 124460)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h	2012-08-02 16:03:46 UTC (rev 124461)
@@ -61,6 +61,8 @@
 void ewk_view_load_provisional_started(Evas_Object* ewkView);
 void ewk_view_navigation_policy_decision(Evas_Object* ewkView, Ewk_Navigation_Policy_Decision* decision);
 void ewk_view_new_window_policy_decision(Evas_Object* ewkView, Ewk_Navigation_Policy_Decision* decision);
+void ewk_view_page_close(Evas_Object* ewkView);
+WKPageRef ewk_view_page_create(Evas_Object* ewkView);
 void ewk_view_title_changed(Evas_Object* ewkView, const char* title);
 void ewk_view_resource_load_failed(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Web_Error* error);
 void ewk_view_resource_load_finished(Evas_Object* ewkView, uint64_t resourceIdentifier);

Added: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp (0 => 124461)


--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp	2012-08-02 16:03:46 UTC (rev 124461)
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "ewk_view_private.h"
+#include "ewk_view_ui_client_private.h"
+
+static inline Evas_Object* toEwkView(const void* clientInfo)
+{
+    return static_cast<Evas_Object*>(const_cast<void*>(clientInfo));
+}
+
+static void closePage(WKPageRef, const void* clientInfo)
+{
+    ewk_view_page_close(toEwkView(clientInfo));
+}
+
+static WKPageRef createNewPage(WKPageRef, WKURLRequestRef, WKDictionaryRef, WKEventModifiers, WKEventMouseButton, const void* clientInfo)
+{
+     return ewk_view_page_create(toEwkView(clientInfo));
+}
+
+void ewk_view_ui_client_attach(WKPageRef pageRef, Evas_Object* ewkView)
+{
+    WKPageUIClient uiClient;
+    memset(&uiClient, 0, sizeof(WKPageUIClient));
+    uiClient.version = kWKPageUIClientCurrentVersion;
+    uiClient.clientInfo = ewkView;
+    uiClient.close = closePage;
+    uiClient.createNewPage = createNewPage;
+    WKPageSetPageUIClient(pageRef, &uiClient);
+}

Added: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client_private.h (0 => 124461)


--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client_private.h	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client_private.h	2012-08-02 16:03:46 UTC (rev 124461)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ewk_view_ui_client_private_h
+#define ewk_view_ui_client_private_h
+
+#include <Evas.h>
+#include <WebKit2/WKBase.h>
+
+void ewk_view_ui_client_attach(WKPageRef pageRef, Evas_Object* ewkView);
+
+#endif // ewk_view_ui_client_private_h
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to