X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=Source%2FWebKit2%2FUIProcess%2FAPI%2Fefl%2FEwkViewImpl.h;h=fd78c491bdf1b0ad4ac4388ebcb16961fb5e2550;hb=f82b9efdceadfd53be23dc84839f0a4837a0b3e3;hp=ac8b3ca564ed55f26639e02efe55b69d49e63462;hpb=f64da78562b451cf46eaa371872af98d8c62c2d1;p=framework%2Fweb%2Fwebkit-efl.git diff --git a/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h b/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h old mode 100644 new mode 100755 index ac8b3ca..fd78c49 --- a/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h +++ b/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h @@ -21,9 +21,107 @@ #ifndef EwkViewImpl_h #define EwkViewImpl_h +#include "RefPtrEfl.h" +#include "WKEinaSharedString.h" +#include "WKRetainPtr.h" #include +#include +#include +#include +#include +#include +#include +#include + +#if ENABLE(TOUCH_EVENTS) +#include "ewk_touch.h" +#endif + +#if USE(ACCELERATED_COMPOSITING) +#include +#endif + +#if OS(TIZEN) +#include "JavaScriptPopup.h" +#include "OpenPanel.h" +#include "ewk_auth_challenge_private.h" +#include #include +#if ENABLE(TIZEN_GESTURE) +#include "GestureRecognizer.h" +#include "GestureClient.h" +#endif + +#if ENABLE(TIZEN_INPUT_TAG_EXTENSION) +#include "InputPicker.h" +#endif + +#if ENABLE(TIZEN_WEBKIT2_FOCUS_RING) +#include "FocusRing.h" +#endif + +#if ENABLE(TIZEN_WEBKIT2_POPUP_INTERNAL) +#include "ewk_popup_picker.h" +#endif +#endif + +#define EWK_VIEW_IMPL_GET(smartData, impl) \ + EwkViewImpl* impl = smartData->priv + +#define EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl, ...) \ + if (!smartData) { \ + EINA_LOG_CRIT("smart data is null"); \ + return __VA_ARGS__; \ + } \ + EWK_VIEW_IMPL_GET(smartData, impl); \ + do { \ + if (!impl) { \ + EINA_LOG_CRIT("no private data for object %p (%s)", \ + smartData->self, evas_object_type_get(smartData->self)); \ + return __VA_ARGS__; \ + } \ + } while (0) + +namespace WebKit { +class FindClientEfl; +class FormClientEfl; +class InputMethodContextEfl; +class PageClientImpl; +class PageLoadClientEfl; +class PagePolicyClientEfl; +class PageUIClientEfl; +class PageViewportControllerClientEfl; +class PageViewportController; +class ResourceLoadClientEfl; +class WebPageProxy; +class WebPopupItem; +class WebPopupMenuProxyEfl; +} + +namespace WebCore { +class Color; +class Cursor; +class IntRect; +class IntSize; +} + +class Ewk_Back_Forward_List; +class Ewk_Context; +class Ewk_Download_Job; +class Ewk_Error; +class Ewk_Form_Submission_Request; +class Ewk_Intent; +class Ewk_Intent_Service; +class Ewk_Navigation_Policy_Decision; +class Ewk_Resource; +class Ewk_Settings; +class Ewk_Url_Request; +class Ewk_Url_Response; + +typedef struct Ewk_View_Smart_Data Ewk_View_Smart_Data; + +#if OS(TIZEN) namespace WebCore { class AffineTransform; } @@ -34,16 +132,165 @@ class AffineTransform; //typedef struct Ewk_View_Smart_Data Ewk_View_Smart_Data; #include "ewk_view.h" +struct Ewk_View_Callback_Context { + union { + Ewk_Web_App_Capable_Get_Callback webAppCapableCallback; + Ewk_Web_App_Icon_URL_Get_Callback webAppIconURLCallback; + Ewk_Web_App_Icon_URLs_Get_Callback webAppIconURLsCallback; +#if ENABLE(TIZEN_WEB_STORAGE) && ENABLE(TIZEN_WEBKIT2_NUMBER_TYPE_SUPPORT) + Ewk_Web_Storage_Quota_Get_Callback webStorageQuotaCallback; +#endif + Ewk_View_Script_Execute_Callback scriptExecuteCallback; + Ewk_View_Plain_Text_Get_Callback plainTextGetCallback; +#if ENABLE(TIZEN_SUPPORT_MHTML) + Ewk_View_MHTML_Data_Get_Callback mhtmlDataGetCallback; +#endif + Ewk_View_JavaScript_Alert_Callback javascriptAlertCallback; + Ewk_View_JavaScript_Confirm_Callback javascriptConfirmCallback; + Ewk_View_JavaScript_Prompt_Callback javascriptPromptCallback; +#if ENABLE(TIZEN_SUPPORT_BEFORE_UNLOAD_CONFIRM_PANEL) + Ewk_View_Before_Unload_Confirm_Panel_Callback beforeUnloadConfirmPanelCallback; +#endif + Ewk_View_Open_Panel_Callback openPanelCallback; +#if ENABLE(TIZEN_APPLICATION_CACHE) + Ewk_View_Applicacion_Cache_Permission_Callback applicationCachePermissionCallback; +#endif +#if ENABLE(TIZEN_INDEXED_DATABASE) + Ewk_View_Exceeded_Indexed_Database_Quota_Callback exceededIndexedDatabaseQuotaCallback; +#endif +#if ENABLE(TIZEN_SQL_DATABASE) + Ewk_View_Exceeded_Database_Quota_Callback exceededDatabaseQuotaCallback; +#endif +#if ENABLE(TIZEN_FILE_SYSTEM) + Ewk_View_Exceeded_Local_File_System_Quota_Callback exceededLocalFileSystemQuotaCallback; +#endif + }; + + Evas_Object* ewkView; + void* userData; +}; +typedef struct Ewk_View_Callback_Context Ewk_View_Callback_Context; +#endif + class EwkViewImpl { public: - explicit EwkViewImpl(Evas_Object* view); ~EwkViewImpl(); static EwkViewImpl* fromEvasObject(const Evas_Object* view); - Evas_Object* view() { return m_view; } + inline Evas_Object* view() { return m_view; } + WKPageRef wkPage(); + inline WebKit::WebPageProxy* page() { return pageProxy.get(); } + Ewk_Context* ewkContext() { return context.get(); } + Ewk_Settings* settings() { return m_settings.get(); } + + WebCore::IntSize size() const; + bool isFocused() const; + bool isVisible() const; + + const char* url() const { return m_url; } + const char* faviconURL() const { return m_faviconURL; } + const char* title() const; + WebKit::InputMethodContextEfl* inputMethodContext(); + + const char* themePath() const; + void setThemePath(const char* theme); + const char* customTextEncodingName() const; + void setCustomTextEncodingName(const char* encoding); + + bool mouseEventsEnabled() const { return m_mouseEventsEnabled; } + void setMouseEventsEnabled(bool enabled); +#if ENABLE(TOUCH_EVENTS) + bool touchEventsEnabled() const { return m_touchEventsEnabled; } + void setTouchEventsEnabled(bool enabled); +#endif + + void setCursor(const WebCore::Cursor& cursor); + void redrawRegion(const WebCore::IntRect& rect); + void setImageData(void* imageData, const WebCore::IntSize& size); + +#if ENABLE(INPUT_TYPE_COLOR) + bool setColorPickerColor(const WebCore::Color& color); +#endif + + static void addToPageViewMap(const Evas_Object* ewkView); + static void removeFromPageViewMap(const Evas_Object* ewkView); + static const Evas_Object* viewFromPageViewMap(const WKPageRef); + +#if ENABLE(FULLSCREEN_API) + void enterFullScreen(); + void exitFullScreen(); +#endif + +#if USE(ACCELERATED_COMPOSITING) + bool createGLSurface(const WebCore::IntSize& viewSize); + bool enterAcceleratedCompositingMode(); + bool exitAcceleratedCompositingMode(); +#endif + +#if ENABLE(INPUT_TYPE_COLOR) + void requestColorPicker(int r, int g, int b, int a, WKColorPickerResultListenerRef listener); + void dismissColorPicker(); +#endif + + WKPageRef createNewPage(); + void closePage(); +#if ENABLE(TIZEN_MULTIPLE_SELECT) + void requestPopupMenu(WebKit::WebPopupMenuProxyEfl*, const WebCore::IntRect&, WebCore::TextDirection, double pageScaleFactor, const Vector& items, int32_t selectedIndex, bool); +#else + void requestPopupMenu(WebKit::WebPopupMenuProxyEfl*, const WebCore::IntRect&, WebCore::TextDirection, double pageScaleFactor, const Vector& items, int32_t selectedIndex); +#endif + void updateTextInputState(); + + void requestJSAlertPopup(const WKEinaSharedString& message); + bool requestJSConfirmPopup(const WKEinaSharedString& message); + WKEinaSharedString requestJSPromptPopup(const WKEinaSharedString& message, const WKEinaSharedString& defaultValue); + + void informDownloadJobCancelled(Ewk_Download_Job* download); + void informDownloadJobFailed(Ewk_Download_Job* download, Ewk_Error* error); + void informDownloadJobFinished(Ewk_Download_Job* download); + void informDownloadJobRequested(Ewk_Download_Job* download); + + void informNewFormSubmissionRequest(Ewk_Form_Submission_Request* request); + void informLoadError(Ewk_Error* error); + void informLoadFinished(); + void informLoadProgress(double progress); + void informProvisionalLoadFailed(Ewk_Error* error); +#if USE(TILED_BACKING_STORE) + void informLoadCommitted(); +#endif + void informProvisionalLoadRedirect(); + void informProvisionalLoadStarted(); + + void informResourceLoadStarted(Ewk_Resource* resource, Ewk_Url_Request* request); + void informResourceLoadResponse(Ewk_Resource* resource, Ewk_Url_Response* response); + void informResourceLoadFailed(Ewk_Resource* resource, Ewk_Error* error); + void informResourceLoadFinished(Ewk_Resource* resource); + void informResourceRequestSent(Ewk_Resource* resource, Ewk_Url_Request* request, Ewk_Url_Response* redirectResponse); + + void informNavigationPolicyDecision(Ewk_Navigation_Policy_Decision* decision); + void informNewWindowPolicyDecision(Ewk_Navigation_Policy_Decision* decision); + void informBackForwardListChange(); + + void informTitleChange(const String& title); + void informTooltipTextChange(const String& text); + void informTextFound(unsigned matchCount); + void informIconChange(); + void informWebProcessCrashed(); + void informContentsSizeChange(const WebCore::IntSize& size); + unsigned long long informDatabaseQuotaReached(const String& databaseName, const String& displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentDatabaseUsage, unsigned long long expectedUsage); + void informURLChange(); + +#if ENABLE(WEB_INTENTS) + void informIntentRequest(Ewk_Intent* ewkIntent); +#endif +#if ENABLE(WEB_INTENTS_TAG) + void informIntentServiceRegistration(Ewk_Intent_Service* ewkIntentService); +#endif + +#if OS(TIZEN) #if ENABLE(TIZEN_WEBKIT2_TILED_BACKING_STORE) WebCore::AffineTransform transformFromView() const; WebCore::AffineTransform transformToView() const; @@ -52,6 +299,15 @@ public: WebCore::AffineTransform transformFromScene() const; WebCore::AffineTransform transformToScreen() const; +#if ENABLE(TIZEN_WEBKIT2_SEPERATE_LOAD_PROGRESS) + void informLoadProgressStarted(); + void informLoadProgressFinished(); +#endif + +#if ENABLE(TIZEN_DATALIST_ELEMENT) + void deleteDataList(); +#endif + #if USE(TILED_BACKING_STORE) void setScaleFactor(float scaleFactor) { m_scaleFactor = scaleFactor; } float scaleFactor() const { return m_scaleFactor; } @@ -60,14 +316,220 @@ public: const WebCore::IntPoint scrollPosition() const { return m_scrollPosition; } #endif +#if ENABLE(TIZEN_GESTURE) +#if ENABLE(TOUCH_EVENTS) + void feedTouchEventsByType(Ewk_Touch_Event_Type); +#endif + void setDoubleTapEnabled(bool); +#endif + + void didChangeScrollAndScale(const WebCore::IntPoint&, float); + +#if ENABLE(TIZEN_FOCUS_UI) + static void pages(Vector >&); +#endif +#endif // #if OS(TIZEN) + + // FIXME: Make members private for encapsulation. + OwnPtr pageClient; +#if ENABLE(WAIT_UPVERSION) +#if USE(TILED_BACKING_STORE) + OwnPtr pageViewportControllerClient; + OwnPtr pageViewportController; +#endif +#endif + RefPtr pageProxy; + OwnPtr pageLoadClient; + OwnPtr pagePolicyClient; + OwnPtr pageUIClient; + OwnPtr resourceLoadClient; + OwnPtr findClient; + OwnPtr formClient; + + OwnPtr backForwardList; + RefPtr context; + + WebKit::WebPopupMenuProxyEfl* popupMenuProxy; + Eina_List* popupMenuItems; + +#if USE(ACCELERATED_COMPOSITING) + Evas_GL* evasGl; + Evas_GL_Context* evasGlContext; + Evas_GL_Surface* evasGlSurface; +#endif + +#if OS(TIZEN) +#if ENABLE(TIZEN_ORIENTATION_EVENTS) + int orientation; +#endif + + JSGlobalContextRef javascriptGlobalContext; + + WKEinaSharedString userAgent; + +#if OS(TIZEN) + WKEinaSharedString applicationName; +#endif + +#if ENABLE(TIZEN_SUPPORT_WEBAPP_META_TAG) + WKEinaSharedString webAppIconURL; + Eina_List* webAppIconURLs; +#endif + + OwnPtr alertContext; + OwnPtr confirmContext; + OwnPtr promptContext; + +#if ENABLE(TIZEN_SUPPORT_BEFORE_UNLOAD_CONFIRM_PANEL) + OwnPtr beforeUnloadConfirmPanelContext; +#endif + + OwnPtr openpanelContext; + OwnPtr javascriptPopup; + bool isWaitingForJavaScriptPopupReply; + OwnPtr openPanel; + +#if ENABLE(TIZEN_INPUT_TAG_EXTENSION) + OwnPtr inputPicker; + WKEinaSharedString inputValue; +#endif + + Ewk_Auth_Challenge* authChallenge; + Ewk_Policy_Decision* policyDecision; + WKOpenPanelResultListenerRef openPanelListener; + +#if ENABLE(TIZEN_CERTIFICATE_HANDLING) + Ewk_Certificate_Policy_Decision* certificatePolicyDecision; +#endif + +#if ENABLE(TIZEN_MEDIA_STREAM) + Eina_List* userMediaPermissionRequests; +#endif + +#if ENABLE(TIZEN_GEOLOCATION) + Ewk_Geolocation* geolocation; + Eina_List* geolocationPermissionRequests; +#endif + + bool suspendRequested; + bool suspendedPainting; + bool suspendedResources; + +#if ENABLE(TIZEN_NOTIFICATIONS) + Eina_List* notifications; + Eina_List* notificationPermissionRequests; +#endif + +#if ENABLE(TIZEN_WEBKIT2_POPUP_INTERNAL) + Ewk_Popup_Picker* popupPicker; +#endif + + bool isVerticalEdge; + bool isHorizontalEdge; + +#if ENABLE(TIZEN_WEBKIT2_FOCUS_RING) + OwnPtr focusRing; +#endif + +#if ENABLE(TIZEN_GESTURE) + OwnPtr gestureRecognizer; + OwnPtr gestureClient; +#if ENABLE(TOUCH_EVENTS) + Evas_Coord_Point touchDownPoint; + bool exceedTouchMoveThreshold; + bool wasHandledTouchStart; + bool wasHandledTouchMove; +#endif + bool holdHorizontalPanning; + bool holdVerticalPanning; +#endif // #if ENABLE(TIZEN_GESTURE) + +#if ENABLE(TIZEN_WEBKIT2_TILED_SCROLLBAR) + bool mainFrameScrollbarVisibility; +#endif + +#if ENABLE(TIZEN_RUNTIME_BACKEND_SELECTION) + Ecore_Animator* compositionAnimator; +#endif + +#if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION) + WKEinaSharedString selectedText; +#endif + +#if ENABLE(TIZEN_DATALIST_ELEMENT) + Eina_List* dataList; +#endif + +#if ENABLE(TIZEN_SCREEN_ORIENTATION_SUPPORT_INTERNAL) + struct { + Ewk_Orientation_Lock_Cb callback; + void* data; + } orientationLock; +#endif + +#if ENABLE(TIZEN_WEBKIT2_CREATE_VIEW_WITH_CREATED_PAGE_GROUP_WITH_IDENTIFIER) + RefPtr pageGroup; +#endif + +#if ENABLE(TIZEN_APPLICATION_CACHE) + OwnPtr applicationCachePermissionContext; + Ewk_Security_Origin* applicationCachePermissionOrigin; + bool isWaitingForApplicationCachePermission; +#endif +#if ENABLE(TIZEN_INDEXED_DATABASE) + OwnPtr exceededIndexedDatabaseQuotaContext; +#endif +#if ENABLE(TIZEN_SQL_DATABASE) + OwnPtr exceededDatabaseQuotaContext; +#endif +#if ENABLE(TIZEN_FILE_SYSTEM) + OwnPtr exceededLocalFileSystemQuotaContext; +#endif + Ewk_Security_Origin* exceededQuotaOrigin; + bool isWaitingForExceededQuotaPopupReply; +#endif // #if OS(TIZEN) + private: inline Ewk_View_Smart_Data* smartData() const; + void displayTimerFired(WebCore::Timer*); + + static void onMouseDown(void* data, Evas*, Evas_Object*, void* eventInfo); + static void onMouseUp(void* data, Evas*, Evas_Object*, void* eventInfo); + static void onMouseMove(void* data, Evas*, Evas_Object*, void* eventInfo); +#if ENABLE(TOUCH_EVENTS) + void feedTouchEvents(Ewk_Touch_Event_Type type); + static void onTouchDown(void* /* data */, Evas* /* canvas */, Evas_Object* ewkView, void* /* eventInfo */); + static void onTouchUp(void* /* data */, Evas* /* canvas */, Evas_Object* ewkView, void* /* eventInfo */); + static void onTouchMove(void* /* data */, Evas* /* canvas */, Evas_Object* ewkView, void* /* eventInfo */); +#endif Evas_Object* m_view; + OwnPtr m_settings; + RefPtr m_cursorObject; + WKEinaSharedString m_cursorGroup; + WKEinaSharedString m_faviconURL; + WKEinaSharedString m_url; + mutable WKEinaSharedString m_title; + WKEinaSharedString m_theme; + mutable WKEinaSharedString m_customEncoding; + bool m_mouseEventsEnabled; +#if ENABLE(TOUCH_EVENTS) + bool m_touchEventsEnabled; +#endif + WKRetainPtr m_colorPickerResultListener; + WebCore::Timer m_displayTimer; + WTF::Vector m_dirtyRects; + OwnPtr m_inputMethodContext; + + typedef HashMap PageViewMap; + static PageViewMap pageViewMap; + +#if OS(TIZEN) #if USE(TILED_BACKING_STORE) float m_scaleFactor; WebCore::IntPoint m_scrollPosition; #endif +#endif }; #endif // EwkViewImpl_h