Changeset 239203 in webkit
- Timestamp:
- Dec 14, 2018 4:57:22 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r239197 r239203 1 2018-12-14 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [WPE] Use new view state API from libwpe 4 https://bugs.webkit.org/show_bug.cgi?id=191906 5 6 Reviewed by Žan Doberšek. 7 8 Remove WKViewSetViewState from the C API. 9 10 * UIProcess/API/C/wpe/WKAPICastWPE.h: 11 * UIProcess/API/C/wpe/WKView.cpp: 12 * UIProcess/API/C/wpe/WKView.h: 13 * UIProcess/API/wpe/WPEView.cpp: 14 (WKWPE::View::View): Add implementation for activity_state_changed vfunc of the view backend client.): 15 (WKWPE::View::setViewState): Remove the default flags. 16 * UIProcess/API/wpe/WPEView.h: 17 (WKWPE::View::setViewState const): Make it private. 18 1 19 2018-12-13 Joseph Pecoraro <pecoraro@apple.com> 2 20 -
trunk/Source/WebKit/UIProcess/API/C/wpe/WKAPICastWPE.h
r235560 r239203 33 33 #include "WKView.h" 34 34 #include "WebGrammarDetail.h" 35 #include <WebCore/ActivityState.h>36 35 37 36 namespace WKWPE { … … 49 48 } 50 49 51 inline OptionSet<WebCore::ActivityState::Flag> toViewStateFlags(WKViewState wkViewState)52 {53 OptionSet<WebCore::ActivityState::Flag> viewStateFlags;54 55 if (wkViewState & kWKViewStateIsInWindow)56 viewStateFlags.add(WebCore::ActivityState::IsInWindow);57 if (wkViewState & kWKViewStateIsVisible)58 viewStateFlags.add(WebCore::ActivityState::IsVisible);59 60 return viewStateFlags;61 }62 63 50 } 64 51 -
trunk/Source/WebKit/UIProcess/API/C/wpe/WKView.cpp
r225044 r239203 51 51 } 52 52 53 void WKViewSetViewState(WKViewRef view, WKViewState viewState)54 {55 toImpl(view)->setViewState(toViewStateFlags(viewState));56 }57 58 53 void WKViewSetViewClient(WKViewRef view, const WKViewClientBase* client) 59 54 { -
trunk/Source/WebKit/UIProcess/API/C/wpe/WKView.h
r225044 r239203 40 40 WK_EXPORT WKPageRef WKViewGetPage(WKViewRef); 41 41 42 enum {43 kWKViewStateIsInWindow = 1 << 0,44 kWKViewStateIsVisible = 1 << 1,45 };46 typedef uint32_t WKViewState;47 48 WK_EXPORT void WKViewSetViewState(WKViewRef, WKViewState);49 50 42 typedef void (*WKViewFrameDisplayed)(WKViewRef view, const void* clientInfo); 51 43 -
trunk/Source/WebKit/UIProcess/API/wpe/WPEView.cpp
r234921 r239203 46 46 , m_pageClient(std::make_unique<PageClientImpl>(*this)) 47 47 , m_size { 800, 600 } 48 #if !defined(WPE_BACKEND_CHECK_VERSION) || !WPE_BACKEND_CHECK_VERSION(1, 1, 0) 48 49 , m_viewStateFlags { WebCore::ActivityState::WindowIsActive, WebCore::ActivityState::IsFocused, WebCore::ActivityState::IsVisible, WebCore::ActivityState::IsInWindow } 50 #endif 49 51 , m_compositingManagerProxy(*this) 50 52 , m_backend(backend) … … 89 91 view.frameDisplayed(); 90 92 }, 93 #if defined(WPE_BACKEND_CHECK_VERSION) && WPE_BACKEND_CHECK_VERSION(1, 1, 0) 94 // activity_state_changed 95 [](void* data, uint32_t state) 96 { 97 auto& view = *reinterpret_cast<View*>(data); 98 OptionSet<WebCore::ActivityState::Flag> flags; 99 if (state & wpe_view_activity_state_visible) 100 flags.add(WebCore::ActivityState::IsVisible); 101 if (state & wpe_view_activity_state_focused) { 102 flags.add(WebCore::ActivityState::IsFocused); 103 flags.add(WebCore::ActivityState::WindowIsActive); 104 } 105 if (state & wpe_view_activity_state_in_window) 106 flags.add(WebCore::ActivityState::IsInWindow); 107 view.setViewState(flags); 108 }, 109 #else 110 nullptr, 111 #endif 91 112 // padding 92 nullptr,93 113 nullptr, 94 114 nullptr, … … 175 195 void View::setViewState(OptionSet<WebCore::ActivityState::Flag> flags) 176 196 { 177 static const OptionSet<WebCore::ActivityState::Flag> defaultFlags { WebCore::ActivityState::WindowIsActive, WebCore::ActivityState::IsFocused }; 178 179 auto changedFlags = m_viewStateFlags ^ (defaultFlags | flags); 180 m_viewStateFlags = defaultFlags | flags; 197 auto changedFlags = m_viewStateFlags ^ flags; 198 m_viewStateFlags = flags; 181 199 182 200 if (changedFlags) -
trunk/Source/WebKit/UIProcess/API/wpe/WPEView.h
r234921 r239203 70 70 71 71 OptionSet<WebCore::ActivityState::Flag> viewState() const { return m_viewStateFlags; } 72 void setViewState(OptionSet<WebCore::ActivityState::Flag>);73 72 74 73 void close(); … … 83 82 84 83 void setSize(const WebCore::IntSize&); 84 void setViewState(OptionSet<WebCore::ActivityState::Flag>); 85 85 86 86 std::unique_ptr<API::ViewClient> m_client; -
trunk/Tools/ChangeLog
r239200 r239203 1 2018-12-14 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [WPE] Use new view state API from libwpe 4 https://bugs.webkit.org/show_bug.cgi?id=191906 5 6 Reviewed by Žan Doberšek. 7 8 * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp: 9 (beforeAll): Enable /webkit/WebKitWebView/page-visibility in WPE. 10 * TestWebKitAPI/glib/WebKitGLib/TestMain.h: 11 (Test::createWebViewBackend): Make the view initially hidden for consistency with GTK+ tests. 12 * TestWebKitAPI/glib/WebKitGLib/WebViewTest.h: 13 * TestWebKitAPI/glib/WebKitGLib/wpe/WebViewTestWPE.cpp: 14 (WebViewTest::showInWindow): Add wpe_view_activity_state_visible, wpe_view_activity_state_in_window and 15 wpe_view_activity_state_focused state flags. 16 (WebViewTest::hideView): Remove wpe_view_activity_state_visible and wpe_view_activity_state_focused state flags. 17 * wpe/backends/HeadlessViewBackend.cpp: 18 (WPEToolingBackends::HeadlessViewBackend::HeadlessViewBackend): Assume view is always visible, focused and in window. 19 * wpe/backends/WindowViewBackend.cpp: 20 (WPEToolingBackends::WindowViewBackend::WindowViewBackend): Update the view state flags depending on state 21 received in configure callback. 22 * wpe/jhbuild.modules: Bump libwpe to 1.1.0 23 1 24 2018-12-13 Fujii Hironori <Hironori.Fujii@sony.com> 2 25 -
trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp
r239105 r239203 715 715 } 716 716 717 #if PLATFORM(GTK)718 717 // To test page visibility API. Currently only 'visible', 'hidden' and 'prerender' states are implemented fully in WebCore. 719 718 // See also http://www.w3.org/TR/2011/WD-page-visibility-20110602/ and https://developers.google.com/chrome/whitepapers/pagevisibility … … 777 776 } 778 777 778 #if PLATFORM(GTK) 779 779 class SnapshotWebViewTest: public WebViewTest { 780 780 public: … … 1262 1262 #if PLATFORM(GTK) 1263 1263 SnapshotWebViewTest::add("WebKitWebView", "snapshot", testWebViewSnapshot); 1264 #endif 1264 1265 WebViewTest::add("WebKitWebView", "page-visibility", testWebViewPageVisibility); 1265 #endif1266 1266 #if ENABLE(NOTIFICATIONS) 1267 1267 NotificationWebViewTest::add("WebKitWebView", "notification", testWebViewNotification); -
trunk/Tools/TestWebKitAPI/glib/WebKitGLib/TestMain.h
r238608 r239203 144 144 { 145 145 auto* headlessBackend = new WPEToolingBackends::HeadlessViewBackend(800, 600); 146 #if defined(WPE_BACKEND_CHECK_VERSION) && WPE_BACKEND_CHECK_VERSION(1, 1, 0) 147 // Make the view initially hidden for consistency with GTK+ tests. 148 wpe_view_backend_remove_activity_state(headlessBackend->backend(), wpe_view_activity_state_visible | wpe_view_activity_state_focused); 149 #endif 146 150 return webkit_web_view_backend_new(headlessBackend->backend(), [](gpointer userData) { 147 151 delete static_cast<WPEToolingBackends::HeadlessViewBackend*>(userData); -
trunk/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h
r232671 r239203 70 70 #endif 71 71 72 #if PLATFORM(WPE) 73 void showInWindow(); 74 #endif 75 72 76 WebKitJavascriptResult* runJavaScriptAndWaitUntilFinished(const char* javascript, GError**); 73 77 WebKitJavascriptResult* runJavaScriptFromGResourceAndWaitUntilFinished(const char* resource, GError**); -
trunk/Tools/TestWebKitAPI/glib/WebKitGLib/wpe/WebViewTestWPE.cpp
r218686 r239203 21 21 #include "WebViewTest.h" 22 22 23 #include <wpe/wpe.h> 24 23 25 void WebViewTest::platformDestroy() 24 26 { … … 40 42 } 41 43 44 void WebViewTest::showInWindow() 45 { 46 #if defined(WPE_BACKEND_CHECK_VERSION) && WPE_BACKEND_CHECK_VERSION(1, 1, 0) 47 auto* backend = webkit_web_view_backend_get_wpe_backend(webkit_web_view_get_backend(m_webView)); 48 wpe_view_backend_add_activity_state(backend, wpe_view_activity_state_visible | wpe_view_activity_state_in_window | wpe_view_activity_state_focused); 49 #endif 50 } 51 42 52 void WebViewTest::hideView() 43 53 { 44 // FIXME: implement. 54 #if defined(WPE_BACKEND_CHECK_VERSION) && WPE_BACKEND_CHECK_VERSION(1, 1, 0) 55 auto* backend = webkit_web_view_backend_get_wpe_backend(webkit_web_view_get_backend(m_webView)); 56 wpe_view_backend_remove_activity_state(backend, wpe_view_activity_state_visible | wpe_view_activity_state_focused); 57 #endif 45 58 } 46 59 -
trunk/Tools/wpe/backends/HeadlessViewBackend.cpp
r234193 r239203 72 72 if (!initialize()) 73 73 return; 74 75 #if defined(WPE_BACKEND_CHECK_VERSION) && WPE_BACKEND_CHECK_VERSION(1, 1, 0) 76 wpe_view_backend_add_activity_state(backend(), wpe_view_activity_state_visible | wpe_view_activity_state_focused | wpe_view_activity_state_in_window); 77 #endif 74 78 75 79 if (!eglMakeCurrent(m_eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, m_eglContext)) -
trunk/Tools/wpe/backends/WindowViewBackend.cpp
r234542 r239203 435 435 const struct zxdg_toplevel_v6_listener WindowViewBackend::s_xdgToplevelListener = { 436 436 // configure 437 [](void*, struct zxdg_toplevel_v6*, int32_t /*width*/, int32_t /*height*/, struct wl_array*) 438 { 439 // FIXME: dispatch the size against wpe_view_backend. 437 [](void* data, struct zxdg_toplevel_v6*, int32_t width, int32_t height, struct wl_array* states) 438 { 439 auto& window = *static_cast<WindowViewBackend*>(data); 440 wpe_view_backend_dispatch_set_size(window.backend(), width, height); 441 442 #if defined(WPE_BACKEND_CHECK_VERSION) && WPE_BACKEND_CHECK_VERSION(1, 1, 0) 443 bool isFocused = false; 444 void* p; 445 wl_array_for_each(p, states) 446 { 447 uint32_t state = *static_cast<uint32_t*>(p); 448 449 switch (state) { 450 case ZXDG_TOPLEVEL_V6_STATE_ACTIVATED: 451 isFocused = true; 452 break; 453 case ZXDG_TOPLEVEL_V6_STATE_FULLSCREEN: 454 case ZXDG_TOPLEVEL_V6_STATE_MAXIMIZED: 455 case ZXDG_TOPLEVEL_V6_STATE_RESIZING: 456 default: 457 break; 458 } 459 } 460 461 if (isFocused) 462 wpe_view_backend_add_activity_state(window.backend(), wpe_view_activity_state_focused); 463 else 464 wpe_view_backend_remove_activity_state(window.backend(), wpe_view_activity_state_focused); 465 #else 466 (void)states; 467 #endif 440 468 }, 441 469 // close 442 [](void*, struct zxdg_toplevel_v6*) { }, 470 [](void* data, struct zxdg_toplevel_v6*) 471 { 472 #if defined(WPE_BACKEND_CHECK_VERSION) && WPE_BACKEND_CHECK_VERSION(1, 1, 0) 473 auto& window = *static_cast<WindowViewBackend*>(data); 474 wpe_view_backend_remove_activity_state(window.backend(), wpe_view_activity_state_visible | wpe_view_activity_state_focused | wpe_view_activity_state_in_window); 475 #else 476 (void)data; 477 #endif 478 }, 443 479 }; 444 480 … … 487 523 m_xdgToplevel = zxdg_surface_v6_get_toplevel(m_xdgSurface); 488 524 if (m_xdgToplevel) { 489 zxdg_toplevel_v6_add_listener(m_xdgToplevel, &s_xdgToplevelListener, nullptr);525 zxdg_toplevel_v6_add_listener(m_xdgToplevel, &s_xdgToplevelListener, this); 490 526 zxdg_toplevel_v6_set_title(m_xdgToplevel, "WPE"); 491 527 wl_surface_commit(m_surface); 528 #if defined(WPE_BACKEND_CHECK_VERSION) && WPE_BACKEND_CHECK_VERSION(1, 1, 0) 529 wpe_view_backend_add_activity_state(backend(), wpe_view_activity_state_visible | wpe_view_activity_state_in_window); 530 #endif 492 531 } 493 532 } -
trunk/Tools/wpe/jhbuild.modules
r238866 r239203 167 167 168 168 <cmake id="libwpe"> 169 <branch repo="wpewebkit" module="libwpe-1. 0.0.tar.xz" version="1.0.0"170 hash="sha256: aff11612123f9ab85a8b9a4bcdfb3a7503eba0a0d2d96f2cdecd30e911091719"/>169 <branch repo="wpewebkit" module="libwpe-1.1.0.tar.xz" version="1.1.0" 170 hash="sha256:72e34ad754be11abd1a438cfe195d8d644c52105ab2b1c3b39dec6228bc776ce"/> 171 171 </cmake> 172 172
Note: See TracChangeset
for help on using the changeset viewer.