⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 185840 in webkit


Ignore:
Timestamp:
Jun 22, 2015, 1:10:50 PM (11 years ago)
Author:
achristensen@apple.com
Message:

[Content Extensions] Add SPI to reload without content blocking.
https://bugs.webkit.org/show_bug.cgi?id=146128
rdar://problem/20351903

Reviewed by Sam Weinig.

Source/WebCore:

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource):

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::willSendRequest):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::open):

  • page/Page.h:

(WebCore::Page::userContentController):
(WebCore::Page::userContentExtensionsEnabled):
(WebCore::Page::setUserContentExtensionsEnabled):
(WebCore::Page::group):

  • page/UserContentController.cpp:

(WebCore::UserContentController::removeAllUserContentExtensions):
(WebCore::UserContentController::processContentExtensionRulesForLoad):
(WebCore::UserContentController::actionsForResourceLoad):

  • page/UserContentController.h:

Source/WebKit2:

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetCustomUserAgent):
(WKPageSetUserContentExtensionsEnabled):
(WKPageSupportsTextEncoding):

  • UIProcess/API/C/WKPage.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _customUserAgent]):
(-[WKWebView _setUserContentExtensionsEnabled:]):
(-[WKWebView _userContentExtensionsEnabled]):
(-[WKWebView _setCustomUserAgent:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setShouldScaleViewToFitDocument):
(WebKit::WebPageProxy::setUserContentExtensionsEnabled):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::userContentExtensionsEnabled):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):
(WebKit::WebPage::reinitializeWebPage):
(WebKit::WebPage::setShouldScaleViewToFitDocument):
(WebKit::WebPage::setUserContentExtensionsEnabled):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Pass a boolean from the API to WebCore.

Location:
trunk/Source
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r185838 r185840  
     12015-06-20  Alex Christensen  <achristensen@webkit.org>
     2
     3        [Content Extensions] Add SPI to reload without content blocking.
     4        https://bugs.webkit.org/show_bug.cgi?id=146128
     5        rdar://problem/20351903
     6
     7        Reviewed by Sam Weinig.
     8
     9        * html/HTMLMediaElement.cpp:
     10        (WebCore::HTMLMediaElement::loadResource):
     11        * loader/ResourceLoader.cpp:
     12        (WebCore::ResourceLoader::willSendRequest):
     13        * loader/cache/CachedResourceLoader.cpp:
     14        (WebCore::CachedResourceLoader::requestResource):
     15        * page/DOMWindow.cpp:
     16        (WebCore::DOMWindow::open):
     17        * page/Page.h:
     18        (WebCore::Page::userContentController):
     19        (WebCore::Page::userContentExtensionsEnabled):
     20        (WebCore::Page::setUserContentExtensionsEnabled):
     21        (WebCore::Page::group):
     22        * page/UserContentController.cpp:
     23        (WebCore::UserContentController::removeAllUserContentExtensions):
     24        (WebCore::UserContentController::processContentExtensionRulesForLoad):
     25        (WebCore::UserContentController::actionsForResourceLoad):
     26        * page/UserContentController.h:
     27
    1282015-06-22  Zalan Bujtas  <zalan@apple.com>
    229
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r185727 r185840  
    11681168
    11691169    if (page->userContentController() && documentLoader)
    1170         page->userContentController()->processContentExtensionRulesForLoad(request, ResourceType::Media, *documentLoader);
     1170        page->userContentController()->processContentExtensionRulesForLoad(*page, request, ResourceType::Media, *documentLoader);
    11711171
    11721172    if (request.isNull()) {
  • trunk/Source/WebCore/loader/ResourceLoader.cpp

    r185040 r185840  
    294294
    295295    ASSERT(!m_reachedTerminalState);
     296    ASSERT(m_resourceType != ResourceType::Invalid);
     297
     298    if (!frameLoader()) {
     299        didFail(cannotShowURLError());
     300        return;
     301    }
     302
     303    Page* page = frameLoader()->frame().page();
     304    if (!page) {
     305        didFail(cannotShowURLError());
     306        return;
     307    }
     308
     309    if (!m_documentLoader) {
     310        didFail(cannotShowURLError());
     311        return;
     312    }
    296313
    297314#if ENABLE(CONTENT_EXTENSIONS)
    298     ASSERT(m_resourceType != ResourceType::Invalid);
    299 
    300     if (frameLoader() && frameLoader()->frame().page() && frameLoader()->frame().page()->userContentController() && m_documentLoader)
    301         frameLoader()->frame().page()->userContentController()->processContentExtensionRulesForLoad(request, m_resourceType, *m_documentLoader);
     315    auto* userContentController = page->userContentController();
     316    if (userContentController)
     317        userContentController->processContentExtensionRulesForLoad(*page, request, m_resourceType, *m_documentLoader);
    302318
    303319    if (request.isNull()) {
  • trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp

    r185337 r185840  
    510510#if ENABLE(CONTENT_EXTENSIONS)
    511511    if (frame() && frame()->mainFrame().page() && frame()->mainFrame().page()->userContentController() && m_documentLoader)
    512         frame()->mainFrame().page()->userContentController()->processContentExtensionRulesForLoad(request.mutableResourceRequest(), toResourceType(type), *m_documentLoader);
     512        frame()->mainFrame().page()->userContentController()->processContentExtensionRulesForLoad(*frame()->mainFrame().page(), request.mutableResourceRequest(), toResourceType(type), *m_documentLoader);
    513513
    514514    if (request.mutableResourceRequest().isNull())
  • trunk/Source/WebCore/page/DOMWindow.cpp

    r185712 r185840  
    21482148        && firstFrame->mainFrame().document()) {
    21492149        ResourceLoadInfo resourceLoadInfo = {firstFrame->document()->completeURL(urlString), firstFrame->mainFrame().document()->url(), ResourceType::Popup};
    2150         Vector<ContentExtensions::Action> actions = firstFrame->mainFrame().page()->userContentController()->actionsForResourceLoad(resourceLoadInfo);
     2150        Vector<ContentExtensions::Action> actions = firstFrame->mainFrame().page()->userContentController()->actionsForResourceLoad(*firstFrame->mainFrame().page(), resourceLoadInfo);
    21512151        for (const ContentExtensions::Action& action : actions) {
    21522152            if (action.type() == ContentExtensions::ActionType::BlockLoad)
  • trunk/Source/WebCore/page/Page.h

    r185477 r185840  
    435435    WEBCORE_EXPORT void setUserContentController(UserContentController*);
    436436
     437    bool userContentExtensionsEnabled() const { return m_userContentExtensionsEnabled; }
     438    void setUserContentExtensionsEnabled(bool enabled) { m_userContentExtensionsEnabled = enabled; }
     439
    437440    VisitedLinkStore& visitedLinkStore();
    438441    WEBCORE_EXPORT void setVisitedLinkStore(Ref<VisitedLinkStore>&&);
     
    626629    MediaProducer::MediaStateFlags m_mediaState { MediaProducer::IsNotPlaying };
    627630    DismissalType m_dismissalEventBeingDispatched { DismissalType::None };
     631   
     632    bool m_userContentExtensionsEnabled { true };
    628633};
    629634
  • trunk/Source/WebCore/page/UserContentController.cpp

    r184066 r185840  
    205205}
    206206
    207 void UserContentController::processContentExtensionRulesForLoad(ResourceRequest& request, ResourceType resourceType, DocumentLoader& initiatingDocumentLoader)
    208 {
    209     if (!m_contentExtensionBackend)
     207void UserContentController::processContentExtensionRulesForLoad(Page& page, ResourceRequest& request, ResourceType resourceType, DocumentLoader& initiatingDocumentLoader)
     208{
     209    if (!m_contentExtensionBackend)
     210        return;
     211
     212    if (!page.userContentExtensionsEnabled())
    210213        return;
    211214
     
    213216}
    214217
    215 Vector<ContentExtensions::Action> UserContentController::actionsForResourceLoad(const ResourceLoadInfo& resourceLoadInfo)
     218Vector<ContentExtensions::Action> UserContentController::actionsForResourceLoad(Page& page, const ResourceLoadInfo& resourceLoadInfo)
    216219{
    217220    if (!m_contentExtensionBackend)
    218221        return Vector<ContentExtensions::Action>();
    219222   
     223    if (!page.userContentExtensionsEnabled())
     224        return Vector<ContentExtensions::Action>();
     225
    220226    return m_contentExtensionBackend->actionsForResourceLoad(resourceLoadInfo);
    221227}
  • trunk/Source/WebCore/page/UserContentController.h

    r184066 r185840  
    9393    WEBCORE_EXPORT void removeAllUserContentExtensions();
    9494
    95     void processContentExtensionRulesForLoad(ResourceRequest&, ResourceType, DocumentLoader& initiatingDocumentLoader);
    96     Vector<ContentExtensions::Action> actionsForResourceLoad(const ResourceLoadInfo&);
     95    void processContentExtensionRulesForLoad(Page&, ResourceRequest&, ResourceType, DocumentLoader& initiatingDocumentLoader);
     96    Vector<ContentExtensions::Action> actionsForResourceLoad(Page&, const ResourceLoadInfo&);
    9797#endif
    9898
  • trunk/Source/WebKit2/ChangeLog

    r185839 r185840  
     12015-06-20  Alex Christensen  <achristensen@webkit.org>
     2
     3        [Content Extensions] Add SPI to reload without content blocking.
     4        https://bugs.webkit.org/show_bug.cgi?id=146128
     5        rdar://problem/20351903
     6
     7        Reviewed by Sam Weinig.
     8
     9        * Shared/WebPageCreationParameters.cpp:
     10        (WebKit::WebPageCreationParameters::encode):
     11        (WebKit::WebPageCreationParameters::decode):
     12        * Shared/WebPageCreationParameters.h:
     13        * UIProcess/API/C/WKPage.cpp:
     14        (WKPageSetCustomUserAgent):
     15        (WKPageSetUserContentExtensionsEnabled):
     16        (WKPageSupportsTextEncoding):
     17        * UIProcess/API/C/WKPage.h:
     18        * UIProcess/API/Cocoa/WKWebView.mm:
     19        (-[WKWebView _customUserAgent]):
     20        (-[WKWebView _setUserContentExtensionsEnabled:]):
     21        (-[WKWebView _userContentExtensionsEnabled]):
     22        (-[WKWebView _setCustomUserAgent:]):
     23        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
     24        * UIProcess/WebPageProxy.cpp:
     25        (WebKit::WebPageProxy::creationParameters):
     26        (WebKit::WebPageProxy::setShouldScaleViewToFitDocument):
     27        (WebKit::WebPageProxy::setUserContentExtensionsEnabled):
     28        * UIProcess/WebPageProxy.h:
     29        (WebKit::WebPageProxy::userContentExtensionsEnabled):
     30        * WebProcess/WebPage/WebPage.cpp:
     31        (WebKit::WebPage::WebPage):
     32        (WebKit::WebPage::reinitializeWebPage):
     33        (WebKit::WebPage::setShouldScaleViewToFitDocument):
     34        (WebKit::WebPage::setUserContentExtensionsEnabled):
     35        * WebProcess/WebPage/WebPage.h:
     36        * WebProcess/WebPage/WebPage.messages.in:
     37        Pass a boolean from the API to WebCore.
     38
    1392015-06-22  Anders Carlsson  <andersca@apple.com>
    240
  • trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp

    r184358 r185840  
    8585    encoder << appleMailPaginationQuirkEnabled;
    8686    encoder << shouldScaleViewToFitDocument;
     87    encoder << userContentExtensionsEnabled;
    8788}
    8889
     
    189190        return false;
    190191
     192    if (!decoder.decode(parameters.userContentExtensionsEnabled))
     193        return false;
     194
    191195    return true;
    192196}
  • trunk/Source/WebKit2/Shared/WebPageCreationParameters.h

    r184358 r185840  
    131131    bool appleMailPaginationQuirkEnabled;
    132132    bool shouldScaleViewToFitDocument;
     133    bool userContentExtensionsEnabled;
    133134};
    134135
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp

    r185721 r185840  
    352352}
    353353
     354void WKPageSetUserContentExtensionsEnabled(WKPageRef pageRef, bool enabled)
     355{
     356    toImpl(pageRef)->setUserContentExtensionsEnabled(enabled);
     357}
     358
    354359bool WKPageSupportsTextEncoding(WKPageRef pageRef)
    355360{
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.h

    r183595 r185840  
    124124WK_EXPORT void WKPageSetCustomUserAgent(WKPageRef page, WKStringRef userAgent);
    125125
     126WK_EXPORT void WKPageSetUserContentExtensionsEnabled(WKPageRef, bool);
     127   
    126128WK_EXPORT bool WKPageSupportsTextEncoding(WKPageRef page);
    127129WK_EXPORT WKStringRef WKPageCopyCustomTextEncodingName(WKPageRef page);
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r185827 r185840  
    19011901{
    19021902    return self.customUserAgent;
    1903 
    19041903}
    19051904
     
    19071906{
    19081907    self.customUserAgent = customUserAgent;
     1908}
     1909
     1910- (void)_setUserContentExtensionsEnabled:(BOOL)userContentExtensionsEnabled
     1911{
     1912    _page->setUserContentExtensionsEnabled(userContentExtensionsEnabled);
     1913}
     1914
     1915- (BOOL)_userContentExtensionsEnabled
     1916{
     1917    return _page->userContentExtensionsEnabled();
    19091918}
    19101919
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r185803 r185840  
    7474@property (copy, setter=_setCustomUserAgent:) NSString *_customUserAgent;
    7575
     76@property (nonatomic, setter=_setUserContentExtensionsEnabled:) BOOL _userContentExtensionsEnabled WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
     77
    7678@property (nonatomic, readonly) pid_t _webProcessIdentifier;
    7779
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r185799 r185840  
    50485048#endif
    50495049    parameters.shouldScaleViewToFitDocument = m_shouldScaleViewToFitDocument;
     5050    parameters.userContentExtensionsEnabled = m_userContentExtensionsEnabled;
    50505051
    50515052    return parameters;
     
    59065907}
    59075908
     5909void WebPageProxy::setUserContentExtensionsEnabled(bool userContentExtensionsEnabled)
     5910{
     5911    if (m_userContentExtensionsEnabled == userContentExtensionsEnabled)
     5912        return;
     5913
     5914    m_userContentExtensionsEnabled = userContentExtensionsEnabled;
     5915
     5916    if (!isValid())
     5917        return;
     5918
     5919    m_process->send(Messages::WebPage::SetUserContentExtensionsEnabled(userContentExtensionsEnabled), m_pageID);
     5920}
     5921
    59085922} // namespace WebKit
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r185721 r185840  
    660660#endif
    661661    void setShouldScaleViewToFitDocument(bool);
     662   
     663    bool userContentExtensionsEnabled() { return m_userContentExtensionsEnabled; }
     664    void setUserContentExtensionsEnabled(bool);
    662665
    663666    float deviceScaleFactor() const;
     
    17461749#endif
    17471750
     1751    bool m_userContentExtensionsEnabled { true };
    17481752};
    17491753
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r185727 r185840  
    516516    if (parameters.viewScaleFactor != 1)
    517517        scaleView(parameters.viewScaleFactor);
     518
     519    m_page->setUserContentExtensionsEnabled(parameters.userContentExtensionsEnabled);
    518520}
    519521
     
    50235025}
    50245026
     5027void WebPage::setUserContentExtensionsEnabled(bool userContentExtensionsEnabled)
     5028{
     5029    if (!m_page)
     5030        return;
     5031
     5032    m_page->setUserContentExtensionsEnabled(userContentExtensionsEnabled);
     5033}
     5034
    50255035} // namespace WebKit
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r185742 r185840  
    11371137
    11381138    void setShouldScaleViewToFitDocument(bool);
     1139    void setUserContentExtensionsEnabled(bool);
    11391140
    11401141    uint64_t m_pageID;
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r185563 r185840  
    435435    ClearWheelEventTestTrigger()
    436436    SetShouldScaleViewToFitDocument(bool shouldScaleViewToFitDocument)
     437    SetUserContentExtensionsEnabled(bool userContentExtensionsEnabled)
    437438}
Note: See TracChangeset for help on using the changeset viewer.