Title: [147723] trunk/Source/WebKit2
Revision
147723
Author
[email protected]
Date
2013-04-05 01:20:10 -0700 (Fri, 05 Apr 2013)

Log Message

[WK2][EFL] Encapsulate view states set-up within WebView
https://bugs.webkit.org/show_bug.cgi?id=110877

Reviewed by Benjamin Poulain.

View states set-up is encapsulated within WebView. This change
reduces both usage of EwkView inside WebView class and usage of
WebPageProxy inside EwkView class.

New WKView API was added so that EwkView can define whether or not
the view is visible and focused.

* UIProcess/API/C/efl/WKView.cpp:
(WKViewIsFocused):
(WKViewSetIsFocused):
(WKViewIsVisible):
(WKViewSetIsVisible):
* UIProcess/API/C/efl/WKView.h:
* UIProcess/API/efl/EwkView.cpp:
(::handleEvent):
(EwkView::handleEvasObjectShow):
(EwkView::handleEwkViewFocusIn):
(EwkView::handleEwkViewFocusOut):
* UIProcess/API/efl/EwkView.h:
* UIProcess/efl/WebView.cpp:
(WebKit::WebView::WebView):
(WebKit::WebView::setFocused):
(WebKit):
(WebKit::WebView::setVisible):
(WebKit::WebView::isViewFocused):
(WebKit::WebView::isViewVisible):
* UIProcess/efl/WebView.h:
(WebKit::WebView::isFocused):
(WebView):
(WebKit::WebView::isVisible):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (147722 => 147723)


--- trunk/Source/WebKit2/ChangeLog	2013-04-05 08:10:19 UTC (rev 147722)
+++ trunk/Source/WebKit2/ChangeLog	2013-04-05 08:20:10 UTC (rev 147723)
@@ -1,3 +1,41 @@
+2013-04-05  Mikhail Pozdnyakov  <[email protected]>
+
+        [WK2][EFL] Encapsulate view states set-up within WebView
+        https://bugs.webkit.org/show_bug.cgi?id=110877
+
+        Reviewed by Benjamin Poulain.
+
+        View states set-up is encapsulated within WebView. This change
+        reduces both usage of EwkView inside WebView class and usage of
+        WebPageProxy inside EwkView class.
+
+        New WKView API was added so that EwkView can define whether or not
+        the view is visible and focused.
+
+        * UIProcess/API/C/efl/WKView.cpp:
+        (WKViewIsFocused):
+        (WKViewSetIsFocused):
+        (WKViewIsVisible):
+        (WKViewSetIsVisible):
+        * UIProcess/API/C/efl/WKView.h:
+        * UIProcess/API/efl/EwkView.cpp:
+        (::handleEvent):
+        (EwkView::handleEvasObjectShow):
+        (EwkView::handleEwkViewFocusIn):
+        (EwkView::handleEwkViewFocusOut):
+        * UIProcess/API/efl/EwkView.h:
+        * UIProcess/efl/WebView.cpp:
+        (WebKit::WebView::WebView):
+        (WebKit::WebView::setFocused):
+        (WebKit):
+        (WebKit::WebView::setVisible):
+        (WebKit::WebView::isViewFocused):
+        (WebKit::WebView::isViewVisible):
+        * UIProcess/efl/WebView.h:
+        (WebKit::WebView::isFocused):
+        (WebView):
+        (WebKit::WebView::isVisible):
+
 2013-04-04  KwangYong Choi  <[email protected]>
 
         [EFL][WK2] Add support for getting page contents as string

Modified: trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp (147722 => 147723)


--- trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp	2013-04-05 08:10:19 UTC (rev 147722)
+++ trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp	2013-04-05 08:20:10 UTC (rev 147723)
@@ -55,6 +55,26 @@
     toImpl(viewRef)->initializeClient(client);
 }
 
+bool WKViewIsFocused(WKViewRef viewRef)
+{
+    return toImpl(viewRef)->isFocused();
+}
+
+void WKViewSetIsFocused(WKViewRef viewRef, bool isFocused)
+{
+    toImpl(viewRef)->setFocused(isFocused);
+}
+
+bool WKViewIsVisible(WKViewRef viewRef)
+{
+    return toImpl(viewRef)->isVisible();
+}
+
+void WKViewSetIsVisible(WKViewRef viewRef, bool isVisible)
+{
+    toImpl(viewRef)->setVisible(isVisible);
+}
+
 void WKViewSetUserViewportTranslation(WKViewRef viewRef, double tx, double ty)
 {
     toImpl(viewRef)->setUserViewportTranslation(tx, ty);

Modified: trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h (147722 => 147723)


--- trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h	2013-04-05 08:10:19 UTC (rev 147722)
+++ trunk/Source/WebKit2/UIProcess/API/C/efl/WKView.h	2013-04-05 08:20:10 UTC (rev 147723)
@@ -58,6 +58,12 @@
 
 WK_EXPORT void WKViewSetViewClient(WKViewRef, const WKViewClient*);
 
+WK_EXPORT bool WKViewIsFocused(WKViewRef);
+WK_EXPORT void WKViewSetIsFocused(WKViewRef, bool);
+
+WK_EXPORT bool WKViewIsVisible(WKViewRef);
+WK_EXPORT void WKViewSetIsVisible(WKViewRef, bool);
+
 WK_EXPORT void WKViewSetUserViewportTranslation(WKViewRef, double tx, double ty);
 WK_EXPORT WKPoint WKViewUserViewportToContents(WKViewRef, WKPoint);
 

Modified: trunk/Source/WebKit2/UIProcess/API/efl/EwkView.cpp (147722 => 147723)


--- trunk/Source/WebKit2/UIProcess/API/efl/EwkView.cpp	2013-04-05 08:10:19 UTC (rev 147722)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkView.cpp	2013-04-05 08:20:10 UTC (rev 147723)
@@ -214,17 +214,14 @@
 void EwkViewEventHandler<EVAS_CALLBACK_SHOW>::handleEvent(void* data, Evas*, Evas_Object*, void*)
 {
     Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(data);
-    toEwkView(smartData)->page()->viewStateDidChange(WebPageProxy::ViewIsVisible);
+    WKViewSetIsVisible(toEwkView(smartData)->wkView(), true);
 }
 
 template <>
 void EwkViewEventHandler<EVAS_CALLBACK_HIDE>::handleEvent(void* data, Evas*, Evas_Object*, void*)
 {
     Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(data);
-
-    // We need to pass ViewIsVisible here. viewStateDidChange() itself is responsible for actually setting the visibility to Visible or Hidden
-    // depending on what WebPageProxy::isViewVisible() returns, this simply triggers the process.
-    toEwkView(smartData)->page()->viewStateDidChange(WebPageProxy::ViewIsVisible);
+    WKViewSetIsVisible(toEwkView(smartData)->wkView(), false);
 }
 
 typedef HashMap<WKPageRef, Evas_Object*> WKPageToEvasObjectMap;
@@ -622,16 +619,6 @@
     }
 }
 
-bool EwkView::isFocused() const
-{
-    return evas_object_focus_get(m_evasObject);
-}
-
-bool EwkView::isVisible() const
-{
-    return evas_object_visible_get(m_evasObject);
-}
-
 const char* EwkView::title() const
 {
     m_title = WKEinaSharedString(AdoptWK, WKPageCopyTitle(wkPage()));
@@ -1163,13 +1150,13 @@
 
 Eina_Bool EwkView::handleEwkViewFocusIn(Ewk_View_Smart_Data* smartData)
 {
-    toEwkView(smartData)->page()->viewStateDidChange(WebPageProxy::ViewIsFocused | WebPageProxy::ViewWindowIsActive);
+    WKViewSetIsFocused(toEwkView(smartData)->wkView(), true);
     return true;
 }
 
 Eina_Bool EwkView::handleEwkViewFocusOut(Ewk_View_Smart_Data* smartData)
 {
-    toEwkView(smartData)->page()->viewStateDidChange(WebPageProxy::ViewIsFocused | WebPageProxy::ViewWindowIsActive);
+    WKViewSetIsFocused(toEwkView(smartData)->wkView(), false);
     return true;
 }
 

Modified: trunk/Source/WebKit2/UIProcess/API/efl/EwkView.h (147722 => 147723)


--- trunk/Source/WebKit2/UIProcess/API/efl/EwkView.h	2013-04-05 08:10:19 UTC (rev 147722)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkView.h	2013-04-05 08:20:10 UTC (rev 147723)
@@ -119,9 +119,6 @@
     EwkWindowFeatures* windowFeatures();
     WebKit::PageViewportController* pageViewportController() { return m_pageViewportController.get(); }
 
-    bool isFocused() const;
-    bool isVisible() const;
-
     void setDeviceScaleFactor(float scale);
     float deviceScaleFactor() const;
 

Modified: trunk/Source/WebKit2/UIProcess/efl/WebView.cpp (147722 => 147723)


--- trunk/Source/WebKit2/UIProcess/efl/WebView.cpp	2013-04-05 08:10:19 UTC (rev 147722)
+++ trunk/Source/WebKit2/UIProcess/efl/WebView.cpp	2013-04-05 08:20:10 UTC (rev 147723)
@@ -54,6 +54,8 @@
 WebView::WebView(WebContext* context, WebPageGroup* pageGroup)
     : m_ewkView(0)
     , m_page(context->createWebPage(this, pageGroup))
+    , m_focused(false)
+    , m_visible(false)
 {
     m_page->pageGroup()->preferences()->setAcceleratedCompositingEnabled(true);
     m_page->pageGroup()->preferences()->setForceCompositingMode(true);
@@ -102,6 +104,24 @@
     updateViewportSize();
 }
 
+void WebView::setFocused(bool focused)
+{
+    if (m_focused == focused)
+        return;
+
+    m_focused = focused;
+    m_page->viewStateDidChange(WebPageProxy::ViewIsFocused | WebPageProxy::ViewWindowIsActive);
+}
+
+void WebView::setVisible(bool visible)
+{
+    if (m_visible == visible)
+        return;
+
+    m_visible = visible;
+    m_page->viewStateDidChange(WebPageProxy::ViewIsVisible);
+}
+
 void WebView::setUserViewportTranslation(double tx, double ty)
 {
     m_userViewportTransform = TransformationMatrix().translate(tx, ty);
@@ -301,20 +321,12 @@
 
 bool WebView::isViewFocused()
 {
-    // FIXME: Unneeded after webkit.org/b/110877
-    if (!m_ewkView)
-        return false;
-
-    return m_ewkView->isFocused();
+    return isFocused();
 }
 
 bool WebView::isViewVisible()
 {
-    // FIXME: Unneeded after webkit.org/b/110877
-    if (!m_ewkView)
-        return false;
-
-    return m_ewkView->isVisible();
+    return isVisible();
 }
 
 bool WebView::isViewInWindow()

Modified: trunk/Source/WebKit2/UIProcess/efl/WebView.h (147722 => 147723)


--- trunk/Source/WebKit2/UIProcess/efl/WebView.h	2013-04-05 08:10:19 UTC (rev 147722)
+++ trunk/Source/WebKit2/UIProcess/efl/WebView.h	2013-04-05 08:20:10 UTC (rev 147723)
@@ -60,6 +60,12 @@
     void setSize(const WebCore::IntSize&);
     const WebCore::IntSize& size() const { return m_size; }
 
+    bool isFocused() const { return m_focused; }
+    void setFocused(bool);
+
+    bool isVisible() const { return m_visible; }
+    void setVisible(bool);
+
     void setUserViewportTranslation(double tx, double ty);
     WebCore::IntPoint userViewportToContents(const WebCore::IntPoint&) const;
 
@@ -185,6 +191,8 @@
     DefaultUndoController m_undoController;
     WebCore::TransformationMatrix m_userViewportTransform;
     WebCore::IntSize m_size; // Size in device units.
+    bool m_focused;
+    bool m_visible;
 };
 
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to