Changeset 242336 in webkit
- Timestamp:
- Mar 3, 2019, 8:38:26 PM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r242332 r242336 1 2019-03-03 Jiewen Tan <jiewen_tan@apple.com> 2 3 Add a WebViewDidMoveToWindowObserver for WKWebView 4 https://bugs.webkit.org/show_bug.cgi?id=195223 5 <rdar://problem/48520161> 6 7 Reviewed by Darin Adler. 8 9 The load optimizer would only allow itself to optimize loads whenever the web view 10 who owns the page is (visible && focused), otherwises it will wait until the web view 11 becomes (visible && focused). Therefore, we need a way to notify the load optimizer 12 changes of statuses. 13 14 * UIProcess/API/Cocoa/WKWebView.mm: 15 (-[WKWebView didMoveToWindow]): 16 * UIProcess/Cocoa/WebViewImpl.mm: 17 (WebKit::WebViewImpl::viewDidMoveToWindow): 18 * UIProcess/WebPageProxy.cpp: 19 (WebKit::WebPageProxy::addWebViewDidMoveToWindowObserver): 20 (WebKit::WebPageProxy::removeWebViewDidMoveToWindowObserver): 21 (WebKit::WebPageProxy::webViewDidMoveToWindow): 22 * UIProcess/WebPageProxy.h: 23 * UIProcess/WebViewDidMoveToWindowObserver.h: Added. 24 * WebKit.xcodeproj/project.pbxproj: 25 1 26 2019-03-03 Andy Estes <aestes@apple.com> 2 27 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
r242222 r242336 2489 2489 { 2490 2490 _page->activityStateDidChange(WebCore::ActivityState::allFlags()); 2491 _page->webViewDidMoveToWindow(); 2491 2492 } 2492 2493 -
trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm
r242325 r242336 2218 2218 2219 2219 m_page->setIntrinsicDeviceScaleFactor(intrinsicDeviceScaleFactor()); 2220 m_page->webViewDidMoveToWindow(); 2220 2221 } 2221 2222 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r242332 r242336 129 129 #include "WebURLSchemeHandler.h" 130 130 #include "WebUserContentControllerProxy.h" 131 #include "WebViewDidMoveToWindowObserver.h" 131 132 #include "WebsiteDataStore.h" 132 133 #include <WebCore/AdClickAttribution.h> … … 8783 8784 #endif 8784 8785 8786 void WebPageProxy::addObserver(WebViewDidMoveToWindowObserver& observer) 8787 { 8788 auto result = m_webViewDidMoveToWindowObservers.add(&observer, makeWeakPtr(observer)); 8789 ASSERT_UNUSED(result, result.isNewEntry); 8790 } 8791 8792 void WebPageProxy::removeObserver(WebViewDidMoveToWindowObserver& observer) 8793 { 8794 auto result = m_webViewDidMoveToWindowObservers.remove(&observer); 8795 ASSERT_UNUSED(result, result); 8796 } 8797 8798 void WebPageProxy::webViewDidMoveToWindow() 8799 { 8800 for (const auto& observer : m_webViewDidMoveToWindowObservers) { 8801 if (!observer.value) 8802 continue; 8803 observer.value->webViewDidMoveToWindow(); 8804 } 8805 } 8806 8785 8807 } // namespace WebKit 8786 8808 -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r242332 r242336 229 229 class DrawingAreaProxy; 230 230 class EditableImageController; 231 class GamepadData; 231 232 class NativeWebGestureEvent; 232 233 class NativeWebKeyboardEvent; … … 264 265 class WebWheelEvent; 265 266 class WebsiteDataStore; 266 class GamepadData;267 class WebViewDidMoveToWindowObserver; 267 268 268 269 struct AttributedString; … … 1471 1472 void clearAdClickAttribution(CompletionHandler<void()>&&); 1472 1473 1474 void addObserver(WebViewDidMoveToWindowObserver&); 1475 void removeObserver(WebViewDidMoveToWindowObserver&); 1476 void webViewDidMoveToWindow(); 1477 1473 1478 // IPC::MessageReceiver 1474 1479 // Implemented in generated WebPageProxyMessageReceiver.cpp … … 2403 2408 std::unique_ptr<EditableImageController> m_editableImageController; 2404 2409 #endif 2410 2411 HashMap<WebViewDidMoveToWindowObserver*, WeakPtr<WebViewDidMoveToWindowObserver>> m_webViewDidMoveToWindowObservers; 2405 2412 }; 2406 2413 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r242332 r242336 1020 1020 53CFBBC82224D1B500266546 /* TextCheckerCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 53CFBBC72224D1B000266546 /* TextCheckerCompletion.h */; }; 1021 1021 570AB8F320AE3BD700B8BE87 /* SecKeyProxyStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 570AB8F220AE3BD700B8BE87 /* SecKeyProxyStore.h */; }; 1022 572FD44322265CE200A1ECC3 /* WebViewDidMoveToWindowObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 572FD44122265CE200A1ECC3 /* WebViewDidMoveToWindowObserver.h */; }; 1022 1023 57597EB921811D9A0037F924 /* CtapHidDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 57597EB721811D9A0037F924 /* CtapHidDriver.h */; }; 1023 1024 57597EBD218184900037F924 /* CtapHidAuthenticator.h in Headers */ = {isa = PBXBuildFile; fileRef = 57597EBB2181848F0037F924 /* CtapHidAuthenticator.h */; }; … … 3357 3358 570AB90020B2517400B8BE87 /* AuthenticationChallengeProxyCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AuthenticationChallengeProxyCocoa.mm; sourceTree = "<group>"; }; 3358 3359 570AB90320B2541C00B8BE87 /* SecKeyProxyStore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SecKeyProxyStore.mm; sourceTree = "<group>"; }; 3360 572FD44122265CE200A1ECC3 /* WebViewDidMoveToWindowObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebViewDidMoveToWindowObserver.h; sourceTree = "<group>"; }; 3359 3361 575075A720AB763600693EA9 /* WebCredentialMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCredentialMac.mm; sourceTree = "<group>"; }; 3360 3362 5750F32A2032D4E500389347 /* LocalAuthentication.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LocalAuthentication.framework; path = System/Library/Frameworks/LocalAuthentication.framework; sourceTree = SDKROOT; }; … … 7516 7518 51E8B68D1E712873001B7132 /* WebURLSchemeTask.cpp */, 7517 7519 51D124271E6D3F1F002B2820 /* WebURLSchemeTask.h */, 7520 572FD44122265CE200A1ECC3 /* WebViewDidMoveToWindowObserver.h */, 7518 7521 ); 7519 7522 path = UIProcess; … … 9742 9745 0F08CF521D63C13A00B48DF1 /* WKFormSelectPicker.h in Headers */, 9743 9746 0F08CF541D63C14000B48DF1 /* WKFormSelectPopover.h in Headers */, 9747 572FD44322265CE200A1ECC3 /* WebViewDidMoveToWindowObserver.h in Headers */, 9744 9748 BCE4695A1214EDF4000B98EB /* WKFormSubmissionListener.h in Headers */, 9745 9749 37DFA7001810BB92001F4A9F /* WKFoundation.h in Headers */,
Note:
See TracChangeset
for help on using the changeset viewer.