Changeset 76452 in webkit
- Timestamp:
- Jan 22, 2011 11:36:34 AM (13 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r76442 r76452 1 2011-01-22 Anders Carlsson <andersca@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 Add an asynchronous WKPageForceRepaint 6 https://bugs.webkit.org/show_bug.cgi?id=52964 7 <rdar://problem/8898527> 8 9 * UIProcess/API/C/WKPage.cpp: 10 (WKPageForceRepaint): 11 Call WebPageProxy::forceRepaint. 12 13 * UIProcess/API/C/WKPage.h: 14 Add WKPageForceRepaint. 15 16 * UIProcess/GenericCallback.h: 17 Add a "generic" VoidCallback class. 18 19 * UIProcess/WebPageProxy.cpp: 20 (WebKit::WebPageProxy::forceRepaint): 21 Insert the callback in the m_voidCallbacks map and send a forceRepaint message. 22 23 (WebKit::WebPageProxy::voidCallback): 24 Call the right void callback. 25 26 (WebKit::WebPageProxy::processDidCrash): 27 Invalidate m_voidCallbacks. 28 29 * UIProcess/WebPageProxy.messages.in: 30 Add a VoidCallback message. 31 32 * WebProcess/WebPage/ChunkedUpdateDrawingArea.cpp: 33 (WebKit::ChunkedUpdateDrawingArea::forceRepaint): 34 Force a repaint. 35 36 * WebProcess/WebPage/ChunkedUpdateDrawingArea.h: 37 Add forceRepaint. 38 39 * WebProcess/WebPage/WebPage.cpp: 40 (WebKit::WebPage::forceRepaint): 41 Call forceRepaint on the drawing area. 42 43 * WebProcess/WebPage/WebPage.messages.in: 44 Add a ForceRepaint message. 45 1 46 2011-01-21 Nikolas Zimmermann <nzimmermann@rim.com> 2 47 -
trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp
r76066 r76452 430 430 } 431 431 #endif 432 433 void WKPageForceRepaint(WKPageRef pageRef, void* context, WKPageForceRepaintFunction callback) 434 { 435 toImpl(pageRef)->forceRepaint(VoidCallback::create(context, callback)); 436 } -
trunk/Source/WebKit2/UIProcess/API/C/WKPage.h
r76361 r76452 342 342 #endif 343 343 344 typedef void (*WKPageForceRepaintFunction)(WKErrorRef, void*); 345 WK_EXPORT void WKPageForceRepaint(WKPageRef page, void* context, WKPageForceRepaintFunction function); 346 344 347 #ifdef __cplusplus 345 348 } -
trunk/Source/WebKit2/UIProcess/GenericCallback.h
r73808 r76452 35 35 36 36 namespace WebKit { 37 38 class VoidCallback : public RefCounted<VoidCallback> { 39 public: 40 typedef void (*CallbackFunction)(WKErrorRef, void*); 41 42 static PassRefPtr<VoidCallback> create(void* context, CallbackFunction callback) 43 { 44 return adoptRef(new VoidCallback(context, callback)); 45 } 46 47 VoidCallback() 48 { 49 ASSERT(!m_callback); 50 } 51 52 void performCallback() 53 { 54 ASSERT(m_callback); 55 56 m_callback(0, m_context); 57 58 m_callback = 0; 59 } 60 61 void invalidate() 62 { 63 ASSERT(m_callback); 64 65 RefPtr<WebError> error = WebError::create(); 66 m_callback(toAPI(error.get()), m_context); 67 68 m_callback = 0; 69 } 70 71 uint64_t callbackID() const { return m_callbackID; } 72 73 private: 74 static uint64_t generateCallbackID() 75 { 76 static uint64_t uniqueCallbackID = 1; 77 return uniqueCallbackID++; 78 } 79 80 VoidCallback(void* context, CallbackFunction callback) 81 : m_context(context) 82 , m_callback(callback) 83 , m_callbackID(generateCallbackID()) 84 { 85 } 86 87 void* m_context; 88 CallbackFunction m_callback; 89 uint64_t m_callbackID; 90 }; 37 91 38 92 template<typename APIReturnValueType, typename InternalReturnValueType = typename APITypeInfo<APIReturnValueType>::ImplType> -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r76361 r76452 1003 1003 } 1004 1004 1005 void WebPageProxy::forceRepaint(PassRefPtr<VoidCallback> prpCallback) 1006 { 1007 RefPtr<VoidCallback> callback = prpCallback; 1008 1009 if (!isValid()) { 1010 callback->invalidate(); 1011 return; 1012 } 1013 1014 uint64_t callbackID = callback->callbackID(); 1015 m_voidCallbacks.set(callbackID, callback.get()); 1016 process()->send(Messages::WebPage::ForceRepaint(callbackID), m_pageID); 1017 } 1018 1005 1019 void WebPageProxy::preferencesDidChange() 1006 1020 { … … 2141 2155 } 2142 2156 2157 void WebPageProxy::voidCallback(uint64_t callbackID) 2158 { 2159 RefPtr<VoidCallback> callback = m_voidCallbacks.take(callbackID); 2160 if (!callback) { 2161 // FIXME: Log error or assert. 2162 return; 2163 } 2164 2165 callback->performCallback(); 2166 } 2167 2143 2168 void WebPageProxy::dataCallback(const CoreIPC::DataReference& dataReference, uint64_t callbackID) 2144 2169 { … … 2250 2275 m_toolTip = String(); 2251 2276 2277 invalidateCallbackMap(m_voidCallbacks); 2252 2278 invalidateCallbackMap(m_dataCallbacks); 2253 2279 invalidateCallbackMap(m_stringCallbacks); -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r76417 r76452 274 274 void getWebArchiveOfFrame(WebFrameProxy*, PassRefPtr<DataCallback>); 275 275 void runJavaScriptInMainFrame(const String&, PassRefPtr<StringCallback>); 276 276 void forceRepaint(PassRefPtr<VoidCallback>); 277 277 278 float headerHeight(WebFrameProxy*); 278 279 float footerHeight(WebFrameProxy*); … … 511 512 void didReceiveEvent(uint32_t opaqueType, bool handled); 512 513 514 void voidCallback(uint64_t); 513 515 void dataCallback(const CoreIPC::DataReference&, uint64_t); 514 516 void stringCallback(const String&, uint64_t); … … 557 559 #endif 558 560 561 HashMap<uint64_t, RefPtr<VoidCallback> > m_voidCallbacks; 559 562 HashMap<uint64_t, RefPtr<DataCallback> > m_dataCallbacks; 560 563 HashMap<uint64_t, RefPtr<StringCallback> > m_stringCallbacks; -
trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in
r76361 r76452 114 114 115 115 # Callback messages 116 VoidCallback(uint64_t callbackID) 116 117 DataCallback(CoreIPC::DataReference resultData, uint64_t callbackID) 117 118 StringCallback(WTF::String resultString, uint64_t callbackID) -
trunk/Source/WebKit2/WebProcess/WebPage/ChunkedUpdateDrawingArea.cpp
r76061 r76452 96 96 } 97 97 98 void ChunkedUpdateDrawingArea::forceRepaint() 99 { 100 m_isWaitingForUpdate = false; 101 display(); 102 } 103 98 104 void ChunkedUpdateDrawingArea::scheduleDisplay() 99 105 { -
trunk/Source/WebKit2/WebProcess/WebPage/ChunkedUpdateDrawingArea.h
r76061 r76452 43 43 virtual void scroll(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset); 44 44 virtual void display(); 45 virtual void forceRepaint(); 45 46 46 47 #if USE(ACCELERATED_COMPOSITING) -
trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h
r76417 r76452 57 57 58 58 virtual void pageBackgroundTransparencyChanged() { } 59 virtual void onPageClose() { } 60 virtual void forceRepaint() { } 59 61 60 virtual void onPageClose() { }61 62 62 #if USE(ACCELERATED_COMPOSITING) 63 63 virtual void attachCompositingContext() = 0; -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r76434 r76452 1188 1188 } 1189 1189 1190 void WebPage::forceRepaint(uint64_t callbackID) 1191 { 1192 m_drawingArea->forceRepaint(); 1193 send(Messages::WebPageProxy::VoidCallback(callbackID)); 1194 } 1195 1190 1196 void WebPage::preferencesDidChange(const WebPreferencesStore& store) 1191 1197 { -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h
r76403 r76452 376 376 void getWebArchiveOfFrame(uint64_t frameID, uint64_t callbackID); 377 377 void runJavaScriptInMainFrame(const String&, uint64_t callbackID); 378 void forceRepaint(uint64_t callbackID); 378 379 379 380 void preferencesDidChange(const WebPreferencesStore&); -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in
r76403 r76452 65 65 GetWebArchiveOfFrame(uint64_t frameID, uint64_t callbackID) 66 66 RunJavaScriptInMainFrame(WTF::String script, uint64_t callbackID) 67 68 # FIXME: This should be a drawing area message. 69 ForceRepaint(uint64_t callbackID) 67 70 68 71 PreferencesDidChange(WebKit::WebPreferencesStore store)
Note: See TracChangeset
for help on using the changeset viewer.