Changeset 242336 in webkit


Ignore:
Timestamp:
Mar 3, 2019, 8:38:26 PM (6 years ago)
Author:
jiewen_tan@apple.com
Message:

Add a WebViewDidMoveToWindowObserver for WKWebView
https://bugs.webkit.org/show_bug.cgi?id=195223
<rdar://problem/48520161>

Reviewed by Darin Adler.

The load optimizer would only allow itself to optimize loads whenever the web view
who owns the page is (visible && focused), otherwises it will wait until the web view
becomes (visible && focused). Therefore, we need a way to notify the load optimizer
changes of statuses.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView didMoveToWindow]):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::viewDidMoveToWindow):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::addWebViewDidMoveToWindowObserver):
(WebKit::WebPageProxy::removeWebViewDidMoveToWindowObserver):
(WebKit::WebPageProxy::webViewDidMoveToWindow):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebViewDidMoveToWindowObserver.h: Added.
  • WebKit.xcodeproj/project.pbxproj:
Location:
trunk/Source/WebKit
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r242332 r242336  
     12019-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
    1262019-03-03  Andy Estes  <aestes@apple.com>
    227
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm

    r242222 r242336  
    24892489{
    24902490    _page->activityStateDidChange(WebCore::ActivityState::allFlags());
     2491    _page->webViewDidMoveToWindow();
    24912492}
    24922493
  • trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm

    r242325 r242336  
    22182218
    22192219    m_page->setIntrinsicDeviceScaleFactor(intrinsicDeviceScaleFactor());
     2220    m_page->webViewDidMoveToWindow();
    22202221}
    22212222
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r242332 r242336  
    129129#include "WebURLSchemeHandler.h"
    130130#include "WebUserContentControllerProxy.h"
     131#include "WebViewDidMoveToWindowObserver.h"
    131132#include "WebsiteDataStore.h"
    132133#include <WebCore/AdClickAttribution.h>
     
    87838784#endif
    87848785
     8786void WebPageProxy::addObserver(WebViewDidMoveToWindowObserver& observer)
     8787{
     8788    auto result = m_webViewDidMoveToWindowObservers.add(&observer, makeWeakPtr(observer));
     8789    ASSERT_UNUSED(result, result.isNewEntry);
     8790}
     8791
     8792void WebPageProxy::removeObserver(WebViewDidMoveToWindowObserver& observer)
     8793{
     8794    auto result = m_webViewDidMoveToWindowObservers.remove(&observer);
     8795    ASSERT_UNUSED(result, result);
     8796}
     8797
     8798void WebPageProxy::webViewDidMoveToWindow()
     8799{
     8800    for (const auto& observer : m_webViewDidMoveToWindowObservers) {
     8801        if (!observer.value)
     8802            continue;
     8803        observer.value->webViewDidMoveToWindow();
     8804    }
     8805}
     8806
    87858807} // namespace WebKit
    87868808
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r242332 r242336  
    229229class DrawingAreaProxy;
    230230class EditableImageController;
     231class GamepadData;
    231232class NativeWebGestureEvent;
    232233class NativeWebKeyboardEvent;
     
    264265class WebWheelEvent;
    265266class WebsiteDataStore;
    266 class GamepadData;
     267class WebViewDidMoveToWindowObserver;
    267268
    268269struct AttributedString;
     
    14711472    void clearAdClickAttribution(CompletionHandler<void()>&&);
    14721473
     1474    void addObserver(WebViewDidMoveToWindowObserver&);
     1475    void removeObserver(WebViewDidMoveToWindowObserver&);
     1476    void webViewDidMoveToWindow();
     1477
    14731478    // IPC::MessageReceiver
    14741479    // Implemented in generated WebPageProxyMessageReceiver.cpp
     
    24032408    std::unique_ptr<EditableImageController> m_editableImageController;
    24042409#endif
     2410
     2411    HashMap<WebViewDidMoveToWindowObserver*, WeakPtr<WebViewDidMoveToWindowObserver>> m_webViewDidMoveToWindowObservers;
    24052412};
    24062413
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r242332 r242336  
    10201020                53CFBBC82224D1B500266546 /* TextCheckerCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 53CFBBC72224D1B000266546 /* TextCheckerCompletion.h */; };
    10211021                570AB8F320AE3BD700B8BE87 /* SecKeyProxyStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 570AB8F220AE3BD700B8BE87 /* SecKeyProxyStore.h */; };
     1022                572FD44322265CE200A1ECC3 /* WebViewDidMoveToWindowObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 572FD44122265CE200A1ECC3 /* WebViewDidMoveToWindowObserver.h */; };
    10221023                57597EB921811D9A0037F924 /* CtapHidDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 57597EB721811D9A0037F924 /* CtapHidDriver.h */; };
    10231024                57597EBD218184900037F924 /* CtapHidAuthenticator.h in Headers */ = {isa = PBXBuildFile; fileRef = 57597EBB2181848F0037F924 /* CtapHidAuthenticator.h */; };
     
    33573358                570AB90020B2517400B8BE87 /* AuthenticationChallengeProxyCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AuthenticationChallengeProxyCocoa.mm; sourceTree = "<group>"; };
    33583359                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>"; };
    33593361                575075A720AB763600693EA9 /* WebCredentialMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCredentialMac.mm; sourceTree = "<group>"; };
    33603362                5750F32A2032D4E500389347 /* LocalAuthentication.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LocalAuthentication.framework; path = System/Library/Frameworks/LocalAuthentication.framework; sourceTree = SDKROOT; };
     
    75167518                                51E8B68D1E712873001B7132 /* WebURLSchemeTask.cpp */,
    75177519                                51D124271E6D3F1F002B2820 /* WebURLSchemeTask.h */,
     7520                                572FD44122265CE200A1ECC3 /* WebViewDidMoveToWindowObserver.h */,
    75187521                        );
    75197522                        path = UIProcess;
     
    97429745                                0F08CF521D63C13A00B48DF1 /* WKFormSelectPicker.h in Headers */,
    97439746                                0F08CF541D63C14000B48DF1 /* WKFormSelectPopover.h in Headers */,
     9747                                572FD44322265CE200A1ECC3 /* WebViewDidMoveToWindowObserver.h in Headers */,
    97449748                                BCE4695A1214EDF4000B98EB /* WKFormSubmissionListener.h in Headers */,
    97459749                                37DFA7001810BB92001F4A9F /* WKFoundation.h in Headers */,
Note: See TracChangeset for help on using the changeset viewer.