Changeset 141836 in webkit
- Timestamp:
- Feb 4, 2013 5:20:10 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r141834 r141836 1 2013-02-04 Kenneth Rohde Christiansen <kenneth@webkit.org> 2 3 [EFL][WK2] Introduce a WebView class as counterpart for WKViewRef 4 https://bugs.webkit.org/show_bug.cgi?id=107931 5 6 Reviewed by Anders Carlsson. 7 8 This is just one step of the new plan for the EFL API. 9 10 The plan is to move the public EFL-like API on top of the shared 11 WK2 C API, plus a few EFL extensions (WKView class mostly). 12 13 The EFL-like API can be seen as a convenience API which ties 14 well into EFL and which makes it easy to add web experiences 15 to existing and new EFL applications. It provides a smart object 16 like API and a Evas_Object based view. 17 18 For more advanced use cases, such as browser and runtime, it is 19 possible to use the WK* C API, which is gives more flexibility 20 while being more low level. 21 22 The idea is that the WKView class will not depend on Evas_Object 23 and X11 (future plan) unlike the current EFL-like API. This should 24 make it possible to use it for cases where none of these are 25 available. 26 27 This patch introduces the WebView class which serves as our 28 counterpart for the WKView class, and adds a few needed methods. 29 30 The EwkView owns the WebView class (and will be constructing it 31 in the near future when the EwkView class has been changed to 32 handle all smart object related code) 33 34 The clean up of the smart object related code as the proper 35 construction of EwkView and WebView will be done in follow-up 36 patches. 37 38 * UIProcess/API/C/efl/WKAPICastEfl.h: 39 (WebKit): 40 41 The WKView API is not based on WebView and not Evas_Object* 42 43 * UIProcess/API/C/efl/WKView.cpp: 44 (WKViewCreate): 45 (WKViewCreateWithFixedLayout): 46 (WKViewInitialize): 47 (WKViewGetPage): 48 (WKViewSetThemePath): 49 (WKViewSuspendActiveDOMObjectsAndAnimations): 50 (WKViewResumeActiveDOMObjectsAndAnimations): 51 (WKViewGetEvasObject): 52 (WKViewCreateSnapshot): 53 54 Add a few new WKView EFL C methods, and update existing 55 methods to reflect that the WKViewRef is now a WebView* 56 57 The construction methods will be rewritten when the smart 58 object construction has been solved. 59 60 * UIProcess/API/C/efl/WKView.h: 61 * UIProcess/efl/WebView.cpp: Added. 62 (WebKit): 63 (WebKit::WebView::WebView): 64 (WebKit::WebView::~WebView): 65 (WebKit::WebView::initialize): 66 (WebKit::WebView::setThemePath): 67 (WebKit::WebView::suspendActiveDOMObjectsAndAnimations): 68 (WebKit::WebView::resumeActiveDOMObjectsAndAnimations): 69 * UIProcess/efl/WebView.h: Added. 70 (WebKit): 71 (WebView): 72 (WebKit::WebView::pageRef): 73 (WebKit::WebView::evasObject): 74 (WebKit::WebView::page): 75 (WebKit::WebView::type): 76 77 Add a new WebKit::WebView class for EFL. 78 79 * UIProcess/API/efl/EwkView.cpp: 80 (EwkView::EwkView): 81 (EwkView::~EwkView): 82 (EwkView::wkPage): 83 (EwkView::setThemePath): 84 (EwkView::createGLSurface): 85 86 Base methods on C API instead of internal API as much 87 as currently possible. 88 89 * UIProcess/API/efl/EwkView.h: 90 (WebKit): 91 (WebView): 92 (EwkView): 93 (EwkView::wkView): 94 (EwkView::page): 95 * UIProcess/API/efl/ewk_view.cpp: 96 (createEwkView): 97 (ewk_view_base_add): 98 (ewk_view_smart_add): 99 100 Modify to return the EwkView class for now. 101 102 * UIProcess/API/efl/ewk_view_private.h: 103 * UIProcess/efl/WebInspectorProxyEfl.cpp: 104 (WebKit::WebInspectorProxy::platformCreateInspectorPage): 105 106 Updated due to changed API. 107 1 108 2013-02-04 Anders Carlsson <andersca@apple.com> 2 109 -
trunk/Source/WebKit2/PlatformEfl.cmake
r141439 r141836 108 108 UIProcess/efl/WebPreferencesEfl.cpp 109 109 UIProcess/efl/WebProcessProxyEfl.cpp 110 UIProcess/efl/WebView.cpp 110 111 111 112 UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp -
trunk/Source/WebKit2/UIProcess/API/C/efl/WKAPICastEfl.h
r138326 r141836 25 25 #endif 26 26 27 #if USE(EO)28 typedef struct _Eo Evas_Object;29 #else30 typedef struct _Evas_Object Evas_Object;31 #endif32 33 27 namespace WebKit { 34 28 35 WK_ADD_API_MAPPING(WKViewRef, Evas_Object) 29 class WebView; 30 31 WK_ADD_API_MAPPING(WKViewRef, WebView) 36 32 37 33 } -
trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp
r140686 r141836 30 30 WKViewRef WKViewCreate(Evas* canvas, WKContextRef contextRef, WKPageGroupRef pageGroupRef) 31 31 { 32 return toAPI(ewk_view_base_add(canvas, contextRef, pageGroupRef, EwkView::LegacyBehavior)); 32 EwkView* ewkView = ewk_view_base_add(canvas, contextRef, pageGroupRef, EwkView::LegacyBehavior); 33 if (!ewkView) 34 return 0; 35 36 return static_cast<WKViewRef>(WKRetain(ewkView->wkView())); 33 37 } 34 38 35 39 WKViewRef WKViewCreateWithFixedLayout(Evas* canvas, WKContextRef contextRef, WKPageGroupRef pageGroupRef) 36 40 { 37 return toAPI(ewk_view_base_add(canvas, contextRef, pageGroupRef, EwkView::DefaultBehavior)); 41 EwkView* ewkView = ewk_view_base_add(canvas, contextRef, pageGroupRef, EwkView::DefaultBehavior); 42 if (!ewkView) 43 return 0; 44 45 return static_cast<WKViewRef>(WKRetain(ewkView->wkView())); 46 } 47 48 void WKViewInitialize(WKViewRef viewRef) 49 { 50 toImpl(viewRef)->initialize(); 38 51 } 39 52 40 53 WKPageRef WKViewGetPage(WKViewRef viewRef) 41 54 { 42 EwkView* view = EwkView::fromEvasObject(toImpl(viewRef)); 55 return toImpl(viewRef)->pageRef(); 56 } 43 57 44 return view->wkPage(); 58 void WKViewSetThemePath(WKViewRef viewRef, WKStringRef theme) 59 { 60 toImpl(viewRef)->setThemePath(theme); 61 } 62 63 void WKViewSuspendActiveDOMObjectsAndAnimations(WKViewRef viewRef) 64 { 65 toImpl(viewRef)->suspendActiveDOMObjectsAndAnimations(); 66 } 67 68 void WKViewResumeActiveDOMObjectsAndAnimations(WKViewRef viewRef) 69 { 70 toImpl(viewRef)->resumeActiveDOMObjectsAndAnimations(); 71 } 72 73 Evas_Object* WKViewGetEvasObject(WKViewRef viewRef) 74 { 75 return toImpl(viewRef)->evasObject(); 45 76 } 46 77 47 78 WKImageRef WKViewCreateSnapshot(WKViewRef viewRef) 48 79 { 49 EwkView* view = EwkView::fromEvasObject(toImpl(viewRef)); 50 51 return WKImageCreateFromCairoSurface(view->takeSnapshot().get(), 0 /* options */); 80 EwkView* ewkView = EwkView::fromEvasObject(toImpl(viewRef)->evasObject()); 81 return WKImageCreateFromCairoSurface(ewkView->takeSnapshot().get(), 0 /* options */); 52 82 } -
trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h
r138462 r141836 25 25 #if USE(EO) 26 26 typedef struct _Eo Evas; 27 typedef struct _Eo Evas_Object; 27 28 #else 28 29 typedef struct _Evas Evas; 30 typedef struct _Evas_Object Evas_Object; 29 31 #endif 30 32 … … 37 39 WK_EXPORT WKViewRef WKViewCreateWithFixedLayout(Evas* canvas, WKContextRef context, WKPageGroupRef pageGroup); 38 40 39 WK_EXPORT WKPageRef WKViewGetPage(WKViewRef view);41 WK_EXPORT void WKViewInitialize(WKViewRef); 40 42 41 WK_EXPORT WKImageRef WKViewCreateSnapshot(WKViewRef viewRef); 43 WK_EXPORT WKPageRef WKViewGetPage(WKViewRef); 44 45 WK_EXPORT void WKViewSetThemePath(WKViewRef, WKStringRef); 46 47 WK_EXPORT void WKViewSuspendActiveDOMObjectsAndAnimations(WKViewRef); 48 WK_EXPORT void WKViewResumeActiveDOMObjectsAndAnimations(WKViewRef); 49 50 // FIXME: The long term plan is to get rid of this, so keep usage to a bare minimum. 51 WK_EXPORT Evas_Object* WKViewGetEvasObject(WKViewRef); 52 53 WK_EXPORT WKImageRef WKViewCreateSnapshot(WKViewRef); 42 54 43 55 #ifdef __cplusplus -
trunk/Source/WebKit2/UIProcess/API/efl/EwkView.cpp
r141827 r141836 40 40 #include "WKPageGroup.h" 41 41 #include "WKString.h" 42 #include "WKView.h" 42 43 #include "WebContext.h" 43 44 #include "WebImage.h" … … 112 113 } 113 114 114 EwkView::EwkView(Evas_Object* evasObject, PassRefPtr<EwkContext> context, PassRefPtr<WebPageGroup>pageGroup, ViewBehavior behavior)115 : m_evasObject( evasObject)115 EwkView::EwkView(Evas_Object* view, PassRefPtr<EwkContext> context, WebPageGroup* pageGroup, ViewBehavior behavior) 116 : m_evasObject(view) 116 117 , m_context(context) 117 118 #if USE(ACCELERATED_COMPOSITING) … … 119 120 #endif 120 121 , m_pageClient(behavior == DefaultBehavior ? PageClientDefaultImpl::create(this) : PageClientLegacyImpl::create(this)) 121 , m_ pageProxy(toImpl(m_context->wkContext())->createWebPage(m_pageClient.get(), pageGroup.get()))122 , m_webView(adoptRef(new WebView(toImpl(m_context->wkContext()), m_pageClient.get(), pageGroup, view))) 122 123 , m_pageLoadClient(PageLoadClientEfl::create(this)) 123 124 , m_pagePolicyClient(PagePolicyClientEfl::create(this)) … … 129 130 , m_vibrationClient(VibrationClientEfl::create(this)) 130 131 #endif 131 , m_backForwardList(EwkBackForwardList::create( toAPI(m_pageProxy->backForwardList())))132 , m_backForwardList(EwkBackForwardList::create(WKPageGetBackForwardList(wkPage()))) 132 133 #if USE(TILED_BACKING_STORE) 133 134 , m_pageScaleFactor(1) … … 146 147 ASSERT(m_evasObject); 147 148 ASSERT(m_context); 148 ASSERT(m_pageProxy); 149 150 WKViewInitialize(wkView()); 149 151 150 152 WKPageSetUseFixedLayout(wkPage(), behavior == DefaultBehavior); … … 158 160 WKPreferencesSetOfflineWebApplicationCacheEnabled(wkPreferences, true); 159 161 160 #if USE(COORDINATED_GRAPHICS)161 m_pageProxy->pageGroup()->preferences()->setAcceleratedCompositingEnabled(true);162 m_pageProxy->pageGroup()->preferences()->setForceCompositingMode(true);163 char* debugVisualsEnvironment = getenv("WEBKIT_SHOW_COMPOSITING_DEBUG_VISUALS");164 bool showDebugVisuals = debugVisualsEnvironment && !strcmp(debugVisualsEnvironment, "1");165 m_pageProxy->pageGroup()->preferences()->setCompositingBordersVisible(showDebugVisuals);166 m_pageProxy->pageGroup()->preferences()->setCompositingRepaintCountersVisible(showDebugVisuals);167 #endif168 169 m_pageProxy->initializeWebPage();170 171 #if ENABLE(FULLSCREEN_API)172 m_pageProxy->fullScreenManager()->setWebView(m_evasObject);173 #endif174 175 162 // Enable mouse events by default 176 163 setMouseEventsEnabled(true); … … 187 174 EwkView::~EwkView() 188 175 { 189 m_pageProxy->close();190 191 176 // Unregister icon change callback. 192 177 EwkFaviconDatabase* iconDatabase = m_context->faviconDatabase(); … … 214 199 WKPageRef EwkView::wkPage() const 215 200 { 216 return toAPI(m_pageProxy.get());201 return WKViewGetPage(wkView()); 217 202 } 218 203 … … 547 532 if (m_theme != theme) { 548 533 m_theme = theme; 549 m_pageProxy->setThemePath(theme); 534 WKRetainPtr<WKStringRef> wkTheme = adoptWK(WKStringCreateWithUTF8CString(theme)); 535 WKViewSetThemePath(wkView(), wkTheme.get()); 550 536 } 551 537 } … … 647 633 WARN("Failed to create Evas_GL, falling back to software mode."); 648 634 m_isHardwareAccelerated = false; 649 #if ENABLE(WEBGL)650 m_pageProxy->pageGroup()->preferences()->setWebGLEnabled(false);651 #endif652 635 return false; 653 636 } … … 1030 1013 { 1031 1014 // Suspend all animations before taking the snapshot. 1032 m_pageProxy->suspendActiveDOMObjectsAndAnimations();1015 WKViewSuspendActiveDOMObjectsAndAnimations(wkView()); 1033 1016 1034 1017 // Wait for the pending repaint events to be processed. … … 1042 1025 RefPtr<cairo_surface_t> snapshot = createSurfaceForImage(sd->image); 1043 1026 // Resume all animations. 1044 m_pageProxy->resumeActiveDOMObjectsAndAnimations();1027 WKViewResumeActiveDOMObjectsAndAnimations(wkView()); 1045 1028 1046 1029 return snapshot.release(); … … 1050 1033 RefPtr<cairo_surface_t> snapshot = getImageSurfaceFromFrameBuffer(0, 0, sd->view.w, sd->view.h); 1051 1034 // Resume all animations. 1052 m_pageProxy->resumeActiveDOMObjectsAndAnimations();1035 WKViewResumeActiveDOMObjectsAndAnimations(wkView()); 1053 1036 1054 1037 return snapshot.release(); -
trunk/Source/WebKit2/UIProcess/API/efl/EwkView.h
r141827 r141836 28 28 #include "WKGeometry.h" 29 29 #include "WKRetainPtr.h" 30 #include "WebView.h" 30 31 #include "ewk_url_request_private.h" 31 32 #include <Evas.h> … … 49 50 #include "EvasGLSurface.h" 50 51 #endif 52 53 #include "WebContext.h" 54 #include "WebPageGroup.h" 55 #include "WebPreferences.h" 51 56 52 57 namespace WebKit { … … 103 108 DefaultBehavior 104 109 }; 105 EwkView(Evas_Object* view, PassRefPtr<EwkContext> context, PassRefPtr<WebKit::WebPageGroup>pageGroup, ViewBehavior);110 EwkView(Evas_Object* view, PassRefPtr<EwkContext> context, WebKit::WebPageGroup* pageGroup, ViewBehavior); 106 111 ~EwkView(); 107 112 … … 109 114 Evas_Object* view() { return m_evasObject; } 110 115 116 WKViewRef wkView() const { return toAPI(m_webView.get()); } 111 117 WKPageRef wkPage() const; 112 WebKit::WebPageProxy* page() { return m_pageProxy.get(); } 118 119 WebKit::WebPageProxy* page() { return m_webView->page(); } 113 120 EwkContext* ewkContext() { return m_context.get(); } 114 121 EwkSettings* settings() { return m_settings.get(); } … … 245 252 #endif 246 253 OwnPtr<WebKit::PageClientBase> m_pageClient; 247 RefPtr<WebKit::Web PageProxy> m_pageProxy;254 RefPtr<WebKit::WebView> m_webView; 248 255 OwnPtr<WebKit::PageLoadClientEfl> m_pageLoadClient; 249 256 OwnPtr<WebKit::PagePolicyClientEfl> m_pagePolicyClient; -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp
r141583 r141836 505 505 } 506 506 507 static inline E vas_Object* createEwkView(Evas* canvas, Evas_Smart* smart, PassRefPtr<EwkContext> context, WKPageGroupRef pageGroupRef = 0, EwkView::ViewBehavior behavior = EwkView::DefaultBehavior)507 static inline EwkView* createEwkView(Evas* canvas, Evas_Smart* smart, PassRefPtr<EwkContext> context, WKPageGroupRef pageGroupRef = 0, EwkView::ViewBehavior behavior = EwkView::DefaultBehavior) 508 508 { 509 509 EINA_SAFETY_ON_NULL_RETURN_VAL(canvas, 0); … … 525 525 // so we do not need to create it here. 526 526 smartData->priv = new EwkView(ewkView, context, toImpl(pageGroupRef), behavior); 527 return ewkView;527 return smartData->priv; 528 528 } 529 529 … … 532 532 * Constructs a ewk_view Evas_Object with WKType parameters. 533 533 */ 534 E vas_Object* ewk_view_base_add(Evas* canvas, WKContextRef contextRef, WKPageGroupRef pageGroupRef, EwkView::ViewBehavior behavior)534 EwkView* ewk_view_base_add(Evas* canvas, WKContextRef contextRef, WKPageGroupRef pageGroupRef, EwkView::ViewBehavior behavior) 535 535 { 536 536 return createEwkView(canvas, createEwkViewSmartClass(), contextRef ? EwkContext::create(contextRef) : EwkContext::defaultContext(), pageGroupRef, behavior); … … 539 539 Evas_Object* ewk_view_smart_add(Evas* canvas, Evas_Smart* smart, Ewk_Context* context) 540 540 { 541 return createEwkView(canvas, smart, ewk_object_cast<EwkContext*>(context)); 541 EwkView* ewkView = createEwkView(canvas, smart, ewk_object_cast<EwkContext*>(context)); 542 if (!ewkView) 543 return 0; 544 545 return ewkView->view(); 542 546 } 543 547 -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h
r140686 r141836 26 26 #include <WebKit2/WKBase.h> 27 27 28 E vas_Object* ewk_view_base_add(Evas* canvas, WKContextRef, WKPageGroupRef, EwkView::ViewBehavior);28 EwkView* ewk_view_base_add(Evas* canvas, WKContextRef, WKPageGroupRef, EwkView::ViewBehavior); 29 29 30 30 #endif // ewk_view_private_h -
trunk/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp
r140686 r141836 99 99 return 0; 100 100 101 m_inspectorView = ewk_view_base_add(ecore_evas_get(m_inspectorWindow), toAPI(page()->process()->context()), toAPI(inspectorPageGroup()), EwkView::LegacyBehavior); 102 EwkView* inspectorViewImpl = EwkView::fromEvasObject(m_inspectorView); 103 inspectorViewImpl->setThemePath(TEST_THEME_DIR "/default.edj"); 104 105 Ewk_Settings* settings = inspectorViewImpl->settings(); 101 // FIXME: Refactor to use WKViewRef. 102 EwkView* ewkView = ewk_view_base_add(ecore_evas_get(m_inspectorWindow), toAPI(page()->process()->context()), toAPI(inspectorPageGroup()), EwkView::LegacyBehavior); 103 if (!ewkView) 104 return 0; 105 106 m_inspectorView = ewkView->view(); 107 108 ewkView->setThemePath(TEST_THEME_DIR "/default.edj"); 109 110 Ewk_Settings* settings = ewkView->settings(); 106 111 ewk_settings_file_access_from_file_urls_allowed_set(settings, true); 107 112 108 return inspectorViewImpl->page();113 return ewkView->page(); 109 114 } 110 115 -
trunk/Tools/ChangeLog
r141829 r141836 1 2013-02-04 Kenneth Rohde Christiansen <kenneth@webkit.org> 2 3 [EFL][WK2] Introduce a WebView class as counterpart for WKViewRef 4 https://bugs.webkit.org/show_bug.cgi?id=107931 5 6 Reviewed by Anders Carlsson. 7 8 Change platformView to be a WKView and use WKViewGetEvasObject 9 for the places where an Evas_Object is needed. 10 11 Instead of extracting the Ecore_Evas* from the m_view we use 12 the m_window instead, which actually holds the it. 13 14 * TestWebKitAPI/PlatformWebView.h: 15 * TestWebKitAPI/efl/PlatformWebView.cpp: 16 (TestWebKitAPI::PlatformWebView::PlatformWebView): 17 (TestWebKitAPI::PlatformWebView::~PlatformWebView): 18 (TestWebKitAPI::PlatformWebView::resizeTo): 19 (TestWebKitAPI::PlatformWebView::page): 20 (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress): 21 (TestWebKitAPI::PlatformWebView::simulateMouseMove): 22 (TestWebKitAPI::PlatformWebView::simulateRightClick): 23 * WebKitTestRunner/PlatformWebView.h: 24 * WebKitTestRunner/efl/EventSenderProxyEfl.cpp: 25 (WTR::EventSenderProxy::sendTouchEvent): 26 (WTR::EventSenderProxy::setTouchModifier): 27 * WebKitTestRunner/efl/PlatformWebViewEfl.cpp: 28 (WTR::PlatformWebView::PlatformWebView): 29 (WTR::PlatformWebView::~PlatformWebView): 30 (WTR::PlatformWebView::resizeTo): 31 (WTR::PlatformWebView::page): 32 (WTR::PlatformWebView::focus): 33 (WTR::PlatformWebView::windowFrame): 34 (WTR::PlatformWebView::setWindowFrame): 35 (WTR::PlatformWebView::windowSnapshotImage): 36 1 37 2013-02-04 Timothy Loh <timloh@chromium.com> 2 38 -
trunk/Tools/TestWebKitAPI/PlatformWebView.h
r138326 r141836 48 48 typedef GtkWidget *PlatformWindow; 49 49 #elif PLATFORM(EFL) 50 #if USE(EO)51 typedef struct _Eo Evas_Object;52 #else53 typedef struct _Evas_Object Evas_Object;54 #endif55 50 typedef struct _Ecore_Evas Ecore_Evas; 56 typedef Evas_Object*PlatformWKView;51 typedef WKViewRef PlatformWKView; 57 52 typedef Ecore_Evas* PlatformWindow; 58 53 #endif -
trunk/Tools/TestWebKitAPI/efl/PlatformWebView.cpp
r140004 r141836 66 66 m_window = initEcoreEvas(); 67 67 Evas* evas = ecore_evas_get(m_window); 68 m_view = toImpl(WKViewCreate(evas, contextRef, pageGroupRef));69 ewk_view_theme_set( m_view, THEME_DIR"/default.edj");70 evas_object_smart_callback_add( m_view, "webprocess,crashed", onWebProcessCrashed, 0);68 m_view = WKViewCreate(evas, contextRef, pageGroupRef); 69 ewk_view_theme_set(WKViewGetEvasObject(m_view), THEME_DIR"/default.edj"); 70 evas_object_smart_callback_add(WKViewGetEvasObject(m_view), "webprocess,crashed", onWebProcessCrashed, 0); 71 71 resizeTo(600, 800); 72 72 } … … 74 74 PlatformWebView::~PlatformWebView() 75 75 { 76 evas_object_del(m_view); 76 Evas_Object* evasObject = WKViewGetEvasObject(m_view); 77 78 // Release first. WebView should not live longer than EwkView, as EwkView owns objects that page proxy refers to. 79 WKRelease(m_view); 80 81 // FIXME: The C WKView API currently creates the Evas_Object, so we have to destruct it 82 // (and its dependencies EwkView and WebKit::WebView) this way, until this get fixed. 83 evas_object_del(evasObject); 84 77 85 ecore_evas_free(m_window); 78 86 ecore_evas_shutdown(); … … 81 89 void PlatformWebView::resizeTo(unsigned width, unsigned height) 82 90 { 83 evas_object_resize( m_view, width, height);91 evas_object_resize(WKViewGetEvasObject(m_view), width, height); 84 92 } 85 93 86 94 WKPageRef PlatformWebView::page() const 87 95 { 88 return WKViewGetPage( toAPI(m_view));96 return WKViewGetPage(m_view); 89 97 } 90 98 … … 92 100 { 93 101 Evas* evas = ecore_evas_get(m_window); 94 evas_object_focus_set( m_view, true);102 evas_object_focus_set(WKViewGetEvasObject(m_view), true); 95 103 evas_event_feed_key_down(evas, "space", "space", " ", 0, 0, 0); 96 104 evas_event_feed_key_up(evas, "space", "space", " ", 0, 1, 0); … … 100 108 { 101 109 Evas* evas = ecore_evas_get(m_window); 102 evas_object_show( m_view);110 evas_object_show(WKViewGetEvasObject(m_view)); 103 111 evas_event_feed_mouse_move(evas, x, y, 0, 0); 104 112 } … … 107 115 { 108 116 Evas* evas = ecore_evas_get(m_window); 109 evas_object_show( m_view);117 evas_object_show(WKViewGetEvasObject(m_view)); 110 118 evas_event_feed_mouse_move(evas, x, y, 0, 0); 111 119 evas_event_feed_mouse_down(evas, 3, EVAS_BUTTON_NONE, 0, 0); -
trunk/Tools/WebKitTestRunner/PlatformWebView.h
r138326 r141836 55 55 typedef GtkWidget* PlatformWindow; 56 56 #elif PLATFORM(EFL) 57 #if USE(EO)58 typedef struct _Eo Evas_Object;59 #else60 typedef struct _Evas_Object Evas_Object;61 #endif62 57 typedef struct _Ecore_Evas Ecore_Evas; 63 typedef Evas_Object*PlatformWKView;58 typedef WKViewRef PlatformWKView; 64 59 typedef Ecore_Evas* PlatformWindow; 65 60 #endif -
trunk/Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp
r133597 r141836 439 439 ASSERT(m_touchPoints); 440 440 441 Evas_Object* ewkView = m_testController->mainWebView()->platformView();441 Evas_Object* ewkView = WKViewGetEvasObject(m_testController->mainWebView()->platformView()); 442 442 ewk_view_feed_touch_event(ewkView, eventType, m_touchPoints, evas_key_modifier_get(evas_object_evas_get(ewkView))); 443 443 … … 491 491 void EventSenderProxy::setTouchModifier(WKEventModifiers modifier, bool enable) 492 492 { 493 Evas_Object* ewkView = WKViewGetEvasObject(m_testController->mainWebView()->platformView()); 494 493 495 for (unsigned index = 0; index < (sizeof(modifierNames) / sizeof(char*)); ++index) { 494 496 if (modifier & (1 << index)) { 495 497 if (enable) 496 evas_key_modifier_on(evas_object_evas_get( m_testController->mainWebView()->platformView()), modifierNames[index]);498 evas_key_modifier_on(evas_object_evas_get(ewkView), modifierNames[index]); 497 499 else 498 evas_key_modifier_off(evas_object_evas_get( m_testController->mainWebView()->platformView()), modifierNames[index]);500 evas_key_modifier_off(evas_object_evas_get(ewkView), modifierNames[index]); 499 501 } 500 502 } -
trunk/Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp
r138462 r141836 62 62 63 63 if (m_usingFixedLayout) { 64 m_view = toImpl(WKViewCreateWithFixedLayout(evas, context, pageGroup));65 evas_object_resize( m_view, 800, 600);64 m_view = WKViewCreateWithFixedLayout(evas, context, pageGroup); 65 evas_object_resize(WKViewGetEvasObject(m_view), 800, 600); 66 66 } else 67 m_view = toImpl(WKViewCreate(evas, context, pageGroup));67 m_view = WKViewCreate(evas, context, pageGroup); 68 68 69 ewk_view_theme_set( m_view, THEME_DIR"/default.edj");69 ewk_view_theme_set(WKViewGetEvasObject(m_view), THEME_DIR"/default.edj"); 70 70 m_windowIsKey = false; 71 evas_object_show( m_view);71 evas_object_show(WKViewGetEvasObject(m_view)); 72 72 } 73 73 74 74 PlatformWebView::~PlatformWebView() 75 75 { 76 evas_object_del(m_view); 76 Evas_Object* evasObject = WKViewGetEvasObject(m_view); 77 78 // Release first. WebView should not live longer than EwkView, as EwkView owns objects that page proxy refers to. 79 WKRelease(m_view); 80 81 // FIXME: The C WKView API currently creates the Evas_Object, so we have to destruct it 82 // (and its dependencies EwkView and WebKit::WebView) this way, until this get fixed. 83 evas_object_del(evasObject); 84 77 85 ecore_evas_free(m_window); 78 86 } … … 80 88 void PlatformWebView::resizeTo(unsigned width, unsigned height) 81 89 { 82 evas_object_resize( m_view, width, height);90 evas_object_resize(WKViewGetEvasObject(m_view), width, height); 83 91 } 84 92 85 93 WKPageRef PlatformWebView::page() 86 94 { 87 return WKViewGetPage( toAPI(m_view));95 return WKViewGetPage(m_view); 88 96 } 89 97 90 98 void PlatformWebView::focus() 91 99 { 100 Evas_Object* evasObject = WKViewGetEvasObject(m_view); 92 101 // In a few cases, an iframe might receive focus from JavaScript and Evas is not aware of it at all 93 102 // (WebCoreSupport::focusedFrameChanged() does not emit any notification). We then manually remove the 94 103 // focus from the view to make the call give focus to evas_object_focus_set(..., true) to be effectful. 95 if (WKPageGetFocusedFrame(page()) != WKPageGetMainFrame(page())) 96 evas_object_focus_set(m_view, false); 97 evas_object_focus_set(m_view, true); 104 evas_object_focus_set(WKViewGetEvasObject(m_view), WKPageGetFocusedFrame(page()) == WKPageGetMainFrame(page())); 98 105 } 99 106 … … 102 109 int x, y, width, height; 103 110 104 Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(m_view)); 105 ecore_evas_request_geometry_get(ee, &x, &y, &width, &height); 111 ecore_evas_request_geometry_get(m_window, &x, &y, &width, &height); 106 112 107 113 return WKRectMake(x, y, width, height); … … 110 116 void PlatformWebView::setWindowFrame(WKRect frame) 111 117 { 112 Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(m_view)); 113 ecore_evas_move_resize(ee, frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); 118 ecore_evas_move_resize(m_window, frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); 114 119 } 115 120 … … 128 133 WKRetainPtr<WKImageRef> PlatformWebView::windowSnapshotImage() 129 134 { 130 Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(m_view));131 ASSERT(ee);132 133 135 int width; 134 136 int height; 135 ecore_evas_geometry_get( ee, 0, 0, &width, &height);137 ecore_evas_geometry_get(m_window, 0, 0, &width, &height); 136 138 ASSERT(width > 0 && height > 0); 137 139 138 return adoptWK(WKViewCreateSnapshot( toAPI(m_view)));140 return adoptWK(WKViewCreateSnapshot(m_view)); 139 141 } 140 142
Note: See TracChangeset
for help on using the changeset viewer.