diff options
Diffstat (limited to 'WebKit/efl/ewk/ewk_view.cpp')
-rw-r--r-- | WebKit/efl/ewk/ewk_view.cpp | 60 |
1 files changed, 55 insertions, 5 deletions
diff --git a/WebKit/efl/ewk/ewk_view.cpp b/WebKit/efl/ewk/ewk_view.cpp index d981459..d5920e5 100644 --- a/WebKit/efl/ewk/ewk_view.cpp +++ b/WebKit/efl/ewk/ewk_view.cpp @@ -23,15 +23,18 @@ #include "ChromeClientEfl.h" #include "ContextMenuClientEfl.h" +#include "ContextMenuController.h" #include "DocumentLoader.h" #include "DragClientEfl.h" #include "EWebKit.h" #include "EditorClientEfl.h" +#include "EventHandler.h" #include "FocusController.h" #include "FrameLoaderClientEfl.h" #include "FrameView.h" #include "GraphicsContext.h" #include "InspectorClientEfl.h" +#include "PlatformMouseEvent.h" #include "PopupMenuClient.h" #include "ProgressTracker.h" #include "ewk_private.h" @@ -514,6 +517,7 @@ static Ewk_View_Private_Data* _ewk_view_priv_new(Ewk_View_Smart_Data* sd) static_cast<WebCore::DragClient*>(new WebCore::DragClientEfl), static_cast<WebCore::InspectorClient*>(new WebCore::InspectorClientEfl), 0, + 0, 0); if (!priv->page) { CRITICAL("Could not create WebKit Page"); @@ -1476,6 +1480,46 @@ Eina_Bool ewk_view_select_word(Evas_Object* o) } /** + * Forwards a request of new Context Menu to WebCore. + * + * @param o View. + * @param ev Event data. + * + * @return @c EINA_TRUE if operation was executed, @c EINA_FALSE otherwise. + */ +Eina_Bool ewk_view_context_menu_forward_event(Evas_Object* o, const Evas_Event_Mouse_Down* ev) +{ + EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE); + EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE); + Eina_Bool mouse_press_handled = EINA_FALSE; + + priv->page->contextMenuController()->clearContextMenu(); + WebCore::Frame* main_frame = priv->page->mainFrame(); + Evas_Coord x, y; + evas_object_geometry_get(sd->self, &x, &y, 0, 0); + + WebCore::PlatformMouseEvent event(ev, WebCore::IntPoint(x, y)); + + if (main_frame->view()) { + mouse_press_handled = + main_frame->eventHandler()->handleMousePressEvent(event); + } + + if (main_frame->eventHandler()->sendContextMenuEvent(event)) + return EINA_FALSE; + + WebCore::ContextMenu* coreMenu = + priv->page->contextMenuController()->contextMenu(); + if (!coreMenu) { + // WebCore decided not to create a context menu, return true if event + // was handled by handleMouseReleaseEvent + return mouse_press_handled; + } + + return EINA_TRUE; +} + +/** * Get current load progress estimate from 0.0 to 1.0. * * @param o view object to get current progress. @@ -3393,14 +3437,20 @@ Eina_Bool ewk_view_should_interrupt_javascript(Evas_Object* o) * @param o View. * @param frame The frame whose web page exceeded its database quota. * @param databaseName Database name. + * @param current_size Current size of this database + * @param expected_size The expected size of this database in order to fulfill + * site's requirement. */ -void ewk_view_exceeded_database_quota(Evas_Object* o, Evas_Object* frame, const char* databaseName) +uint64_t ewk_view_exceeded_database_quota(Evas_Object* o, Evas_Object* frame, const char* databaseName, uint64_t current_size, uint64_t expected_size) { DBG("o=%p", o); - EWK_VIEW_SD_GET_OR_RETURN(o, sd); - EINA_SAFETY_ON_NULL_RETURN(sd->api); - EINA_SAFETY_ON_NULL_RETURN(sd->api->exceeded_database_quota); - sd->api->exceeded_database_quota(sd, frame, databaseName); + EWK_VIEW_SD_GET_OR_RETURN(o, sd, 0); + EINA_SAFETY_ON_NULL_RETURN_VAL(sd->api, 0); + if (!sd->api->exceeded_database_quota) + return 0; + + ERR("##### %lu %lu", current_size, expected_size); + return sd->api->exceeded_database_quota(sd, frame, databaseName, current_size, expected_size); } /** |