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;
};
}