Diff
Modified: trunk/Source/WebCore/ChangeLog (185839 => 185840)
--- trunk/Source/WebCore/ChangeLog 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebCore/ChangeLog 2015-06-22 20:10:50 UTC (rev 185840)
@@ -1,3 +1,30 @@
+2015-06-20 Alex Christensen <achristen...@webkit.org>
+
+ [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.
+
+ * 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:
+
2015-06-22 Zalan Bujtas <za...@apple.com>
REGRESSION(r169105) Dangling renderer pointer in SelectionSubtreeRoot::SelectionSubtreeData.
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (185839 => 185840)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2015-06-22 20:10:50 UTC (rev 185840)
@@ -1167,7 +1167,7 @@
DocumentLoader* documentLoader = frame->loader().documentLoader();
if (page->userContentController() && documentLoader)
- page->userContentController()->processContentExtensionRulesForLoad(request, ResourceType::Media, *documentLoader);
+ page->userContentController()->processContentExtensionRulesForLoad(*page, request, ResourceType::Media, *documentLoader);
if (request.isNull()) {
mediaLoadingFailed(MediaPlayer::FormatError);
Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (185839 => 185840)
--- trunk/Source/WebCore/loader/ResourceLoader.cpp 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp 2015-06-22 20:10:50 UTC (rev 185840)
@@ -293,13 +293,29 @@
Ref<ResourceLoader> protect(*this);
ASSERT(!m_reachedTerminalState);
+ ASSERT(m_resourceType != ResourceType::Invalid);
+ if (!frameLoader()) {
+ didFail(cannotShowURLError());
+ return;
+ }
+
+ Page* page = frameLoader()->frame().page();
+ if (!page) {
+ didFail(cannotShowURLError());
+ return;
+ }
+
+ if (!m_documentLoader) {
+ didFail(cannotShowURLError());
+ return;
+ }
+
#if ENABLE(CONTENT_EXTENSIONS)
- ASSERT(m_resourceType != ResourceType::Invalid);
+ auto* userContentController = page->userContentController();
+ if (userContentController)
+ userContentController->processContentExtensionRulesForLoad(*page, request, m_resourceType, *m_documentLoader);
- if (frameLoader() && frameLoader()->frame().page() && frameLoader()->frame().page()->userContentController() && m_documentLoader)
- frameLoader()->frame().page()->userContentController()->processContentExtensionRulesForLoad(request, m_resourceType, *m_documentLoader);
-
if (request.isNull()) {
didFail(cannotShowURLError());
return;
Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (185839 => 185840)
--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2015-06-22 20:10:50 UTC (rev 185840)
@@ -509,7 +509,7 @@
#if ENABLE(CONTENT_EXTENSIONS)
if (frame() && frame()->mainFrame().page() && frame()->mainFrame().page()->userContentController() && m_documentLoader)
- frame()->mainFrame().page()->userContentController()->processContentExtensionRulesForLoad(request.mutableResourceRequest(), toResourceType(type), *m_documentLoader);
+ frame()->mainFrame().page()->userContentController()->processContentExtensionRulesForLoad(*frame()->mainFrame().page(), request.mutableResourceRequest(), toResourceType(type), *m_documentLoader);
if (request.mutableResourceRequest().isNull())
return nullptr;
Modified: trunk/Source/WebCore/page/DOMWindow.cpp (185839 => 185840)
--- trunk/Source/WebCore/page/DOMWindow.cpp 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebCore/page/DOMWindow.cpp 2015-06-22 20:10:50 UTC (rev 185840)
@@ -2147,7 +2147,7 @@
&& firstFrame->mainFrame().page()->userContentController()
&& firstFrame->mainFrame().document()) {
ResourceLoadInfo resourceLoadInfo = {firstFrame->document()->completeURL(urlString), firstFrame->mainFrame().document()->url(), ResourceType::Popup};
- Vector<ContentExtensions::Action> actions = firstFrame->mainFrame().page()->userContentController()->actionsForResourceLoad(resourceLoadInfo);
+ Vector<ContentExtensions::Action> actions = firstFrame->mainFrame().page()->userContentController()->actionsForResourceLoad(*firstFrame->mainFrame().page(), resourceLoadInfo);
for (const ContentExtensions::Action& action : actions) {
if (action.type() == ContentExtensions::ActionType::BlockLoad)
return nullptr;
Modified: trunk/Source/WebCore/page/Page.h (185839 => 185840)
--- trunk/Source/WebCore/page/Page.h 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebCore/page/Page.h 2015-06-22 20:10:50 UTC (rev 185840)
@@ -434,6 +434,9 @@
UserContentController* userContentController() { return m_userContentController.get(); }
WEBCORE_EXPORT void setUserContentController(UserContentController*);
+ bool userContentExtensionsEnabled() const { return m_userContentExtensionsEnabled; }
+ void setUserContentExtensionsEnabled(bool enabled) { m_userContentExtensionsEnabled = enabled; }
+
VisitedLinkStore& visitedLinkStore();
WEBCORE_EXPORT void setVisitedLinkStore(Ref<VisitedLinkStore>&&);
@@ -625,6 +628,8 @@
MediaProducer::MediaStateFlags m_mediaState { MediaProducer::IsNotPlaying };
DismissalType m_dismissalEventBeingDispatched { DismissalType::None };
+
+ bool m_userContentExtensionsEnabled { true };
};
inline PageGroup& Page::group()
Modified: trunk/Source/WebCore/page/UserContentController.cpp (185839 => 185840)
--- trunk/Source/WebCore/page/UserContentController.cpp 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebCore/page/UserContentController.cpp 2015-06-22 20:10:50 UTC (rev 185840)
@@ -204,19 +204,25 @@
m_contentExtensionBackend->removeAllContentExtensions();
}
-void UserContentController::processContentExtensionRulesForLoad(ResourceRequest& request, ResourceType resourceType, DocumentLoader& initiatingDocumentLoader)
+void UserContentController::processContentExtensionRulesForLoad(Page& page, ResourceRequest& request, ResourceType resourceType, DocumentLoader& initiatingDocumentLoader)
{
if (!m_contentExtensionBackend)
return;
+ if (!page.userContentExtensionsEnabled())
+ return;
+
m_contentExtensionBackend->processContentExtensionRulesForLoad(request, resourceType, initiatingDocumentLoader);
}
-Vector<ContentExtensions::Action> UserContentController::actionsForResourceLoad(const ResourceLoadInfo& resourceLoadInfo)
+Vector<ContentExtensions::Action> UserContentController::actionsForResourceLoad(Page& page, const ResourceLoadInfo& resourceLoadInfo)
{
if (!m_contentExtensionBackend)
return Vector<ContentExtensions::Action>();
+ if (!page.userContentExtensionsEnabled())
+ return Vector<ContentExtensions::Action>();
+
return m_contentExtensionBackend->actionsForResourceLoad(resourceLoadInfo);
}
#endif
Modified: trunk/Source/WebCore/page/UserContentController.h (185839 => 185840)
--- trunk/Source/WebCore/page/UserContentController.h 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebCore/page/UserContentController.h 2015-06-22 20:10:50 UTC (rev 185840)
@@ -92,8 +92,8 @@
WEBCORE_EXPORT void removeUserContentExtension(const String& name);
WEBCORE_EXPORT void removeAllUserContentExtensions();
- void processContentExtensionRulesForLoad(ResourceRequest&, ResourceType, DocumentLoader& initiatingDocumentLoader);
- Vector<ContentExtensions::Action> actionsForResourceLoad(const ResourceLoadInfo&);
+ void processContentExtensionRulesForLoad(Page&, ResourceRequest&, ResourceType, DocumentLoader& initiatingDocumentLoader);
+ Vector<ContentExtensions::Action> actionsForResourceLoad(Page&, const ResourceLoadInfo&);
#endif
private:
Modified: trunk/Source/WebKit2/ChangeLog (185839 => 185840)
--- trunk/Source/WebKit2/ChangeLog 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/ChangeLog 2015-06-22 20:10:50 UTC (rev 185840)
@@ -1,3 +1,41 @@
+2015-06-20 Alex Christensen <achristen...@webkit.org>
+
+ [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.
+
+ * 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.
+
2015-06-22 Anders Carlsson <ander...@apple.com>
Remove m_clientRunLoop from IPC::Connection
Modified: trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp (185839 => 185840)
--- trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp 2015-06-22 20:10:50 UTC (rev 185840)
@@ -84,6 +84,7 @@
#endif
encoder << appleMailPaginationQuirkEnabled;
encoder << shouldScaleViewToFitDocument;
+ encoder << userContentExtensionsEnabled;
}
bool WebPageCreationParameters::decode(IPC::ArgumentDecoder& decoder, WebPageCreationParameters& parameters)
@@ -188,6 +189,9 @@
if (!decoder.decode(parameters.shouldScaleViewToFitDocument))
return false;
+ if (!decoder.decode(parameters.userContentExtensionsEnabled))
+ return false;
+
return true;
}
Modified: trunk/Source/WebKit2/Shared/WebPageCreationParameters.h (185839 => 185840)
--- trunk/Source/WebKit2/Shared/WebPageCreationParameters.h 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/Shared/WebPageCreationParameters.h 2015-06-22 20:10:50 UTC (rev 185840)
@@ -130,6 +130,7 @@
#endif
bool appleMailPaginationQuirkEnabled;
bool shouldScaleViewToFitDocument;
+ bool userContentExtensionsEnabled;
};
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (185839 => 185840)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2015-06-22 20:10:50 UTC (rev 185840)
@@ -351,6 +351,11 @@
toImpl(pageRef)->setCustomUserAgent(toWTFString(userAgentRef));
}
+void WKPageSetUserContentExtensionsEnabled(WKPageRef pageRef, bool enabled)
+{
+ toImpl(pageRef)->setUserContentExtensionsEnabled(enabled);
+}
+
bool WKPageSupportsTextEncoding(WKPageRef pageRef)
{
return toImpl(pageRef)->supportsTextEncoding();
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.h (185839 => 185840)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.h 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.h 2015-06-22 20:10:50 UTC (rev 185840)
@@ -123,6 +123,8 @@
WK_EXPORT WKStringRef WKPageCopyCustomUserAgent(WKPageRef page);
WK_EXPORT void WKPageSetCustomUserAgent(WKPageRef page, WKStringRef userAgent);
+WK_EXPORT void WKPageSetUserContentExtensionsEnabled(WKPageRef, bool);
+
WK_EXPORT bool WKPageSupportsTextEncoding(WKPageRef page);
WK_EXPORT WKStringRef WKPageCopyCustomTextEncodingName(WKPageRef page);
WK_EXPORT void WKPageSetCustomTextEncodingName(WKPageRef page, WKStringRef encodingName);
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (185839 => 185840)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-06-22 20:10:50 UTC (rev 185840)
@@ -1900,7 +1900,6 @@
- (NSString *)_customUserAgent
{
return self.customUserAgent;
-
}
- (void)_setCustomUserAgent:(NSString *)customUserAgent
@@ -1908,6 +1907,16 @@
self.customUserAgent = customUserAgent;
}
+- (void)_setUserContentExtensionsEnabled:(BOOL)userContentExtensionsEnabled
+{
+ _page->setUserContentExtensionsEnabled(userContentExtensionsEnabled);
+}
+
+- (BOOL)_userContentExtensionsEnabled
+{
+ return _page->userContentExtensionsEnabled();
+}
+
- (pid_t)_webProcessIdentifier
{
return _page->isValid() ? _page->processIdentifier() : 0;
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (185839 => 185840)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2015-06-22 20:10:50 UTC (rev 185840)
@@ -73,6 +73,8 @@
@property (copy, setter=_setApplicationNameForUserAgent:) NSString *_applicationNameForUserAgent;
@property (copy, setter=_setCustomUserAgent:) NSString *_customUserAgent;
+@property (nonatomic, setter=_setUserContentExtensionsEnabled:) BOOL _userContentExtensionsEnabled WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+
@property (nonatomic, readonly) pid_t _webProcessIdentifier;
@property (nonatomic, getter=_isEditable, setter=_setEditable:) BOOL _editable WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (185839 => 185840)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-06-22 20:10:50 UTC (rev 185840)
@@ -5047,6 +5047,7 @@
parameters.appleMailPaginationQuirkEnabled = false;
#endif
parameters.shouldScaleViewToFitDocument = m_shouldScaleViewToFitDocument;
+ parameters.userContentExtensionsEnabled = m_userContentExtensionsEnabled;
return parameters;
}
@@ -5905,4 +5906,17 @@
m_process->send(Messages::WebPage::SetShouldScaleViewToFitDocument(shouldScaleViewToFitDocument), m_pageID);
}
+void WebPageProxy::setUserContentExtensionsEnabled(bool userContentExtensionsEnabled)
+{
+ if (m_userContentExtensionsEnabled == userContentExtensionsEnabled)
+ return;
+
+ m_userContentExtensionsEnabled = userContentExtensionsEnabled;
+
+ if (!isValid())
+ return;
+
+ m_process->send(Messages::WebPage::SetUserContentExtensionsEnabled(userContentExtensionsEnabled), m_pageID);
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (185839 => 185840)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-06-22 20:10:50 UTC (rev 185840)
@@ -659,6 +659,9 @@
void scaleViewAndUpdateGeometryFenced(double scale, WebCore::IntSize viewSize, std::function<void (const WebCore::MachSendRight&, CallbackBase::Error)>);
#endif
void setShouldScaleViewToFitDocument(bool);
+
+ bool userContentExtensionsEnabled() { return m_userContentExtensionsEnabled; }
+ void setUserContentExtensionsEnabled(bool);
float deviceScaleFactor() const;
void setIntrinsicDeviceScaleFactor(float);
@@ -1745,6 +1748,7 @@
bool m_requiresTargetMonitoring { false };
#endif
+ bool m_userContentExtensionsEnabled { true };
};
} // namespace WebKit
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (185839 => 185840)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-06-22 20:10:50 UTC (rev 185840)
@@ -515,6 +515,8 @@
if (parameters.viewScaleFactor != 1)
scaleView(parameters.viewScaleFactor);
+
+ m_page->setUserContentExtensionsEnabled(parameters.userContentExtensionsEnabled);
}
void WebPage::reinitializeWebPage(const WebPageCreationParameters& parameters)
@@ -5022,4 +5024,12 @@
m_drawingArea->setShouldScaleViewToFitDocument(shouldScaleViewToFitDocument);
}
+void WebPage::setUserContentExtensionsEnabled(bool userContentExtensionsEnabled)
+{
+ if (!m_page)
+ return;
+
+ m_page->setUserContentExtensionsEnabled(userContentExtensionsEnabled);
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (185839 => 185840)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2015-06-22 20:10:50 UTC (rev 185840)
@@ -1136,6 +1136,7 @@
void clearWheelEventTestTrigger();
void setShouldScaleViewToFitDocument(bool);
+ void setUserContentExtensionsEnabled(bool);
uint64_t m_pageID;
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (185839 => 185840)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2015-06-22 19:52:51 UTC (rev 185839)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in 2015-06-22 20:10:50 UTC (rev 185840)
@@ -434,4 +434,5 @@
ClearWheelEventTestTrigger()
SetShouldScaleViewToFitDocument(bool shouldScaleViewToFitDocument)
+ SetUserContentExtensionsEnabled(bool userContentExtensionsEnabled)
}