<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[197950] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/197950">197950</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-03-10 12:46:57 -0800 (Thu, 10 Mar 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/197943">r197943</a>.
https://bugs.webkit.org/show_bug.cgi?id=155317
This change broke Windows, WinCairo, GTK and EFL builds
(Requested by ryanhaddad on #webkit).
Reverted changeset:
"Add a baseURL parameter to _WKUserStyleSheet"
https://bugs.webkit.org/show_bug.cgi?id=155219
http://trac.webkit.org/changeset/197943</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoredomExtensionStyleSheetscpp">trunk/Source/WebCore/dom/ExtensionStyleSheets.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderEmptyClientscpp">trunk/Source/WebCore/loader/EmptyClients.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderEmptyClientsh">trunk/Source/WebCore/loader/EmptyClients.h</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoadercpp">trunk/Source/WebCore/loader/FrameLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderPingLoadercpp">trunk/Source/WebCore/loader/PingLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderResourceLoadercpp">trunk/Source/WebCore/loader/ResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceLoadercpp">trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowcpp">trunk/Source/WebCore/page/DOMWindow.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFramecpp">trunk/Source/WebCore/page/Frame.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFrameh">trunk/Source/WebCore/page/Frame.h</a></li>
<li><a href="#trunkSourceWebCorepagePagecpp">trunk/Source/WebCore/page/Page.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePageh">trunk/Source/WebCore/page/Page.h</a></li>
<li><a href="#trunkSourceWebCorepagePageConfigurationh">trunk/Source/WebCore/page/PageConfiguration.h</a></li>
<li><a href="#trunkSourceWebCorepageUserContentControllercpp">trunk/Source/WebCore/page/UserContentController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageUserContentControllerh">trunk/Source/WebCore/page/UserContentController.h</a></li>
<li><a href="#trunkSourceWebCorepageUserMessageHandlerDescriptorh">trunk/Source/WebCore/page/UserMessageHandlerDescriptor.h</a></li>
<li><a href="#trunkSourceWebCorepageUserMessageHandlersNamespacecpp">trunk/Source/WebCore/page/UserMessageHandlersNamespace.cpp</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewmm">trunk/Source/WebKit/mac/WebView/WebView.mm</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2Scriptswebkitmessagespy">trunk/Source/WebKit2/Scripts/webkit/messages.py</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPIUserScriptcpp">trunk/Source/WebKit2/UIProcess/API/APIUserScript.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPIUserScripth">trunk/Source/WebKit2/UIProcess/API/APIUserScript.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPIUserStyleSheetcpp">trunk/Source/WebKit2/UIProcess/API/APIUserStyleSheet.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIAPIUserStyleSheeth">trunk/Source/WebKit2/UIProcess/API/APIUserStyleSheet.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoa_WKUserStyleSheeth">trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoa_WKUserStyleSheetmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessUserContentWebUserContentControllerProxycpp">trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlecpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessUserContentWebUserContentControllercpp">trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessUserContentWebUserContentControllerh">trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessUserContentWebUserContentControllermessagesin">trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageGroupProxycpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageGroupProxyh">trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorepageUserContentProvidercpp">trunk/Source/WebCore/page/UserContentProvider.cpp</a></li>
<li><a href="#trunkSourceWebCorepageUserContentProviderh">trunk/Source/WebCore/page/UserContentProvider.h</a></li>
<li><a href="#trunkSourceWebKit2SharedWebUserContentControllerDataTypescpp">trunk/Source/WebKit2/Shared/WebUserContentControllerDataTypes.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedWebUserContentControllerDataTypesh">trunk/Source/WebKit2/Shared/WebUserContentControllerDataTypes.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/ChangeLog        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-03-10 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r197943.
+ https://bugs.webkit.org/show_bug.cgi?id=155317
+
+ This change broke Windows, WinCairo, GTK and EFL builds
+ (Requested by ryanhaddad on #webkit).
+
+ Reverted changeset:
+
+ "Add a baseURL parameter to _WKUserStyleSheet"
+ https://bugs.webkit.org/show_bug.cgi?id=155219
+ http://trac.webkit.org/changeset/197943
+
</ins><span class="cx"> 2016-03-10 Daniel Bates <dabates@apple.com>
</span><span class="cx">
</span><span class="cx"> CSP: Implement support for script and style nonces
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -2740,8 +2740,6 @@
</span><span class="cx">                 7C3B79721908757B00B47A2D /* UserMessageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C3B79701908757B00B47A2D /* UserMessageHandler.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 7C3E510A18DF8F3500C112F7 /* HTMLConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C3E510818DF8F3500C112F7 /* HTMLConverter.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 7C3E510B18DF8F3500C112F7 /* HTMLConverter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7C3E510918DF8F3500C112F7 /* HTMLConverter.mm */; };
</span><del>-                7C3F01C11C8E5ABA00ADD962 /* UserContentProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C3F01C01C8E5AB100ADD962 /* UserContentProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                7C3F01C21C8E5AC200ADD962 /* UserContentProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F01BF1C8E5AB100ADD962 /* UserContentProvider.cpp */; };
</del><span class="cx">                 7C48A6D0191C9D6500026674 /* WebKitNamespace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C48A6CE191C9D6500026674 /* WebKitNamespace.cpp */; };
</span><span class="cx">                 7C48A6D1191C9D6500026674 /* WebKitNamespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C48A6CF191C9D6500026674 /* WebKitNamespace.h */; };
</span><span class="cx">                 7C4902A218B825F8007D9298 /* DOMWheelEventInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85989DCA0ACC8BBD00A0BC51 /* DOMWheelEventInternal.h */; };
</span><span class="lines">@@ -10384,8 +10382,6 @@
</span><span class="cx">                 7C3B79701908757B00B47A2D /* UserMessageHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserMessageHandler.h; sourceTree = "<group>"; };
</span><span class="cx">                 7C3E510818DF8F3500C112F7 /* HTMLConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLConverter.h; sourceTree = "<group>"; };
</span><span class="cx">                 7C3E510918DF8F3500C112F7 /* HTMLConverter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HTMLConverter.mm; sourceTree = "<group>"; };
</span><del>-                7C3F01BF1C8E5AB100ADD962 /* UserContentProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserContentProvider.cpp; sourceTree = "<group>"; };
-                7C3F01C01C8E5AB100ADD962 /* UserContentProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserContentProvider.h; sourceTree = "<group>"; };
</del><span class="cx">                 7C4189AB1B07C170000FA757 /* GlobalEventHandlers.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = GlobalEventHandlers.idl; sourceTree = "<group>"; };
</span><span class="cx">                 7C4189AC1B07CBF2000FA757 /* WindowEventHandlers.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = WindowEventHandlers.idl; sourceTree = "<group>"; };
</span><span class="cx">                 7C48A6CE191C9D6500026674 /* WebKitNamespace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitNamespace.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -18123,8 +18119,6 @@
</span><span class="cx">                                 2D4F96F21A1ECC240098BF88 /* TextIndicator.h */,
</span><span class="cx">                                 1AE79D40188DB61F002239C2 /* UserContentController.cpp */,
</span><span class="cx">                                 1AE79D41188DB61F002239C2 /* UserContentController.h */,
</span><del>-                                7C3F01BF1C8E5AB100ADD962 /* UserContentProvider.cpp */,
-                                7C3F01C01C8E5AB100ADD962 /* UserContentProvider.h */,
</del><span class="cx">                                 003F1FE911E6AB43008258D9 /* UserContentTypes.h */,
</span><span class="cx">                                 BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */,
</span><span class="cx">                                 BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */,
</span><span class="lines">@@ -28264,7 +28258,6 @@
</span><span class="cx">                                 088C2F7A12390081003D65CE /* SVGTextLayoutAttributes.h in Headers */,
</span><span class="cx">                                 081093DC1255F0E700ED9D29 /* SVGTextLayoutAttributesBuilder.h in Headers */,
</span><span class="cx">                                 081668DA125603D5006F25DE /* SVGTextLayoutEngine.h in Headers */,
</span><del>-                                7C3F01C11C8E5ABA00ADD962 /* UserContentProvider.h in Headers */,
</del><span class="cx">                                 080E49261255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.h in Headers */,
</span><span class="cx">                                 080E49281255F3BD00EFCA27 /* SVGTextLayoutEngineSpacing.h in Headers */,
</span><span class="cx">                                 08F0BFC61255C53C00075185 /* SVGTextMetrics.h in Headers */,
</span><span class="lines">@@ -30441,7 +30434,6 @@
</span><span class="cx">                                 511EF2D117F0FDF100E4FA16 /* JSIDBObjectStoreCustom.cpp in Sources */,
</span><span class="cx">                                 511EF2C817F0FD3500E4FA16 /* JSIDBOpenDBRequest.cpp in Sources */,
</span><span class="cx">                                 511EF2C917F0FD3500E4FA16 /* JSIDBRequest.cpp in Sources */,
</span><del>-                                7C3F01C21C8E5AC200ADD962 /* UserContentProvider.cpp in Sources */,
</del><span class="cx">                                 511EF2CA17F0FD3500E4FA16 /* JSIDBTransaction.cpp in Sources */,
</span><span class="cx">                                 511EF2CB17F0FD3500E4FA16 /* JSIDBVersionChangeEvent.cpp in Sources */,
</span><span class="cx">                                 BC6C49F30D7DBA0500FFA558 /* JSImageConstructor.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoredomExtensionStyleSheetscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ExtensionStyleSheets.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ExtensionStyleSheets.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/dom/ExtensionStyleSheets.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -117,24 +117,6 @@
</span><span class="cx"> if (!owningPage)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- owningPage->userContentProvider().forEachUserStyleSheet([&](const UserStyleSheet& userStyleSheet) {
- if (userStyleSheet.injectedFrames() == InjectInTopFrameOnly && m_document.ownerElement())
- return;
-
- if (!UserContentURLPattern::matchesPatterns(m_document.url(), userStyleSheet.whitelist(), userStyleSheet.blacklist()))
- return;
-
- RefPtr<CSSStyleSheet> sheet = CSSStyleSheet::createInline(const_cast<Document&>(m_document), userStyleSheet.url());
- bool isUserStyleSheet = userStyleSheet.level() == UserStyleUserLevel;
- if (isUserStyleSheet)
- m_injectedUserStyleSheets.append(sheet);
- else
- m_injectedAuthorStyleSheets.append(sheet);
-
- sheet->contents().setIsUserStyleSheet(isUserStyleSheet);
- sheet->contents().parseString(userStyleSheet.source());
- });
-
</del><span class="cx"> if (!owningPage->captionUserPreferencesStyleSheet().isEmpty()) {
</span><span class="cx"> // Identify our override style sheet with a unique URL - a new scheme and a UUID.
</span><span class="cx"> static NeverDestroyed<URL> captionsStyleSheetURL(ParsedURLString, "user-captions-override:01F6AF12-C3B0-4F70-AF5E-A3E00234DC23");
</span><span class="lines">@@ -145,6 +127,34 @@
</span><span class="cx"> sheet->contents().setIsUserStyleSheet(false);
</span><span class="cx"> sheet->contents().parseString(owningPage->captionUserPreferencesStyleSheet());
</span><span class="cx"> }
</span><ins>+
+ const auto* userContentController = owningPage->userContentController();
+ if (!userContentController)
+ return;
+
+ const UserStyleSheetMap* userStyleSheets = userContentController->userStyleSheets();
+ if (!userStyleSheets)
+ return;
+
+ for (auto& styleSheets : userStyleSheets->values()) {
+ for (const auto& sheet : *styleSheets) {
+ if (sheet->injectedFrames() == InjectInTopFrameOnly && m_document.ownerElement())
+ continue;
+
+ if (!UserContentURLPattern::matchesPatterns(m_document.url(), sheet->whitelist(), sheet->blacklist()))
+ continue;
+
+ RefPtr<CSSStyleSheet> groupSheet = CSSStyleSheet::createInline(const_cast<Document&>(m_document), sheet->url());
+ bool isUserStyleSheet = sheet->level() == UserStyleUserLevel;
+ if (isUserStyleSheet)
+ m_injectedUserStyleSheets.append(groupSheet);
+ else
+ m_injectedAuthorStyleSheets.append(groupSheet);
+
+ groupSheet->contents().setIsUserStyleSheet(isUserStyleSheet);
+ groupSheet->contents().parseString(sheet->source());
+ }
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void ExtensionStyleSheets::invalidateInjectedStyleSheetCache()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1256,7 +1256,7 @@
</span><span class="cx"> ResourceRequest request(url);
</span><span class="cx"> DocumentLoader* documentLoader = frame->loader().documentLoader();
</span><span class="cx">
</span><del>- if (documentLoader && page->userContentProvider().processContentExtensionRulesForLoad(request, ResourceType::Media, *documentLoader) == ContentExtensions::BlockedStatus::Blocked) {
</del><ins>+ if (page->userContentController() && documentLoader && page->userContentController()->processContentExtensionRulesForLoad(request, ResourceType::Media, *documentLoader) == ContentExtensions::BlockedStatus::Blocked) {
</ins><span class="cx"> request = { };
</span><span class="cx"> mediaLoadingFailed(MediaPlayer::FormatError);
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderEmptyClientscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/EmptyClients.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/EmptyClients.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/loader/EmptyClients.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> #include "StorageArea.h"
</span><span class="cx"> #include "StorageNamespace.h"
</span><span class="cx"> #include "StorageNamespaceProvider.h"
</span><del>-#include "UserContentProvider.h"
</del><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx">
</span><span class="cx"> #if USE(APPLE_INTERNAL_SDK)
</span><span class="lines">@@ -96,18 +95,7 @@
</span><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><del>-class EmptyUserContentProvider final : public UserContentProvider {
- void forEachUserScript(const std::function<void(DOMWrapperWorld&, const UserScript&)>&) const override { }
- void forEachUserStyleSheet(const std::function<void(const UserStyleSheet&)>&) const override { }
-#if ENABLE(USER_MESSAGE_HANDLERS)
- const UserMessageHandlerDescriptorMap& userMessageHandlerDescriptors() const override { static NeverDestroyed<UserMessageHandlerDescriptorMap> map; return map.get(); }
-#endif
-#if ENABLE(CONTENT_EXTENSIONS)
- ContentExtensions::ContentExtensionsBackend& userContentExtensionBackend() override { static NeverDestroyed<ContentExtensions::ContentExtensionsBackend> backend; return backend.get(); };
-#endif
-};
-
-class EmptyVisitedLinkStore final : public VisitedLinkStore {
</del><ins>+class EmptyVisitedLinkStore : public VisitedLinkStore {
</ins><span class="cx"> bool isLinkVisited(Page&, LinkHash, const URL&, const AtomicString&) override { return false; }
</span><span class="cx"> void addVisitedLink(Page&, LinkHash) override { }
</span><span class="cx"> };
</span><span class="lines">@@ -144,7 +132,6 @@
</span><span class="cx">
</span><span class="cx"> pageConfiguration.databaseProvider = adoptRef(new EmptyDatabaseProvider);
</span><span class="cx"> pageConfiguration.storageNamespaceProvider = adoptRef(new EmptyStorageNamespaceProvider);
</span><del>- pageConfiguration.userContentProvider = adoptRef(new EmptyUserContentProvider);
</del><span class="cx"> pageConfiguration.visitedLinkStore = adoptRef(new EmptyVisitedLinkStore);
</span><span class="cx">
</span><span class="cx"> #if USE(APPLE_INTERNAL_SDK)
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderEmptyClientsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/EmptyClients.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/EmptyClients.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/loader/EmptyClients.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include "DiagnosticLoggingClient.h"
</span><span class="cx"> #include "DragClient.h"
</span><span class="cx"> #include "EditorClient.h"
</span><ins>+#include "TextCheckerClient.h"
</ins><span class="cx"> #include "FloatRect.h"
</span><span class="cx"> #include "FocusDirection.h"
</span><span class="cx"> #include "FrameLoaderClient.h"
</span><span class="lines">@@ -43,18 +44,9 @@
</span><span class="cx"> #include "Page.h"
</span><span class="cx"> #include "ProgressTrackerClient.h"
</span><span class="cx"> #include "ResourceError.h"
</span><del>-#include "TextCheckerClient.h"
</del><span class="cx"> #include "VisitedLinkStore.h"
</span><span class="cx"> #include <wtf/text/StringView.h>
</span><span class="cx">
</span><del>-#if ENABLE(USER_MESSAGE_HANDLERS)
-#include "UserMessageHandlerDescriptor.h"
-#endif
-
-#if ENABLE(CONTENT_EXTENSIONS)
-#include "CompiledContentExtension.h"
-#endif
-
</del><span class="cx"> /*
</span><span class="cx"> This file holds empty Client stubs for use by WebCore.
</span><span class="cx"> Viewless element needs to create a dummy Page->Frame->FrameView tree for use in parsing or executing JavaScript.
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoader.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -2730,11 +2730,13 @@
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><span class="cx"> if (error.isNull()) {
</span><span class="cx"> if (auto* page = m_frame.page()) {
</span><del>- if (m_documentLoader && page->userContentProvider().processContentExtensionRulesForLoad(newRequest, ResourceType::Raw, *m_documentLoader) == ContentExtensions::BlockedStatus::Blocked) {
- newRequest = { };
- error = ResourceError(errorDomainWebKitInternal, 0, initialRequest.url(), emptyString());
- response = { };
- data = nullptr;
</del><ins>+ if (auto* controller = page->userContentController()) {
+ if (m_documentLoader && controller->processContentExtensionRulesForLoad(newRequest, ResourceType::Raw, *m_documentLoader) == ContentExtensions::BlockedStatus::Blocked) {
+ newRequest = { };
+ error = ResourceError(errorDomainWebKitInternal, 0, initialRequest.url(), emptyString());
+ response = { };
+ data = nullptr;
+ }
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderPingLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/PingLoader.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/PingLoader.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/loader/PingLoader.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -59,8 +59,10 @@
</span><span class="cx"> static ContentExtensions::BlockedStatus processContentExtensionRulesForLoad(const Frame& frame, ResourceRequest& request, ResourceType resourceType)
</span><span class="cx"> {
</span><span class="cx"> if (DocumentLoader* documentLoader = frame.loader().documentLoader()) {
</span><del>- if (Page* page = frame.page())
- return page->userContentProvider().processContentExtensionRulesForLoad(request, resourceType, *documentLoader);
</del><ins>+ if (Page* page = frame.page()) {
+ if (UserContentController* controller = page->userContentController())
+ return controller->processContentExtensionRulesForLoad(request, resourceType, *documentLoader);
+ }
</ins><span class="cx"> }
</span><span class="cx"> return ContentExtensions::BlockedStatus::NotBlocked;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ResourceLoader.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -346,7 +346,8 @@
</span><span class="cx"> if (frameLoader()) {
</span><span class="cx"> Page* page = frameLoader()->frame().page();
</span><span class="cx"> if (page && m_documentLoader) {
</span><del>- if (page->userContentProvider().processContentExtensionRulesForLoad(request, m_resourceType, *m_documentLoader) == ContentExtensions::BlockedStatus::Blocked)
</del><ins>+ auto* userContentController = page->userContentController();
+ if (userContentController && userContentController->processContentExtensionRulesForLoad(request, m_resourceType, *m_documentLoader) == ContentExtensions::BlockedStatus::Blocked)
</ins><span class="cx"> request = { };
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -542,8 +542,8 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><del>- if (frame() && frame()->mainFrame().page() && m_documentLoader) {
- if (frame()->mainFrame().page()->userContentProvider().processContentExtensionRulesForLoad(request.mutableResourceRequest(), toResourceType(type), *m_documentLoader) == ContentExtensions::BlockedStatus::Blocked) {
</del><ins>+ if (frame() && frame()->mainFrame().page() && frame()->mainFrame().page()->userContentController() && m_documentLoader) {
+ if (frame()->mainFrame().page()->userContentController()->processContentExtensionRulesForLoad(request.mutableResourceRequest(), toResourceType(type), *m_documentLoader) == ContentExtensions::BlockedStatus::Blocked) {
</ins><span class="cx"> if (type == CachedResource::Type::MainResource) {
</span><span class="cx"> auto resource = createResource(type, request.mutableResourceRequest(), request.charset(), sessionID());
</span><span class="cx"> ASSERT(resource);
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/DOMWindow.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -761,7 +761,15 @@
</span><span class="cx"> if (!page)
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- for (auto& descriptor : page->userContentProvider().userMessageHandlerDescriptors().values()) {
</del><ins>+ auto* userContentController = page->userContentController();
+ if (!userContentController)
+ return false;
+
+ auto* descriptorMap = userContentController->userMessageHandlerDescriptors();
+ if (!descriptorMap)
+ return false;
+
+ for (auto& descriptor : descriptorMap->values()) {
</ins><span class="cx"> if (&descriptor->world() == &world)
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="lines">@@ -2160,10 +2168,11 @@
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><span class="cx"> if (firstFrame->document()
</span><span class="cx"> && firstFrame->mainFrame().page()
</span><ins>+ && firstFrame->mainFrame().page()->userContentController()
</ins><span class="cx"> && firstFrame->mainFrame().document()
</span><span class="cx"> && firstFrame->mainFrame().document()->loader()) {
</span><del>- ResourceLoadInfo resourceLoadInfo = { firstFrame->document()->completeURL(urlString), firstFrame->mainFrame().document()->url(), ResourceType::Popup };
- Vector<ContentExtensions::Action> actions = firstFrame->mainFrame().page()->userContentProvider().actionsForResourceLoad(resourceLoadInfo, *firstFrame->mainFrame().document()->loader());
</del><ins>+ ResourceLoadInfo resourceLoadInfo = {firstFrame->document()->completeURL(urlString), firstFrame->mainFrame().document()->url(), ResourceType::Popup};
+ Vector<ContentExtensions::Action> actions = firstFrame->mainFrame().page()->userContentController()->actionsForResourceLoad(resourceLoadInfo, *firstFrame->mainFrame().document()->loader());
</ins><span class="cx"> for (const ContentExtensions::Action& action : actions) {
</span><span class="cx"> if (action.type() == ContentExtensions::ActionType::BlockLoad)
</span><span class="cx"> return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorepageFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Frame.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Frame.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/Frame.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -689,19 +689,37 @@
</span><span class="cx"> if (loader().stateMachine().creatingInitialEmptyDocument() && !settings().shouldInjectUserScriptsInInitialEmptyDocument())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- Document* document = this->document();
- if (!document)
</del><ins>+ const auto* userContentController = m_page->userContentController();
+ if (!userContentController)
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- m_page->userContentProvider().forEachUserScript([&](DOMWrapperWorld& world, const UserScript& script) {
- if (script.injectedFrames() == InjectInTopFrameOnly && ownerElement())
- return;
</del><ins>+ // Walk the hashtable. Inject by world.
+ const UserScriptMap* userScripts = userContentController->userScripts();
+ if (!userScripts)
+ return;
</ins><span class="cx">
</span><del>- if (script.injectionTime() == injectionTime && UserContentURLPattern::matchesPatterns(document->url(), script.whitelist(), script.blacklist()))
- m_script->evaluateInWorld(ScriptSourceCode(script.source(), script.url()), world);
- });
</del><ins>+ for (const auto& worldAndUserScript : *userScripts)
+ injectUserScriptsForWorld(*worldAndUserScript.key, *worldAndUserScript.value, injectionTime);
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+void Frame::injectUserScriptsForWorld(DOMWrapperWorld& world, const UserScriptVector& userScripts, UserScriptInjectionTime injectionTime)
+{
+ if (userScripts.isEmpty())
+ return;
+
+ Document* doc = document();
+ if (!doc)
+ return;
+
+ for (auto& script : userScripts) {
+ if (script->injectedFrames() == InjectInTopFrameOnly && ownerElement())
+ continue;
+
+ if (script->injectionTime() == injectionTime && UserContentURLPattern::matchesPatterns(doc->url(), script->whitelist(), script->blacklist()))
+ m_script->evaluateInWorld(ScriptSourceCode(script->source(), script->url()), world);
+ }
+}
+
</ins><span class="cx"> RenderView* Frame::contentRenderer() const
</span><span class="cx"> {
</span><span class="cx"> return document() ? document()->renderView() : nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Frame.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Frame.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/Frame.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -280,6 +280,8 @@
</span><span class="cx"> Frame(Page&, HTMLFrameOwnerElement*, FrameLoaderClient&);
</span><span class="cx">
</span><span class="cx"> private:
</span><ins>+ void injectUserScriptsForWorld(DOMWrapperWorld&, const UserScriptVector&, UserScriptInjectionTime);
+
</ins><span class="cx"> HashSet<FrameDestructionObserver*> m_destructionObservers;
</span><span class="cx">
</span><span class="cx"> MainFrame& m_mainFrame;
</span></span></pre></div>
<a id="trunkSourceWebCorepagePagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/Page.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -87,7 +87,7 @@
</span><span class="cx"> #include "StyleResolver.h"
</span><span class="cx"> #include "SubframeLoader.h"
</span><span class="cx"> #include "TextResourceDecoder.h"
</span><del>-#include "UserContentProvider.h"
</del><ins>+#include "UserContentController.h"
</ins><span class="cx"> #include "UserInputBridge.h"
</span><span class="cx"> #include "ViewStateChangeObserver.h"
</span><span class="cx"> #include "VisitedLinkState.h"
</span><span class="lines">@@ -231,7 +231,7 @@
</span><span class="cx"> , m_applicationCacheStorage(pageConfiguration.applicationCacheStorage ? *WTFMove(pageConfiguration.applicationCacheStorage) : ApplicationCacheStorage::singleton())
</span><span class="cx"> , m_databaseProvider(*WTFMove(pageConfiguration.databaseProvider))
</span><span class="cx"> , m_storageNamespaceProvider(*WTFMove(pageConfiguration.storageNamespaceProvider))
</span><del>- , m_userContentProvider(*WTFMove(pageConfiguration.userContentProvider))
</del><ins>+ , m_userContentController(WTFMove(pageConfiguration.userContentController))
</ins><span class="cx"> , m_visitedLinkStore(*WTFMove(pageConfiguration.visitedLinkStore))
</span><span class="cx"> , m_sessionID(SessionID::defaultSessionID())
</span><span class="cx"> , m_isClosing(false)
</span><span class="lines">@@ -240,7 +240,9 @@
</span><span class="cx">
</span><span class="cx"> m_storageNamespaceProvider->addPage(*this);
</span><span class="cx">
</span><del>- m_userContentProvider->addPage(*this);
</del><ins>+ if (m_userContentController)
+ m_userContentController->addPage(*this);
+
</ins><span class="cx"> m_visitedLinkStore->addPage(*this);
</span><span class="cx">
</span><span class="cx"> if (!allPages) {
</span><span class="lines">@@ -296,7 +298,9 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> m_storageNamespaceProvider->removePage(*this);
</span><del>- m_userContentProvider->removePage(*this);
</del><ins>+
+ if (m_userContentController)
+ m_userContentController->removePage(*this);
</ins><span class="cx"> m_visitedLinkStore->removePage(*this);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1815,17 +1819,16 @@
</span><span class="cx"> return !m_forbidPromptsDepth;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-UserContentProvider& Page::userContentProvider()
</del><ins>+void Page::setUserContentController(UserContentController* userContentController)
</ins><span class="cx"> {
</span><del>- return m_userContentProvider;
-}
</del><ins>+ if (m_userContentController)
+ m_userContentController->removePage(*this);
</ins><span class="cx">
</span><del>-void Page::setUserContentProvider(Ref<UserContentProvider>&& userContentProvider)
-{
- m_userContentProvider->removePage(*this);
- m_userContentProvider = WTFMove(userContentProvider);
- m_userContentProvider->addPage(*this);
</del><ins>+ m_userContentController = userContentController;
</ins><span class="cx">
</span><ins>+ if (m_userContentController)
+ m_userContentController->addPage(*this);
+
</ins><span class="cx"> invalidateInjectedStyleSheetCacheInAllFrames();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/Page.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> class Settings;
</span><span class="cx"> class StorageNamespace;
</span><span class="cx"> class StorageNamespaceProvider;
</span><del>-class UserContentProvider;
</del><ins>+class UserContentController;
</ins><span class="cx"> class ValidationMessageClient;
</span><span class="cx"> class ViewStateChangeObserver;
</span><span class="cx"> class VisitedLinkStore;
</span><span class="lines">@@ -450,8 +450,8 @@
</span><span class="cx"> StorageNamespaceProvider& storageNamespaceProvider() { return m_storageNamespaceProvider.get(); }
</span><span class="cx"> void setStorageNamespaceProvider(Ref<StorageNamespaceProvider>&&);
</span><span class="cx">
</span><del>- UserContentProvider& userContentProvider();
- WEBCORE_EXPORT void setUserContentProvider(Ref<UserContentProvider>&&);
</del><ins>+ UserContentController* userContentController() { return m_userContentController.get(); }
+ WEBCORE_EXPORT void setUserContentController(UserContentController*);
</ins><span class="cx">
</span><span class="cx"> VisitedLinkStore& visitedLinkStore();
</span><span class="cx"> WEBCORE_EXPORT void setVisitedLinkStore(Ref<VisitedLinkStore>&&);
</span><span class="lines">@@ -676,7 +676,7 @@
</span><span class="cx"> Ref<ApplicationCacheStorage> m_applicationCacheStorage;
</span><span class="cx"> Ref<DatabaseProvider> m_databaseProvider;
</span><span class="cx"> Ref<StorageNamespaceProvider> m_storageNamespaceProvider;
</span><del>- Ref<UserContentProvider> m_userContentProvider;
</del><ins>+ RefPtr<UserContentController> m_userContentController;
</ins><span class="cx"> Ref<VisitedLinkStore> m_visitedLinkStore;
</span><span class="cx"> RefPtr<WheelEventTestTrigger> m_testTrigger;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageConfigurationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageConfiguration.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageConfiguration.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/PageConfiguration.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> class PlugInClient;
</span><span class="cx"> class ProgressTrackerClient;
</span><span class="cx"> class StorageNamespaceProvider;
</span><del>-class UserContentProvider;
</del><ins>+class UserContentController;
</ins><span class="cx"> class ValidationMessageClient;
</span><span class="cx"> class VisitedLinkStore;
</span><span class="cx">
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> RefPtr<ApplicationCacheStorage> applicationCacheStorage;
</span><span class="cx"> RefPtr<DatabaseProvider> databaseProvider;
</span><span class="cx"> RefPtr<StorageNamespaceProvider> storageNamespaceProvider;
</span><del>- RefPtr<UserContentProvider> userContentProvider;
</del><ins>+ RefPtr<UserContentController> userContentController;
</ins><span class="cx"> RefPtr<VisitedLinkStore> visitedLinkStore;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorepageUserContentControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/UserContentController.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/UserContentController.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/UserContentController.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -27,15 +27,24 @@
</span><span class="cx"> #include "UserContentController.h"
</span><span class="cx">
</span><span class="cx"> #include "DOMWrapperWorld.h"
</span><ins>+#include "Document.h"
+#include "DocumentLoader.h"
+#include "ExtensionStyleSheets.h"
+#include "MainFrame.h"
+#include "Page.h"
+#include "ResourceLoadInfo.h"
</ins><span class="cx"> #include "UserScript.h"
</span><span class="cx"> #include "UserStyleSheet.h"
</span><ins>+#include <runtime/JSCellInlines.h>
+#include <runtime/StructureInlines.h>
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(USER_MESSAGE_HANDLERS)
</span><span class="cx"> #include "UserMessageHandlerDescriptor.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><del>-#include "CompiledContentExtension.h"
</del><ins>+#include "ContentExtensionCompiler.h"
+#include "ContentExtensionsBackend.h"
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -53,35 +62,38 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void UserContentController::forEachUserScript(const std::function<void(DOMWrapperWorld&, const UserScript&)>& functor) const
</del><ins>+void UserContentController::addPage(Page& page)
</ins><span class="cx"> {
</span><del>- for (const auto& worldAndUserScriptVector : m_userScripts) {
- auto& world = *worldAndUserScriptVector.key.get();
- for (const auto& userScript : *worldAndUserScriptVector.value)
- functor(world, *userScript);
- }
</del><ins>+ ASSERT(!m_pages.contains(&page));
+ m_pages.add(&page);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void UserContentController::forEachUserStyleSheet(const std::function<void(const UserStyleSheet&)>& functor) const
</del><ins>+void UserContentController::removePage(Page& page)
</ins><span class="cx"> {
</span><del>- for (auto& styleSheetVector : m_userStyleSheets.values()) {
- for (const auto& styleSheet : *styleSheetVector)
- functor(*styleSheet);
- }
</del><ins>+ ASSERT(m_pages.contains(&page));
+ m_pages.remove(&page);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void UserContentController::addUserScript(DOMWrapperWorld& world, std::unique_ptr<UserScript> userScript)
</span><span class="cx"> {
</span><del>- auto& scriptsInWorld = m_userScripts.ensure(&world, [&] { return std::make_unique<UserScriptVector>(); }).iterator->value;
</del><ins>+ if (!m_userScripts)
+ m_userScripts = std::make_unique<UserScriptMap>();
+
+ auto& scriptsInWorld = m_userScripts->add(&world, nullptr).iterator->value;
+ if (!scriptsInWorld)
+ scriptsInWorld = std::make_unique<UserScriptVector>();
</ins><span class="cx"> scriptsInWorld->append(WTFMove(userScript));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void UserContentController::removeUserScript(DOMWrapperWorld& world, const URL& url)
</span><span class="cx"> {
</span><del>- auto it = m_userScripts.find(&world);
- if (it == m_userScripts.end())
</del><ins>+ if (!m_userScripts)
</ins><span class="cx"> return;
</span><span class="cx">
</span><ins>+ auto it = m_userScripts->find(&world);
+ if (it == m_userScripts->end())
+ return;
+
</ins><span class="cx"> auto scripts = it->value.get();
</span><span class="cx"> for (int i = scripts->size() - 1; i >= 0; --i) {
</span><span class="cx"> if (scripts->at(i)->url() == url)
</span><span class="lines">@@ -89,17 +101,25 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (scripts->isEmpty())
</span><del>- m_userScripts.remove(it);
</del><ins>+ m_userScripts->remove(it);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void UserContentController::removeUserScripts(DOMWrapperWorld& world)
</span><span class="cx"> {
</span><del>- m_userScripts.remove(&world);
</del><ins>+ if (!m_userScripts)
+ return;
+
+ m_userScripts->remove(&world);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void UserContentController::addUserStyleSheet(DOMWrapperWorld& world, std::unique_ptr<UserStyleSheet> userStyleSheet, UserStyleInjectionTime injectionTime)
</span><span class="cx"> {
</span><del>- auto& styleSheetsInWorld = m_userStyleSheets.ensure(&world, [&] { return std::make_unique<UserStyleSheetVector>(); }).iterator->value;
</del><ins>+ if (!m_userStyleSheets)
+ m_userStyleSheets = std::make_unique<UserStyleSheetMap>();
+
+ auto& styleSheetsInWorld = m_userStyleSheets->add(&world, nullptr).iterator->value;
+ if (!styleSheetsInWorld)
+ styleSheetsInWorld = std::make_unique<UserStyleSheetVector>();
</ins><span class="cx"> styleSheetsInWorld->append(WTFMove(userStyleSheet));
</span><span class="cx">
</span><span class="cx"> if (injectionTime == InjectInExistingDocuments)
</span><span class="lines">@@ -108,10 +128,13 @@
</span><span class="cx">
</span><span class="cx"> void UserContentController::removeUserStyleSheet(DOMWrapperWorld& world, const URL& url)
</span><span class="cx"> {
</span><del>- auto it = m_userStyleSheets.find(&world);
- if (it == m_userStyleSheets.end())
</del><ins>+ if (!m_userStyleSheets)
</ins><span class="cx"> return;
</span><span class="cx">
</span><ins>+ auto it = m_userStyleSheets->find(&world);
+ if (it == m_userStyleSheets->end())
+ return;
+
</ins><span class="cx"> auto& stylesheets = *it->value;
</span><span class="cx">
</span><span class="cx"> bool sheetsChanged = false;
</span><span class="lines">@@ -126,56 +149,114 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> if (stylesheets.isEmpty())
</span><del>- m_userStyleSheets.remove(it);
</del><ins>+ m_userStyleSheets->remove(it);
</ins><span class="cx">
</span><span class="cx"> invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void UserContentController::removeUserStyleSheets(DOMWrapperWorld& world)
</span><span class="cx"> {
</span><del>- if (!m_userStyleSheets.remove(&world))
</del><ins>+ if (!m_userStyleSheets)
</ins><span class="cx"> return;
</span><span class="cx">
</span><ins>+ if (!m_userStyleSheets->remove(&world))
+ return;
+
</ins><span class="cx"> invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if ENABLE(USER_MESSAGE_HANDLERS)
</span><span class="cx"> void UserContentController::addUserMessageHandlerDescriptor(UserMessageHandlerDescriptor& descriptor)
</span><span class="cx"> {
</span><del>- m_userMessageHandlerDescriptors.add(std::make_pair(descriptor.name(), &descriptor.world()), &descriptor);
</del><ins>+ if (!m_userMessageHandlerDescriptors)
+ m_userMessageHandlerDescriptors = std::make_unique<UserMessageHandlerDescriptorMap>();
+
+ m_userMessageHandlerDescriptors->add(std::make_pair(descriptor.name(), &descriptor.world()), &descriptor);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void UserContentController::removeUserMessageHandlerDescriptor(UserMessageHandlerDescriptor& descriptor)
</span><span class="cx"> {
</span><del>- m_userMessageHandlerDescriptors.remove(std::make_pair(descriptor.name(), &descriptor.world()));
</del><ins>+ if (!m_userMessageHandlerDescriptors)
+ return;
+
+ m_userMessageHandlerDescriptors->remove(std::make_pair(descriptor.name(), &descriptor.world()));
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><span class="cx"> void UserContentController::addUserContentExtension(const String& name, RefPtr<ContentExtensions::CompiledContentExtension> contentExtension)
</span><span class="cx"> {
</span><del>- m_contentExtensionBackend.addContentExtension(name, contentExtension);
</del><ins>+ if (!m_contentExtensionBackend)
+ m_contentExtensionBackend = std::make_unique<ContentExtensions::ContentExtensionsBackend>();
+
+ m_contentExtensionBackend->addContentExtension(name, contentExtension);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void UserContentController::removeUserContentExtension(const String& name)
</span><span class="cx"> {
</span><del>- m_contentExtensionBackend.removeContentExtension(name);
</del><ins>+ if (!m_contentExtensionBackend)
+ return;
+
+ m_contentExtensionBackend->removeContentExtension(name);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void UserContentController::removeAllUserContentExtensions()
</span><span class="cx"> {
</span><del>- m_contentExtensionBackend.removeAllContentExtensions();
</del><ins>+ if (!m_contentExtensionBackend)
+ return;
+
+ m_contentExtensionBackend->removeAllContentExtensions();
</ins><span class="cx"> }
</span><ins>+
+static bool contentExtensionsEnabled(const DocumentLoader& documentLoader)
+{
+ if (auto frame = documentLoader.frame()) {
+ if (frame->isMainFrame())
+ return documentLoader.userContentExtensionsEnabled();
+ if (auto mainDocumentLoader = frame->mainFrame().loader().documentLoader())
+ return mainDocumentLoader->userContentExtensionsEnabled();
+ }
+
+ return true;
+}
+
+ContentExtensions::BlockedStatus UserContentController::processContentExtensionRulesForLoad(ResourceRequest& request, ResourceType resourceType, DocumentLoader& initiatingDocumentLoader)
+{
+ if (!m_contentExtensionBackend)
+ return ContentExtensions::BlockedStatus::NotBlocked;
+
+ if (!contentExtensionsEnabled(initiatingDocumentLoader))
+ return ContentExtensions::BlockedStatus::NotBlocked;
+
+ return m_contentExtensionBackend->processContentExtensionRulesForLoad(request, resourceType, initiatingDocumentLoader);
+}
+
+Vector<ContentExtensions::Action> UserContentController::actionsForResourceLoad(const ResourceLoadInfo& resourceLoadInfo, DocumentLoader& initiatingDocumentLoader)
+{
+ if (!m_contentExtensionBackend)
+ return Vector<ContentExtensions::Action>();
+
+ if (!contentExtensionsEnabled(initiatingDocumentLoader))
+ return Vector<ContentExtensions::Action>();
+
+ return m_contentExtensionBackend->actionsForResourceLoad(resourceLoadInfo);
+}
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> void UserContentController::removeAllUserContent()
</span><span class="cx"> {
</span><del>- m_userScripts.clear();
</del><ins>+ m_userScripts = nullptr;
</ins><span class="cx">
</span><del>- if (!m_userStyleSheets.isEmpty()) {
- m_userStyleSheets.clear();
</del><ins>+ if (m_userStyleSheets) {
+ m_userStyleSheets = nullptr;
</ins><span class="cx"> invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void UserContentController::invalidateInjectedStyleSheetCacheInAllFramesInAllPages()
+{
+ for (auto& page : m_pages)
+ page->invalidateInjectedStyleSheetCacheInAllFrames();
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorepageUserContentControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/UserContentController.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/UserContentController.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/UserContentController.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -26,19 +26,58 @@
</span><span class="cx"> #ifndef UserContentController_h
</span><span class="cx"> #define UserContentController_h
</span><span class="cx">
</span><del>-#include "UserContentProvider.h"
</del><ins>+#include "UserScriptTypes.h"
+#include "UserStyleSheetTypes.h"
+#include <wtf/HashSet.h>
+#include <wtf/RefCounted.h>
+#include <wtf/RefPtr.h>
</ins><span class="cx">
</span><ins>+#if ENABLE(USER_MESSAGE_HANDLERS)
+#include "UserMessageHandlerDescriptorTypes.h"
+#endif
+
+#if ENABLE(CONTENT_EXTENSIONS)
+#include "ContentExtensionActions.h"
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class UserContentController final : public UserContentProvider {
</del><ins>+class DOMWrapperWorld;
+class DocumentLoader;
+class Page;
+class ResourceRequest;
+class StyleSheetContents;
+class URL;
+class UserScript;
+class UserStyleSheet;
+class UserMessageHandlerDescriptor;
+
+enum class ResourceType : uint16_t;
+
+struct ResourceLoadInfo;
+
+namespace ContentExtensions {
+class CompiledContentExtension;
+class ContentExtensionsBackend;
+struct Action;
+}
+
+class UserContentController : public RefCounted<UserContentController> {
</ins><span class="cx"> public:
</span><span class="cx"> WEBCORE_EXPORT static Ref<UserContentController> create();
</span><span class="cx"> WEBCORE_EXPORT ~UserContentController();
</span><span class="cx">
</span><ins>+ void addPage(Page&);
+ void removePage(Page&);
+
+ const UserScriptMap* userScripts() const { return m_userScripts.get(); }
+
</ins><span class="cx"> WEBCORE_EXPORT void addUserScript(DOMWrapperWorld&, std::unique_ptr<UserScript>);
</span><span class="cx"> WEBCORE_EXPORT void removeUserScript(DOMWrapperWorld&, const URL&);
</span><span class="cx"> WEBCORE_EXPORT void removeUserScripts(DOMWrapperWorld&);
</span><span class="cx">
</span><ins>+ const UserStyleSheetMap* userStyleSheets() const { return m_userStyleSheets.get(); }
+
</ins><span class="cx"> WEBCORE_EXPORT void addUserStyleSheet(DOMWrapperWorld&, std::unique_ptr<UserStyleSheet>, UserStyleInjectionTime);
</span><span class="cx"> WEBCORE_EXPORT void removeUserStyleSheet(DOMWrapperWorld&, const URL&);
</span><span class="cx"> WEBCORE_EXPORT void removeUserStyleSheets(DOMWrapperWorld&);
</span><span class="lines">@@ -46,6 +85,8 @@
</span><span class="cx"> WEBCORE_EXPORT void removeAllUserContent();
</span><span class="cx">
</span><span class="cx"> #if ENABLE(USER_MESSAGE_HANDLERS)
</span><ins>+ const UserMessageHandlerDescriptorMap* userMessageHandlerDescriptors() const { return m_userMessageHandlerDescriptors.get(); }
+
</ins><span class="cx"> WEBCORE_EXPORT void addUserMessageHandlerDescriptor(UserMessageHandlerDescriptor&);
</span><span class="cx"> WEBCORE_EXPORT void removeUserMessageHandlerDescriptor(UserMessageHandlerDescriptor&);
</span><span class="cx"> #endif
</span><span class="lines">@@ -54,28 +95,25 @@
</span><span class="cx"> WEBCORE_EXPORT void addUserContentExtension(const String& name, RefPtr<ContentExtensions::CompiledContentExtension>);
</span><span class="cx"> WEBCORE_EXPORT void removeUserContentExtension(const String& name);
</span><span class="cx"> WEBCORE_EXPORT void removeAllUserContentExtensions();
</span><ins>+
+ ContentExtensions::BlockedStatus processContentExtensionRulesForLoad(ResourceRequest&, ResourceType, DocumentLoader& initiatingDocumentLoader);
+ Vector<ContentExtensions::Action> actionsForResourceLoad(const ResourceLoadInfo&, DocumentLoader& initiatingDocumentLoader);
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> UserContentController();
</span><span class="cx">
</span><del>- // UserContentProvider
- void forEachUserScript(const std::function<void(DOMWrapperWorld&, const UserScript&)>&) const override;
- void forEachUserStyleSheet(const std::function<void(const UserStyleSheet&)>&) const override;
-#if ENABLE(USER_MESSAGE_HANDLERS)
- const UserMessageHandlerDescriptorMap& userMessageHandlerDescriptors() const override { return m_userMessageHandlerDescriptors; }
-#endif
-#if ENABLE(CONTENT_EXTENSIONS)
- ContentExtensions::ContentExtensionsBackend& userContentExtensionBackend() override { return m_contentExtensionBackend; }
-#endif
</del><ins>+ void invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
</ins><span class="cx">
</span><del>- UserScriptMap m_userScripts;
- UserStyleSheetMap m_userStyleSheets;
</del><ins>+ HashSet<Page*> m_pages;
+
+ std::unique_ptr<UserScriptMap> m_userScripts;
+ std::unique_ptr<UserStyleSheetMap> m_userStyleSheets;
</ins><span class="cx"> #if ENABLE(USER_MESSAGE_HANDLERS)
</span><del>- UserMessageHandlerDescriptorMap m_userMessageHandlerDescriptors;
</del><ins>+ std::unique_ptr<UserMessageHandlerDescriptorMap> m_userMessageHandlerDescriptors;
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><del>- ContentExtensions::ContentExtensionsBackend m_contentExtensionBackend;
</del><ins>+ std::unique_ptr<ContentExtensions::ContentExtensionsBackend> m_contentExtensionBackend;
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorepageUserContentProvidercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/page/UserContentProvider.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/UserContentProvider.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/UserContentProvider.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1,100 +0,0 @@
</span><del>-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "UserContentProvider.h"
-
-#include "Document.h"
-#include "DocumentLoader.h"
-#include "MainFrame.h"
-#include "Page.h"
-
-#if ENABLE(CONTENT_EXTENSIONS)
-#include "ContentExtensionCompiler.h"
-#include "ContentExtensionsBackend.h"
-#endif
-
-namespace WebCore {
-
-UserContentProvider::UserContentProvider()
-{
-}
-
-UserContentProvider::~UserContentProvider()
-{
- ASSERT(m_pages.isEmpty());
-}
-
-void UserContentProvider::addPage(Page& page)
-{
- ASSERT(!m_pages.contains(&page));
-
- m_pages.add(&page);
-}
-
-void UserContentProvider::removePage(Page& page)
-{
- ASSERT(m_pages.contains(&page));
-
- m_pages.remove(&page);
-}
-
-void UserContentProvider::invalidateInjectedStyleSheetCacheInAllFramesInAllPages()
-{
- for (auto& page : m_pages)
- page->invalidateInjectedStyleSheetCacheInAllFrames();
-}
-
-#if ENABLE(CONTENT_EXTENSIONS)
-static bool contentExtensionsEnabled(const DocumentLoader& documentLoader)
-{
- if (auto frame = documentLoader.frame()) {
- if (frame->isMainFrame())
- return documentLoader.userContentExtensionsEnabled();
- if (auto mainDocumentLoader = frame->mainFrame().loader().documentLoader())
- return mainDocumentLoader->userContentExtensionsEnabled();
- }
-
- return true;
-}
-
-ContentExtensions::BlockedStatus UserContentProvider::processContentExtensionRulesForLoad(ResourceRequest& request, ResourceType resourceType, DocumentLoader& initiatingDocumentLoader)
-{
- if (!contentExtensionsEnabled(initiatingDocumentLoader))
- return ContentExtensions::BlockedStatus::NotBlocked;
-
- return userContentExtensionBackend().processContentExtensionRulesForLoad(request, resourceType, initiatingDocumentLoader);
-}
-
-Vector<ContentExtensions::Action> UserContentProvider::actionsForResourceLoad(const ResourceLoadInfo& resourceLoadInfo, DocumentLoader& initiatingDocumentLoader)
-{
- if (!contentExtensionsEnabled(initiatingDocumentLoader))
- return { };
-
- return userContentExtensionBackend().actionsForResourceLoad(resourceLoadInfo);
-}
-#endif
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCorepageUserContentProviderh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/page/UserContentProvider.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/UserContentProvider.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/UserContentProvider.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1,97 +0,0 @@
</span><del>-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef UserContentProvider_h
-#define UserContentProvider_h
-
-#include "UserScriptTypes.h"
-#include "UserStyleSheetTypes.h"
-#include <functional>
-#include <wtf/Forward.h>
-#include <wtf/HashSet.h>
-#include <wtf/RefCounted.h>
-
-#if ENABLE(USER_MESSAGE_HANDLERS)
-#include "UserMessageHandlerDescriptorTypes.h"
-#endif
-
-#if ENABLE(CONTENT_EXTENSIONS)
-#include "ContentExtensionActions.h"
-#include "ContentExtensionsBackend.h"
-#endif
-
-namespace WebCore {
-
-class DocumentLoader;
-class Page;
-class ResourceRequest;
-class URL;
-
-enum class ResourceType : uint16_t;
-
-struct ResourceLoadInfo;
-
-namespace ContentExtensions {
-class ContentExtensionsBackend;
-struct Action;
-}
-
-class UserContentProvider : public RefCounted<UserContentProvider> {
-public:
- WEBCORE_EXPORT UserContentProvider();
- WEBCORE_EXPORT virtual ~UserContentProvider();
-
- virtual void forEachUserScript(const std::function<void(DOMWrapperWorld&, const UserScript&)>&) const = 0;
- virtual void forEachUserStyleSheet(const std::function<void(const UserStyleSheet&)>&) const = 0;
-
-#if ENABLE(USER_MESSAGE_HANDLERS)
- virtual const UserMessageHandlerDescriptorMap& userMessageHandlerDescriptors() const = 0;
-#endif
-
-#if ENABLE(CONTENT_EXTENSIONS)
- virtual ContentExtensions::ContentExtensionsBackend& userContentExtensionBackend() = 0;
-#endif
-
- void addPage(Page&);
- void removePage(Page&);
-
-
-#if ENABLE(CONTENT_EXTENSIONS)
- // FIXME: These don't really belong here. They should probably bundled up in the ContentExtensionsBackend
- // which should always exist.
- ContentExtensions::BlockedStatus processContentExtensionRulesForLoad(ResourceRequest&, ResourceType, DocumentLoader& initiatingDocumentLoader);
- Vector<ContentExtensions::Action> actionsForResourceLoad(const ResourceLoadInfo&, DocumentLoader& initiatingDocumentLoader);
-#endif
-
-protected:
- WEBCORE_EXPORT void invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
-
-private:
- HashSet<Page*> m_pages;
-};
-
-} // namespace WebCore
-
-#endif // UserContentProvider_h
</del></span></pre></div>
<a id="trunkSourceWebCorepageUserMessageHandlerDescriptorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/UserMessageHandlerDescriptor.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/UserMessageHandlerDescriptor.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/UserMessageHandlerDescriptor.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -54,8 +54,8 @@
</span><span class="cx"> }
</span><span class="cx"> WEBCORE_EXPORT ~UserMessageHandlerDescriptor();
</span><span class="cx">
</span><del>- WEBCORE_EXPORT const AtomicString& name();
- WEBCORE_EXPORT DOMWrapperWorld& world();
</del><ins>+ const AtomicString& name();
+ DOMWrapperWorld& world();
</ins><span class="cx">
</span><span class="cx"> Client* client() const { return m_client; }
</span><span class="cx"> void invalidateClient() { m_client = nullptr; }
</span></span></pre></div>
<a id="trunkSourceWebCorepageUserMessageHandlersNamespacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/UserMessageHandlersNamespace.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/UserMessageHandlersNamespace.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebCore/page/UserMessageHandlersNamespace.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -53,9 +53,15 @@
</span><span class="cx"> if (!page)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><del>- auto& descriptors = page->userContentProvider().userMessageHandlerDescriptors();
-
- RefPtr<UserMessageHandlerDescriptor> descriptor = descriptors.get(std::make_pair(name, &world));
</del><ins>+ const auto* userContentController = page->userContentController();
+ if (!userContentController)
+ return nullptr;
+
+ const auto* userMessageHandlerDescriptors = userContentController->userMessageHandlerDescriptors();
+ if (!userMessageHandlerDescriptors)
+ return nullptr;
+
+ RefPtr<UserMessageHandlerDescriptor> descriptor = userMessageHandlerDescriptors->get(std::make_pair(name, &world));
</ins><span class="cx"> if (!descriptor)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="lines">@@ -64,7 +70,7 @@
</span><span class="cx"> return &handler.get();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto liveHandlers = descriptors.values();
</del><ins>+ auto liveHandlers = userMessageHandlerDescriptors->values();
</ins><span class="cx"> m_messageHandlers.removeAllMatching([liveHandlers](const Ref<UserMessageHandler>& handler) {
</span><span class="cx"> for (const auto& liveHandler : liveHandlers) {
</span><span class="cx"> if (liveHandler.get() == &handler->descriptor())
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-03-10 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r197943.
+ https://bugs.webkit.org/show_bug.cgi?id=155317
+
+ This change broke Windows, WinCairo, GTK and EFL builds
+ (Requested by ryanhaddad on #webkit).
+
+ Reverted changeset:
+
+ "Add a baseURL parameter to _WKUserStyleSheet"
+ https://bugs.webkit.org/show_bug.cgi?id=155219
+ http://trac.webkit.org/changeset/197943
+
</ins><span class="cx"> 2016-03-08 Sam Weinig <sam@webkit.org>
</span><span class="cx">
</span><span class="cx"> Add a baseURL parameter to _WKUserStyleSheet
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebView.mm        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1004,7 +1004,7 @@
</span><span class="cx"> pageConfiguration.progressTrackerClient = new WebProgressTrackerClient(self);
</span><span class="cx"> pageConfiguration.databaseProvider = &WebDatabaseProvider::singleton();
</span><span class="cx"> pageConfiguration.storageNamespaceProvider = &_private->group->storageNamespaceProvider();
</span><del>- pageConfiguration.userContentProvider = &_private->group->userContentController();
</del><ins>+ pageConfiguration.userContentController = &_private->group->userContentController();
</ins><span class="cx"> pageConfiguration.visitedLinkStore = &_private->group->visitedLinkStore();
</span><span class="cx"> _private->page = new Page(pageConfiguration);
</span><span class="cx">
</span><span class="lines">@@ -1249,7 +1249,7 @@
</span><span class="cx"> pageConfiguration.progressTrackerClient = new WebProgressTrackerClient(self);
</span><span class="cx"> pageConfiguration.databaseProvider = &WebDatabaseProvider::singleton();
</span><span class="cx"> pageConfiguration.storageNamespaceProvider = &_private->group->storageNamespaceProvider();
</span><del>- pageConfiguration.userContentProvider = &_private->group->userContentController();
</del><ins>+ pageConfiguration.userContentController = &_private->group->userContentController();
</ins><span class="cx"> pageConfiguration.visitedLinkStore = &_private->group->visitedLinkStore();
</span><span class="cx">
</span><span class="cx"> _private->page = new Page(pageConfiguration);
</span><span class="lines">@@ -6203,7 +6203,7 @@
</span><span class="cx"> if (!_private->page)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- _private->page->setUserContentProvider(_private->group->userContentController());
</del><ins>+ _private->page->setUserContentController(&_private->group->userContentController());
</ins><span class="cx"> _private->page->setVisitedLinkStore(_private->group->visitedLinkStore());
</span><span class="cx"> _private->page->setGroupName(groupName);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/ChangeLog        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-03-10 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r197943.
+ https://bugs.webkit.org/show_bug.cgi?id=155317
+
+ This change broke Windows, WinCairo, GTK and EFL builds
+ (Requested by ryanhaddad on #webkit).
+
+ Reverted changeset:
+
+ "Add a baseURL parameter to _WKUserStyleSheet"
+ https://bugs.webkit.org/show_bug.cgi?id=155219
+ http://trac.webkit.org/changeset/197943
+
</ins><span class="cx"> 2016-03-10 Eric Carlson <eric.carlson@apple.com>
</span><span class="cx">
</span><span class="cx"> [MediaStream] push media stream state to the UI process
</span></span></pre></div>
<a id="trunkSourceWebKit2Scriptswebkitmessagespy"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Scripts/webkit/messages.py (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Scripts/webkit/messages.py        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/Scripts/webkit/messages.py        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -378,8 +378,6 @@
</span><span class="cx"> 'WebKit::WebTouchEvent': ['"WebEvent.h"'],
</span><span class="cx"> 'WebKit::WebWheelEvent': ['"WebEvent.h"'],
</span><span class="cx"> 'WebKit::WebScriptMessageHandlerHandle': ['"WebScriptMessageHandler.h"'],
</span><del>- 'struct WebKit::WebUserScriptData': ['"WebUserContentControllerDataTypes.h"'],
- 'struct WebKit::WebUserStyleSheetData': ['"WebUserContentControllerDataTypes.h"'],
</del><span class="cx"> 'std::chrono::system_clock::time_point': ['<chrono>'],
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebUserContentControllerDataTypescpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/WebUserContentControllerDataTypes.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebUserContentControllerDataTypes.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/Shared/WebUserContentControllerDataTypes.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1,69 +0,0 @@
</span><del>-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "WebUserContentControllerDataTypes.h"
-
-#include "WebCoreArgumentCoders.h"
-
-namespace WebKit {
-
-void WebUserScriptData::encode(IPC::ArgumentEncoder& encoder) const
-{
- encoder << identifier;
- encoder << worldIdentifier;
- encoder << userScript;
-}
-
-bool WebUserScriptData::decode(IPC::ArgumentDecoder& decoder, WebUserScriptData& data)
-{
- if (!decoder.decode(data.identifier))
- return false;
- if (!decoder.decode(data.worldIdentifier))
- return false;
- if (!decoder.decode(data.userScript))
- return false;
- return true;
-}
-
-void WebUserStyleSheetData::encode(IPC::ArgumentEncoder& encoder) const
-{
- encoder << identifier;
- encoder << worldIdentifier;
- encoder << userStyleSheet;
-}
-
-bool WebUserStyleSheetData::decode(IPC::ArgumentDecoder& decoder, WebUserStyleSheetData& data)
-{
- if (!decoder.decode(data.identifier))
- return false;
- if (!decoder.decode(data.worldIdentifier))
- return false;
- if (!decoder.decode(data.userStyleSheet))
- return false;
- return true;
-}
-
-} // namespace WebKit
</del></span></pre></div>
<a id="trunkSourceWebKit2SharedWebUserContentControllerDataTypesh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/Shared/WebUserContentControllerDataTypes.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebUserContentControllerDataTypes.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/Shared/WebUserContentControllerDataTypes.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1,59 +0,0 @@
</span><del>-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WebUserContentControllerDataTypes_h
-#define WebUserContentControllerDataTypes_h
-
-#include <WebCore/UserScript.h>
-#include <WebCore/UserStyleSheet.h>
-
-namespace IPC {
-class ArgumentDecoder;
-class ArgumentEncoder;
-}
-
-namespace WebKit {
-
-struct WebUserScriptData {
- void encode(IPC::ArgumentEncoder&) const;
- static bool decode(IPC::ArgumentDecoder&, WebUserScriptData&);
-
- uint64_t identifier;
- uint64_t worldIdentifier;
- WebCore::UserScript userScript;
-};
-
-struct WebUserStyleSheetData {
- void encode(IPC::ArgumentEncoder&) const;
- static bool decode(IPC::ArgumentDecoder&, WebUserStyleSheetData&);
-
- uint64_t identifier;
- uint64_t worldIdentifier;
- WebCore::UserStyleSheet userStyleSheet;
-};
-
-} // namespace WebKit
-
-#endif // WebUserContentControllerDataTypes_h
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPIUserScriptcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APIUserScript.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APIUserScript.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserScript.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -39,20 +39,11 @@
</span><span class="cx">
</span><span class="cx"> WebCore::URL UserScript::generateUniqueURL()
</span><span class="cx"> {
</span><del>- static uint64_t identifier;
-
</del><span class="cx"> StringBuilder urlStringBuilder;
</span><span class="cx"> urlStringBuilder.appendLiteral("user-script:");
</span><del>- urlStringBuilder.appendNumber(++identifier);
</del><ins>+ urlStringBuilder.appendNumber(generateIdentifier());
</ins><span class="cx"> return { { }, urlStringBuilder.toString() };
</span><span class="cx"> }
</span><span class="cx">
</span><del>-UserScript::UserScript(WebCore::UserScript userScript, API::UserContentWorld& world)
- : m_identifier(generateIdentifier())
- , m_userScript(userScript)
- , m_world(world)
-{
-}
</del><span class="cx">
</span><del>-
</del><span class="cx"> } // namespace API
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPIUserScripth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APIUserScript.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APIUserScript.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserScript.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -41,17 +41,18 @@
</span><span class="cx"> return adoptRef(*new UserScript(WTFMove(userScript), world));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- UserScript(WebCore::UserScript, API::UserContentWorld&);
</del><ins>+ UserScript(WebCore::UserScript userScript, API::UserContentWorld& world)
+ : m_userScript(userScript)
+ , m_world(world)
+ {
+ }
</ins><span class="cx">
</span><del>- uint64_t identifier() const { return m_identifier; }
-
</del><span class="cx"> const WebCore::UserScript& userScript() const { return m_userScript; }
</span><span class="cx">
</span><span class="cx"> UserContentWorld& userContentWorld() { return m_world; }
</span><span class="cx"> const UserContentWorld& userContentWorld() const { return m_world; }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- uint64_t m_identifier;
</del><span class="cx"> WebCore::UserScript m_userScript;
</span><span class="cx"> Ref<UserContentWorld> m_world;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPIUserStyleSheetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APIUserStyleSheet.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APIUserStyleSheet.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserStyleSheet.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -39,19 +39,11 @@
</span><span class="cx">
</span><span class="cx"> WebCore::URL UserStyleSheet::generateUniqueURL()
</span><span class="cx"> {
</span><del>- static uint64_t identifier;
-
</del><span class="cx"> StringBuilder urlStringBuilder;
</span><span class="cx"> urlStringBuilder.appendLiteral("user-style-sheet:");
</span><del>- urlStringBuilder.appendNumber(++identifier);
</del><ins>+ urlStringBuilder.appendNumber(generateIdentifier());
</ins><span class="cx"> return { { }, urlStringBuilder.toString() };
</span><span class="cx"> }
</span><span class="cx">
</span><del>-UserStyleSheet::UserStyleSheet(WebCore::UserStyleSheet userStyleSheet, API::UserContentWorld& world)
- : m_identifier(generateIdentifier())
- , m_userStyleSheet(userStyleSheet)
- , m_world(world)
-{
-}
</del><span class="cx">
</span><span class="cx"> } // namespace API
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIAPIUserStyleSheeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/APIUserStyleSheet.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/APIUserStyleSheet.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserStyleSheet.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -41,17 +41,18 @@
</span><span class="cx"> return adoptRef(*new UserStyleSheet(WTFMove(userStyleSheet), world));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- UserStyleSheet(WebCore::UserStyleSheet, API::UserContentWorld&);
</del><ins>+ UserStyleSheet(WebCore::UserStyleSheet userStyleSheet, API::UserContentWorld& world)
+ : m_userStyleSheet(userStyleSheet)
+ , m_world(world)
+ {
+ }
</ins><span class="cx">
</span><del>- uint64_t identifier() const { return m_identifier; }
-
</del><span class="cx"> const WebCore::UserStyleSheet& userStyleSheet() const { return m_userStyleSheet; }
</span><span class="cx">
</span><span class="cx"> UserContentWorld& userContentWorld() { return m_world; }
</span><span class="cx"> const UserContentWorld& userContentWorld() const { return m_world; }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- uint64_t m_identifier;
</del><span class="cx"> WebCore::UserStyleSheet m_userStyleSheet;
</span><span class="cx"> Ref<UserContentWorld> m_world;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoa_WKUserStyleSheeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -38,13 +38,11 @@
</span><span class="cx">
</span><span class="cx"> @property (nonatomic, readonly, copy) NSString *source;
</span><span class="cx">
</span><del>-@property (nonatomic, readonly, copy) NSURL *baseURL;
-
</del><span class="cx"> @property (nonatomic, readonly, getter=isForMainFrameOnly) BOOL forMainFrameOnly;
</span><span class="cx">
</span><span class="cx"> - (instancetype)initWithSource:(NSString *)source forMainFrameOnly:(BOOL)forMainFrameOnly;
</span><ins>+
</ins><span class="cx"> - (instancetype)initWithSource:(NSString *)source forMainFrameOnly:(BOOL)forMainFrameOnly legacyWhitelist:(WK_ARRAY(NSString *) *)legacyWhitelist legacyBlacklist:(WK_ARRAY(NSString *) *)legacyBlacklist userContentWorld:(_WKUserContentWorld *)userContentWorld;
</span><del>-- (instancetype)initWithSource:(NSString *)source forMainFrameOnly:(BOOL)forMainFrameOnly legacyWhitelist:(WK_ARRAY(NSString *) *)legacyWhitelist legacyBlacklist:(WK_ARRAY(NSString *) *)legacyBlacklist baseURL:(NSURL *)baseURL userContentWorld:(_WKUserContentWorld *)userContentWorld;
</del><span class="cx">
</span><span class="cx"> @end
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoa_WKUserStyleSheetmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx">
</span><span class="cx"> #import "APIArray.h"
</span><span class="cx"> #import "WKNSArray.h"
</span><del>-#import "WKNSURLExtras.h"
</del><span class="cx"> #import "WebKit2Initialize.h"
</span><span class="cx"> #import "_WKUserContentWorldInternal.h"
</span><span class="cx">
</span><span class="lines">@@ -62,29 +61,11 @@
</span><span class="cx"> return self;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-- (instancetype)initWithSource:(NSString *)source forMainFrameOnly:(BOOL)forMainFrameOnly legacyWhitelist:(WK_ARRAY(NSString *) *)legacyWhitelist legacyBlacklist:(WK_ARRAY(NSString *) *)legacyBlacklist baseURL:(NSURL *)baseURL userContentWorld:(_WKUserContentWorld *)userContentWorld
-{
- if (!(self = [super init]))
- return nil;
-
- // FIXME: In the API test, we can use generateUniqueURL below before the API::Object constructor has done this... where should this really be?
- WebKit::InitializeWebKit2();
-
- API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { WTF::String(source), { { }, WTF::String([baseURL _web_originalDataAsWTFString]) }, API::toStringVector(legacyWhitelist), API::toStringVector(legacyBlacklist), forMainFrameOnly ? WebCore::InjectInTopFrameOnly : WebCore::InjectInAllFrames, WebCore::UserStyleUserLevel }, *userContentWorld->_userContentWorld);
-
- return self;
-}
-
</del><span class="cx"> - (NSString *)source
</span><span class="cx"> {
</span><span class="cx"> return _userStyleSheet->userStyleSheet().source();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-- (NSURL *)baseURL
-{
- return _userStyleSheet->userStyleSheet().url();
-}
-
</del><span class="cx"> - (BOOL)isForMainFrameOnly
</span><span class="cx"> {
</span><span class="cx"> return _userStyleSheet->userStyleSheet().injectedFrames() == WebCore::InjectInTopFrameOnly;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessUserContentWebUserContentControllerProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -33,7 +33,6 @@
</span><span class="cx"> #include "DataReference.h"
</span><span class="cx"> #include "WebProcessProxy.h"
</span><span class="cx"> #include "WebScriptMessageHandler.h"
</span><del>-#include "WebUserContentControllerDataTypes.h"
</del><span class="cx"> #include "WebUserContentControllerMessages.h"
</span><span class="cx"> #include "WebUserContentControllerProxyMessages.h"
</span><span class="cx"> #include <WebCore/SerializedScriptValue.h>
</span><span class="lines">@@ -81,14 +80,14 @@
</span><span class="cx"> userContentWorlds.append(std::make_pair(world.key->identifier(), world.key->name()));
</span><span class="cx"> webProcessProxy.connection()->send(Messages::WebUserContentController::AddUserContentWorlds(userContentWorlds), m_identifier);
</span><span class="cx">
</span><del>- Vector<WebUserScriptData> userScripts;
</del><ins>+ Vector<std::pair<uint64_t, WebCore::UserScript>> userScripts;
</ins><span class="cx"> for (const auto& userScript : m_userScripts->elementsOfType<API::UserScript>())
</span><del>- userScripts.append({ userScript->identifier(), userScript->userContentWorld().identifier(), userScript->userScript() });
</del><ins>+ userScripts.append(std::make_pair(userScript->userContentWorld().identifier(), userScript->userScript()));
</ins><span class="cx"> webProcessProxy.connection()->send(Messages::WebUserContentController::AddUserScripts(userScripts), m_identifier);
</span><span class="cx">
</span><del>- Vector<WebUserStyleSheetData> userStyleSheets;
</del><ins>+ Vector<std::pair<uint64_t, WebCore::UserStyleSheet>> userStyleSheets;
</ins><span class="cx"> for (const auto& userStyleSheet : m_userStyleSheets->elementsOfType<API::UserStyleSheet>())
</span><del>- userStyleSheets.append({ userStyleSheet->identifier(), userStyleSheet->userContentWorld().identifier(), userStyleSheet->userStyleSheet() });
</del><ins>+ userStyleSheets.append(std::make_pair(userStyleSheet->userContentWorld().identifier(), userStyleSheet->userStyleSheet()));
</ins><span class="cx"> webProcessProxy.connection()->send(Messages::WebUserContentController::AddUserStyleSheets(userStyleSheets), m_identifier);
</span><span class="cx">
</span><span class="cx"> Vector<WebScriptMessageHandlerHandle> messageHandlerHandles;
</span><span class="lines">@@ -169,7 +168,7 @@
</span><span class="cx"> m_userScripts->elements().append(&userScript);
</span><span class="cx">
</span><span class="cx"> for (WebProcessProxy* process : m_processes)
</span><del>- process->connection()->send(Messages::WebUserContentController::AddUserScripts({ { userScript.identifier(), world->identifier(), userScript.userScript() } }), m_identifier);
</del><ins>+ process->connection()->send(Messages::WebUserContentController::AddUserScripts({ std::make_pair(world->identifier(), userScript.userScript()) }), m_identifier);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebUserContentControllerProxy::removeUserScript(API::UserScript& userScript)
</span><span class="lines">@@ -177,7 +176,7 @@
</span><span class="cx"> Ref<API::UserContentWorld> world = userScript.userContentWorld();
</span><span class="cx">
</span><span class="cx"> for (WebProcessProxy* process : m_processes)
</span><del>- process->connection()->send(Messages::WebUserContentController::RemoveUserScript(world->identifier(), userScript.identifier()), m_identifier);
</del><ins>+ process->connection()->send(Messages::WebUserContentController::RemoveUserScript(world->identifier(), userScript.userScript().url().string()), m_identifier);
</ins><span class="cx">
</span><span class="cx"> m_userScripts->elements().removeAll(&userScript);
</span><span class="cx">
</span><span class="lines">@@ -224,7 +223,7 @@
</span><span class="cx"> m_userStyleSheets->elements().append(&userStyleSheet);
</span><span class="cx">
</span><span class="cx"> for (WebProcessProxy* process : m_processes)
</span><del>- process->connection()->send(Messages::WebUserContentController::AddUserStyleSheets({ { userStyleSheet.identifier(), world->identifier(), userStyleSheet.userStyleSheet() } }), m_identifier);
</del><ins>+ process->connection()->send(Messages::WebUserContentController::AddUserStyleSheets({ std::make_pair(world->identifier(), userStyleSheet.userStyleSheet()) }), m_identifier);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebUserContentControllerProxy::removeUserStyleSheet(API::UserStyleSheet& userStyleSheet)
</span><span class="lines">@@ -232,7 +231,7 @@
</span><span class="cx"> Ref<API::UserContentWorld> world = userStyleSheet.userContentWorld();
</span><span class="cx">
</span><span class="cx"> for (WebProcessProxy* process : m_processes)
</span><del>- process->connection()->send(Messages::WebUserContentController::RemoveUserStyleSheet(world->identifier(), userStyleSheet.identifier()), m_identifier);
</del><ins>+ process->connection()->send(Messages::WebUserContentController::RemoveUserStyleSheet(world->identifier(), userStyleSheet.userStyleSheet().url().string()), m_identifier);
</ins><span class="cx">
</span><span class="cx"> m_userStyleSheets->elements().removeAll(&userStyleSheet);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -1044,8 +1044,6 @@
</span><span class="cx">                 7A791EFA1C7CFCF100C4C52B /* WebResourceLoadStatisticsStoreMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A791EF91C7CFB3700C4C52B /* WebResourceLoadStatisticsStoreMessageReceiver.cpp */; };
</span><span class="cx">                 7A791EFB1C7CFD0100C4C52B /* WebResourceLoadStatisticsStoreMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A791EF81C7CFB1000C4C52B /* WebResourceLoadStatisticsStoreMessages.h */; };
</span><span class="cx">                 7A791EFC1C7D08C500C4C52B /* WebResourceLoadStatisticsStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A9CD8C01C77984900D9F6C7 /* WebResourceLoadStatisticsStore.cpp */; };
</span><del>-                7C065F2B1C8CD95F00C2D950 /* WebUserContentControllerDataTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C065F291C8CD95F00C2D950 /* WebUserContentControllerDataTypes.cpp */; };
-                7C065F2C1C8CD95F00C2D950 /* WebUserContentControllerDataTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C065F2A1C8CD95F00C2D950 /* WebUserContentControllerDataTypes.h */; };
</del><span class="cx">                 7C135AA8173B0BCA00586AE2 /* WKPluginInformation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C135AA6173B0BCA00586AE2 /* WKPluginInformation.cpp */; };
</span><span class="cx">                 7C135AA9173B0BCA00586AE2 /* WKPluginInformation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C135AA7173B0BCA00586AE2 /* WKPluginInformation.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 7C135AAC173B0CFF00586AE2 /* PluginInformationMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7C135AAA173B0CFF00586AE2 /* PluginInformationMac.mm */; };
</span><span class="lines">@@ -3053,8 +3051,6 @@
</span><span class="cx">                 7A9CD8C01C77984900D9F6C7 /* WebResourceLoadStatisticsStore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebResourceLoadStatisticsStore.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 7A9CD8C11C77984900D9F6C7 /* WebResourceLoadStatisticsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebResourceLoadStatisticsStore.h; sourceTree = "<group>"; };
</span><span class="cx">                 7A9CD8C21C779AD600D9F6C7 /* WebResourceLoadStatisticsStore.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebResourceLoadStatisticsStore.messages.in; sourceTree = "<group>"; };
</span><del>-                7C065F291C8CD95F00C2D950 /* WebUserContentControllerDataTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebUserContentControllerDataTypes.cpp; sourceTree = "<group>"; };
-                7C065F2A1C8CD95F00C2D950 /* WebUserContentControllerDataTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebUserContentControllerDataTypes.h; sourceTree = "<group>"; };
</del><span class="cx">                 7C0BB9A818DCDE890006C086 /* WebContent-iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "WebContent-iOS.entitlements"; sourceTree = "<group>"; };
</span><span class="cx">                 7C0BB9A918DCDF5A0006C086 /* Network-iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Network-iOS.entitlements"; sourceTree = "<group>"; };
</span><span class="cx">                 7C135AA6173B0BCA00586AE2 /* WKPluginInformation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKPluginInformation.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -4502,8 +4498,6 @@
</span><span class="cx">                                 8360349D1ACB34D600626549 /* WebSQLiteDatabaseTracker.cpp */,
</span><span class="cx">                                 8360349E1ACB34D600626549 /* WebSQLiteDatabaseTracker.h */,
</span><span class="cx">                                 C0337DD7127A51B6008FF4F4 /* WebTouchEvent.cpp */,
</span><del>-                                7C065F291C8CD95F00C2D950 /* WebUserContentControllerDataTypes.cpp */,
-                                7C065F2A1C8CD95F00C2D950 /* WebUserContentControllerDataTypes.h */,
</del><span class="cx">                                 C0337DD0127A2980008FF4F4 /* WebWheelEvent.cpp */,
</span><span class="cx">                         );
</span><span class="cx">                         path = Shared;
</span><span class="lines">@@ -7994,7 +7988,6 @@
</span><span class="cx">                                 2D28A4971AF965A100F190C9 /* WKViewLayoutStrategy.h in Headers */,
</span><span class="cx">                                 5C1427021C23F84C00D41183 /* Download.h in Headers */,
</span><span class="cx">                                 BFA6179F12F0B99D0033E0CA /* WKViewPrivate.h in Headers */,
</span><del>-                                7C065F2C1C8CD95F00C2D950 /* WebUserContentControllerDataTypes.h in Headers */,
</del><span class="cx">                                 C5E1AFE916B20B75006CC1F2 /* WKWebArchive.h in Headers */,
</span><span class="cx">                                 C5E1AFEB16B20B7E006CC1F2 /* WKWebArchiveResource.h in Headers */,
</span><span class="cx">                                 1AA2E56718D77508003814BD /* WKWebProcessBundleParameters.h in Headers */,
</span><span class="lines">@@ -9151,7 +9144,6 @@
</span><span class="cx">                                 5C1427011C23F84C00D41183 /* Download.cpp in Sources */,
</span><span class="cx">                                 C0337DDD127A521C008FF4F4 /* WebPlatformTouchPoint.cpp in Sources */,
</span><span class="cx">                                 2DA944A21884E4F000ED86DB /* WebPlatformTouchPointIOS.cpp in Sources */,
</span><del>-                                7C065F2B1C8CD95F00C2D950 /* WebUserContentControllerDataTypes.cpp in Sources */,
</del><span class="cx">                                 31D5929E166E060000E6BF02 /* WebPlugInClient.cpp in Sources */,
</span><span class="cx">                                 BC5744EF12638FB3006F0F12 /* WebPopupItem.cpp in Sources */,
</span><span class="cx">                                 D3B9484611FF4B6500032B39 /* WebPopupMenu.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -47,7 +47,6 @@
</span><span class="cx"> #include "WebProcess.h"
</span><span class="cx"> #include "WebProcessCreationParameters.h"
</span><span class="cx"> #include "WebProcessPoolMessages.h"
</span><del>-#include "WebUserContentController.h"
</del><span class="cx"> #include <JavaScriptCore/APICast.h>
</span><span class="cx"> #include <JavaScriptCore/Exception.h>
</span><span class="cx"> #include <JavaScriptCore/JSLock.h>
</span><span class="lines">@@ -71,6 +70,7 @@
</span><span class="cx"> #include <WebCore/SecurityPolicy.h>
</span><span class="cx"> #include <WebCore/SessionID.h>
</span><span class="cx"> #include <WebCore/Settings.h>
</span><ins>+#include <WebCore/UserContentController.h>
</ins><span class="cx"> #include <WebCore/UserGestureIndicator.h>
</span><span class="cx"> #include <WebCore/UserScript.h>
</span><span class="cx"> #include <WebCore/UserStyleSheet.h>
</span><span class="lines">@@ -407,39 +407,39 @@
</span><span class="cx"> void InjectedBundle::addUserScript(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld, const String& source, const String& url, API::Array* whitelist, API::Array* blacklist, WebCore::UserScriptInjectionTime injectionTime, WebCore::UserContentInjectedFrames injectedFrames)
</span><span class="cx"> {
</span><span class="cx"> // url is not from URL::string(), i.e. it has not already been parsed by URL, so we have to use the relative URL constructor for URL instead of the ParsedURLStringTag version.
</span><del>- UserScript userScript{ source, URL(URL(), url), whitelist ? whitelist->toStringVector() : Vector<String>(), blacklist ? blacklist->toStringVector() : Vector<String>(), injectionTime, injectedFrames };
</del><ins>+ auto userScript = std::make_unique<UserScript>(source, URL(URL(), url), whitelist ? whitelist->toStringVector() : Vector<String>(), blacklist ? blacklist->toStringVector() : Vector<String>(), injectionTime, injectedFrames);
</ins><span class="cx">
</span><del>- pageGroup->userContentController().addUserScript(*scriptWorld, WTFMove(userScript));
</del><ins>+ pageGroup->userContentController().addUserScript(scriptWorld->coreWorld(), WTFMove(userScript));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InjectedBundle::addUserStyleSheet(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld, const String& source, const String& url, API::Array* whitelist, API::Array* blacklist, WebCore::UserContentInjectedFrames injectedFrames)
</span><span class="cx"> {
</span><span class="cx"> // url is not from URL::string(), i.e. it has not already been parsed by URL, so we have to use the relative URL constructor for URL instead of the ParsedURLStringTag version.
</span><del>- UserStyleSheet userStyleSheet{ source, URL(URL(), url), whitelist ? whitelist->toStringVector() : Vector<String>(), blacklist ? blacklist->toStringVector() : Vector<String>(), injectedFrames, UserStyleUserLevel };
</del><ins>+ auto userStyleSheet = std::make_unique<UserStyleSheet>(source, URL(URL(), url), whitelist ? whitelist->toStringVector() : Vector<String>(), blacklist ? blacklist->toStringVector() : Vector<String>(), injectedFrames, UserStyleUserLevel);
</ins><span class="cx">
</span><del>- pageGroup->userContentController().addUserStyleSheet(*scriptWorld, WTFMove(userStyleSheet));
</del><ins>+ pageGroup->userContentController().addUserStyleSheet(scriptWorld->coreWorld(), WTFMove(userStyleSheet), InjectInExistingDocuments);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InjectedBundle::removeUserScript(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld, const String& url)
</span><span class="cx"> {
</span><span class="cx"> // url is not from URL::string(), i.e. it has not already been parsed by URL, so we have to use the relative URL constructor for URL instead of the ParsedURLStringTag version.
</span><del>- pageGroup->userContentController().removeUserScriptWithURL(*scriptWorld, URL(URL(), url));
</del><ins>+ pageGroup->userContentController().removeUserScript(scriptWorld->coreWorld(), URL(URL(), url));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InjectedBundle::removeUserStyleSheet(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld, const String& url)
</span><span class="cx"> {
</span><span class="cx"> // url is not from URL::string(), i.e. it has not already been parsed by URL, so we have to use the relative URL constructor for URL instead of the ParsedURLStringTag version.
</span><del>- pageGroup->userContentController().removeUserStyleSheetWithURL(*scriptWorld, URL(URL(), url));
</del><ins>+ pageGroup->userContentController().removeUserStyleSheet(scriptWorld->coreWorld(), URL(URL(), url));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InjectedBundle::removeUserScripts(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld)
</span><span class="cx"> {
</span><del>- pageGroup->userContentController().removeUserScripts(*scriptWorld);
</del><ins>+ pageGroup->userContentController().removeUserScripts(scriptWorld->coreWorld());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InjectedBundle::removeUserStyleSheets(WebPageGroupProxy* pageGroup, InjectedBundleScriptWorld* scriptWorld)
</span><span class="cx"> {
</span><del>- pageGroup->userContentController().removeUserStyleSheets(*scriptWorld);
</del><ins>+ pageGroup->userContentController().removeUserStyleSheets(scriptWorld->coreWorld());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InjectedBundle::removeAllUserContent(WebPageGroupProxy* pageGroup)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessUserContentWebUserContentControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> #include "WebUserContentControllerMessages.h"
</span><span class="cx"> #include "WebUserContentControllerProxyMessages.h"
</span><span class="cx"> #include <WebCore/DOMWrapperWorld.h>
</span><ins>+#include <WebCore/ScriptController.h>
</ins><span class="cx"> #include <WebCore/SecurityOriginData.h>
</span><span class="cx"> #include <WebCore/SerializedScriptValue.h>
</span><span class="cx"> #include <WebCore/UserStyleSheet.h>
</span><span class="lines">@@ -79,6 +80,7 @@
</span><span class="cx">
</span><span class="cx"> WebUserContentController::WebUserContentController(uint64_t identifier)
</span><span class="cx"> : m_identifier(identifier)
</span><ins>+ , m_userContentController(UserContentController::create())
</ins><span class="cx"> {
</span><span class="cx"> WebProcess::singleton().addMessageReceiver(Messages::WebUserContentController::messageReceiverName(), m_identifier, *this);
</span><span class="cx"> }
</span><span class="lines">@@ -92,6 +94,7 @@
</span><span class="cx"> userContentControllers().remove(m_identifier);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> void WebUserContentController::addUserContentWorlds(const Vector<std::pair<uint64_t, String>>& worlds)
</span><span class="cx"> {
</span><span class="cx"> for (auto& world : worlds) {
</span><span class="lines">@@ -121,21 +124,20 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void WebUserContentController::addUserScripts(const Vector<WebUserScriptData>& userScripts)
</del><ins>+void WebUserContentController::addUserScripts(const Vector<std::pair<uint64_t, WebCore::UserScript>>& userScripts)
</ins><span class="cx"> {
</span><del>- for (const auto& userScriptData : userScripts) {
- auto it = worldMap().find(userScriptData.worldIdentifier);
</del><ins>+ for (const auto& userScriptWorldPair : userScripts) {
+ auto it = worldMap().find(userScriptWorldPair.first);
</ins><span class="cx"> if (it == worldMap().end()) {
</span><del>- WTFLogAlways("Trying to add a UserScript to a UserContentWorld (id=%" PRIu64 ") that does not exist.", userScriptData.worldIdentifier);
</del><ins>+ WTFLogAlways("Trying to add a UserScript to a UserContentWorld (id=%" PRIu64 ") that does not exist.", userScriptWorldPair.first);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- UserScript script = userScriptData.userScript;
- addUserScriptInternal(*it->value.first, userScriptData.identifier, WTFMove(script));
</del><ins>+ m_userContentController->addUserScript(it->value.first->coreWorld(), std::make_unique<WebCore::UserScript>(userScriptWorldPair.second));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void WebUserContentController::removeUserScript(uint64_t worldIdentifier, uint64_t userScriptIdentifier)
</del><ins>+void WebUserContentController::removeUserScript(uint64_t worldIdentifier, const String& urlString)
</ins><span class="cx"> {
</span><span class="cx"> auto it = worldMap().find(worldIdentifier);
</span><span class="cx"> if (it == worldMap().end()) {
</span><span class="lines">@@ -143,7 +145,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- removeUserScriptInternal(*it->value.first, userScriptIdentifier);
</del><ins>+ m_userContentController->removeUserScript(it->value.first->coreWorld(), URL(URL(), urlString));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebUserContentController::removeAllUserScripts(const Vector<uint64_t>& worldIdentifiers)
</span><span class="lines">@@ -155,25 +157,24 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- removeUserScripts(*it->value.first);
</del><ins>+ m_userContentController->removeUserScripts(it->value.first->coreWorld());
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void WebUserContentController::addUserStyleSheets(const Vector<WebUserStyleSheetData>& userStyleSheets)
</del><ins>+void WebUserContentController::addUserStyleSheets(const Vector<std::pair<uint64_t, WebCore::UserStyleSheet>>& userStyleSheets)
</ins><span class="cx"> {
</span><del>- for (const auto& userStyleSheetData : userStyleSheets) {
- auto it = worldMap().find(userStyleSheetData.worldIdentifier);
</del><ins>+ for (const auto& userStyleSheetWorldPair : userStyleSheets) {
+ auto it = worldMap().find(userStyleSheetWorldPair.first);
</ins><span class="cx"> if (it == worldMap().end()) {
</span><del>- WTFLogAlways("Trying to add a UserStyleSheet to a UserContentWorld (id=%" PRIu64 ") that does not exist.", userStyleSheetData.worldIdentifier);
</del><ins>+ WTFLogAlways("Trying to add a UserStyleSheet to a UserContentWorld (id=%" PRIu64 ") that does not exist.", userStyleSheetWorldPair.first);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><del>-
- UserStyleSheet sheet = userStyleSheetData.userStyleSheet;
- addUserStyleSheetInternal(*it->value.first, userStyleSheetData.identifier, WTFMove(sheet));
</del><ins>+
+ m_userContentController->addUserStyleSheet(it->value.first->coreWorld(), std::make_unique<WebCore::UserStyleSheet>(userStyleSheetWorldPair.second), InjectInExistingDocuments);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void WebUserContentController::removeUserStyleSheet(uint64_t worldIdentifier, uint64_t userStyleSheetIdentifier)
</del><ins>+void WebUserContentController::removeUserStyleSheet(uint64_t worldIdentifier, const String& urlString)
</ins><span class="cx"> {
</span><span class="cx"> auto it = worldMap().find(worldIdentifier);
</span><span class="cx"> if (it == worldMap().end()) {
</span><span class="lines">@@ -181,7 +182,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- removeUserStyleSheetInternal(*it->value.first, userStyleSheetIdentifier);
</del><ins>+ m_userContentController->removeUserStyleSheet(it->value.first->coreWorld(), URL(URL(), urlString));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebUserContentController::removeAllUserStyleSheets(const Vector<uint64_t>& worldIdentifiers)
</span><span class="lines">@@ -193,7 +194,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- removeUserStyleSheets(*it->value.first);
</del><ins>+ m_userContentController->removeUserStyleSheets(it->value.first->coreWorld());
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -252,9 +253,7 @@
</span><span class="cx"> RefPtr<WebUserMessageHandlerDescriptorProxy> descriptor = WebUserMessageHandlerDescriptorProxy::create(this, handle.name, handle.identifier);
</span><span class="cx">
</span><span class="cx"> m_userMessageHandlerDescriptors.add(descriptor->identifier(), descriptor);
</span><del>-
- auto& coreDescriptor = descriptor->descriptor();
- m_userMessageHandlerDescriptorsMap.add(std::make_pair(coreDescriptor.name(), &coreDescriptor.world()), &coreDescriptor);
</del><ins>+ m_userContentController->addUserMessageHandlerDescriptor(descriptor->descriptor());
</ins><span class="cx"> }
</span><span class="cx"> #else
</span><span class="cx"> UNUSED_PARAM(scriptMessageHandlers);
</span><span class="lines">@@ -266,10 +265,8 @@
</span><span class="cx"> #if ENABLE(USER_MESSAGE_HANDLERS)
</span><span class="cx"> auto it = m_userMessageHandlerDescriptors.find(identifier);
</span><span class="cx"> ASSERT(it != m_userMessageHandlerDescriptors.end());
</span><del>-
- auto& coreDescriptor = it->value->descriptor();
- m_userMessageHandlerDescriptorsMap.remove(std::make_pair(coreDescriptor.name(), &coreDescriptor.world()));
-
</del><ins>+
+ m_userContentController->removeUserMessageHandlerDescriptor(it->value->descriptor());
</ins><span class="cx"> m_userMessageHandlerDescriptors.remove(it);
</span><span class="cx"> #else
</span><span class="cx"> UNUSED_PARAM(identifier);
</span><span class="lines">@@ -282,168 +279,19 @@
</span><span class="cx"> for (const auto& userContentExtension : userContentExtensions) {
</span><span class="cx"> WebCompiledContentExtensionData contentExtensionData = userContentExtension.second;
</span><span class="cx"> RefPtr<WebCompiledContentExtension> compiledContentExtension = WebCompiledContentExtension::create(WTFMove(contentExtensionData));
</span><del>-
- m_contentExtensionBackend.addContentExtension(userContentExtension.first, WTFMove(compiledContentExtension));
</del><ins>+ m_userContentController->addUserContentExtension(userContentExtension.first, compiledContentExtension);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebUserContentController::removeUserContentExtension(const String& name)
</span><span class="cx"> {
</span><del>- m_contentExtensionBackend.removeContentExtension(name);
</del><ins>+ m_userContentController->removeUserContentExtension(name);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebUserContentController::removeAllUserContentExtensions()
</span><span class="cx"> {
</span><del>- m_contentExtensionBackend.removeAllContentExtensions();
</del><ins>+ m_userContentController->removeAllUserContentExtensions();
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-
-
-void WebUserContentController::addUserScriptInternal(InjectedBundleScriptWorld& world, uint64_t userScriptIdentifier, UserScript&& userScript)
-{
- auto& scriptsInWorld = m_userScripts.ensure(&world, [] { return Vector<std::pair<uint64_t, WebCore::UserScript>>(); }).iterator->value;
- scriptsInWorld.append(std::make_pair(userScriptIdentifier, WTFMove(userScript)));
-}
-
-void WebUserContentController::addUserScript(InjectedBundleScriptWorld& world, UserScript&& userScript)
-{
- addUserScriptInternal(world, 0, WTFMove(userScript));
-}
-
-void WebUserContentController::removeUserScriptWithURL(InjectedBundleScriptWorld& world, const URL& url)
-{
- auto it = m_userScripts.find(&world);
- if (it == m_userScripts.end())
- return;
-
- auto& scripts = it->value;
- for (int i = scripts.size() - 1; i >= 0; --i) {
- if (scripts[i].second.url() == url)
- scripts.remove(i);
- }
-
- if (scripts.isEmpty())
- m_userScripts.remove(it);
-}
-
-void WebUserContentController::removeUserScriptInternal(InjectedBundleScriptWorld& world, uint64_t userScriptIdentifier)
-{
- auto it = m_userScripts.find(&world);
- if (it == m_userScripts.end())
- return;
-
- auto& scripts = it->value;
- for (int i = scripts.size() - 1; i >= 0; --i) {
- if (scripts[i].first == userScriptIdentifier)
- scripts.remove(i);
- }
-
- if (scripts.isEmpty())
- m_userScripts.remove(it);
-}
-
-void WebUserContentController::removeUserScripts(InjectedBundleScriptWorld& world)
-{
- m_userScripts.remove(&world);
-}
-
-void WebUserContentController::addUserStyleSheetInternal(InjectedBundleScriptWorld& world, uint64_t userStyleSheetIdentifier, UserStyleSheet&& userStyleSheet)
-{
- auto& styleSheetsInWorld = m_userStyleSheets.ensure(&world, [] { return Vector<std::pair<uint64_t, WebCore::UserStyleSheet>>(); }).iterator->value;
- styleSheetsInWorld.append(std::make_pair(userStyleSheetIdentifier, WTFMove(userStyleSheet)));
-
- invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
-}
-
-void WebUserContentController::addUserStyleSheet(InjectedBundleScriptWorld& world, UserStyleSheet&& userStyleSheet)
-{
- addUserStyleSheetInternal(world, 0, WTFMove(userStyleSheet));
-}
-
-void WebUserContentController::removeUserStyleSheetWithURL(InjectedBundleScriptWorld& world, const URL& url)
-{
- auto it = m_userStyleSheets.find(&world);
- if (it == m_userStyleSheets.end())
- return;
-
- auto& stylesheets = it->value;
-
- bool sheetsChanged = false;
- for (int i = stylesheets.size() - 1; i >= 0; --i) {
- if (stylesheets[i].second.url() == url) {
- stylesheets.remove(i);
- sheetsChanged = true;
- }
- }
-
- if (!sheetsChanged)
- return;
-
- if (stylesheets.isEmpty())
- m_userStyleSheets.remove(it);
-
- invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
-}
-
-void WebUserContentController::removeUserStyleSheetInternal(InjectedBundleScriptWorld& world, uint64_t userStyleSheetIdentifier)
-{
- auto it = m_userStyleSheets.find(&world);
- if (it == m_userStyleSheets.end())
- return;
-
- auto& stylesheets = it->value;
-
- bool sheetsChanged = false;
- for (int i = stylesheets.size() - 1; i >= 0; --i) {
- if (stylesheets[i].first == userStyleSheetIdentifier) {
- stylesheets.remove(i);
- sheetsChanged = true;
- }
- }
-
- if (!sheetsChanged)
- return;
-
- if (stylesheets.isEmpty())
- m_userStyleSheets.remove(it);
-
- invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
-}
-
-void WebUserContentController::removeUserStyleSheets(InjectedBundleScriptWorld& world)
-{
- if (!m_userStyleSheets.remove(&world))
- return;
-
- invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
-}
-
-void WebUserContentController::removeAllUserContent()
-{
- m_userScripts.clear();
-
- if (!m_userStyleSheets.isEmpty()) {
- m_userStyleSheets.clear();
- invalidateInjectedStyleSheetCacheInAllFramesInAllPages();
- }
-}
-
-void WebUserContentController::forEachUserScript(const std::function<void(WebCore::DOMWrapperWorld&, const WebCore::UserScript&)>& functor) const
-{
- for (const auto& worldAndUserScriptVector : m_userScripts) {
- auto& world = worldAndUserScriptVector.key->coreWorld();
- for (const auto& identifierUserScriptPair : worldAndUserScriptVector.value)
- functor(world, identifierUserScriptPair.second);
- }
-}
-
-void WebUserContentController::forEachUserStyleSheet(const std::function<void(const WebCore::UserStyleSheet&)>& functor) const
-{
- for (auto& styleSheetVector : m_userStyleSheets.values()) {
- for (const auto& identifierUserStyleSheetPair : styleSheetVector)
- functor(identifierUserStyleSheetPair.second);
- }
-}
-
</del><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessUserContentWebUserContentControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -28,64 +28,40 @@
</span><span class="cx">
</span><span class="cx"> #include "MessageReceiver.h"
</span><span class="cx"> #include "WebScriptMessageHandler.h"
</span><del>-#include "WebUserContentControllerDataTypes.h"
-#include <WebCore/UserContentProvider.h>
</del><ins>+#include <WebCore/UserContentController.h>
</ins><span class="cx"> #include <wtf/HashMap.h>
</span><ins>+#include <wtf/RefCounted.h>
</ins><span class="cx">
</span><del>-#if ENABLE(CONTENT_EXTENSIONS)
-#include <WebCore/ContentExtensionsBackend.h>
-#endif
-
-namespace WebCore {
-namespace ContentExtensions {
-class CompiledContentExtension;
-}
-}
-
</del><span class="cx"> namespace WebKit {
</span><span class="cx">
</span><span class="cx"> class InjectedBundleScriptWorld;
</span><span class="cx"> class WebCompiledContentExtensionData;
</span><span class="cx"> class WebUserMessageHandlerDescriptorProxy;
</span><span class="cx">
</span><del>-class WebUserContentController final : public WebCore::UserContentProvider, private IPC::MessageReceiver {
</del><ins>+class WebUserContentController final : public RefCounted<WebUserContentController>, private IPC::MessageReceiver {
</ins><span class="cx"> public:
</span><span class="cx"> static Ref<WebUserContentController> getOrCreate(uint64_t identifier);
</span><span class="cx"> virtual ~WebUserContentController();
</span><span class="cx">
</span><ins>+ WebCore::UserContentController& userContentController() { return m_userContentController; }
+
</ins><span class="cx"> uint64_t identifier() { return m_identifier; }
</span><span class="cx">
</span><del>- void addUserScript(InjectedBundleScriptWorld&, WebCore::UserScript&&);
- void removeUserScriptWithURL(InjectedBundleScriptWorld&, const WebCore::URL&);
- void removeUserScripts(InjectedBundleScriptWorld&);
- void addUserStyleSheet(InjectedBundleScriptWorld&, WebCore::UserStyleSheet&&);
- void removeUserStyleSheetWithURL(InjectedBundleScriptWorld&, const WebCore::URL&);
- void removeUserStyleSheets(InjectedBundleScriptWorld&);
- void removeAllUserContent();
-
</del><span class="cx"> private:
</span><span class="cx"> explicit WebUserContentController(uint64_t identifier);
</span><span class="cx">
</span><del>- // WebCore::UserContentProvider
- void forEachUserScript(const std::function<void(WebCore::DOMWrapperWorld&, const WebCore::UserScript&)>&) const override;
- void forEachUserStyleSheet(const std::function<void(const WebCore::UserStyleSheet&)>&) const override;
- const WebCore::UserMessageHandlerDescriptorMap& userMessageHandlerDescriptors() const override { return m_userMessageHandlerDescriptorsMap; }
-#if ENABLE(CONTENT_EXTENSIONS)
- WebCore::ContentExtensions::ContentExtensionsBackend& userContentExtensionBackend() override { return m_contentExtensionBackend; }
-#endif
-
</del><span class="cx"> // IPC::MessageReceiver.
</span><span class="cx"> void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override;
</span><span class="cx">
</span><span class="cx"> void addUserContentWorlds(const Vector<std::pair<uint64_t, String>>&);
</span><span class="cx"> void removeUserContentWorlds(const Vector<uint64_t>&);
</span><span class="cx">
</span><del>- void addUserScripts(const Vector<WebUserScriptData>&);
- void removeUserScript(uint64_t worldIdentifier, uint64_t userScriptIdentifier);
</del><ins>+ void addUserScripts(const Vector<std::pair<uint64_t, WebCore::UserScript>>&);
+ void removeUserScript(uint64_t worldIdentifier, const String& urlString);
</ins><span class="cx"> void removeAllUserScripts(const Vector<uint64_t>&);
</span><span class="cx">
</span><del>- void addUserStyleSheets(const Vector<WebUserStyleSheetData>&);
- void removeUserStyleSheet(uint64_t worldIdentifier, uint64_t userScriptIdentifier);
</del><ins>+ void addUserStyleSheets(const Vector<std::pair<uint64_t, WebCore::UserStyleSheet>>&);
+ void removeUserStyleSheet(uint64_t worldIdentifier, const String& urlString);
</ins><span class="cx"> void removeAllUserStyleSheets(const Vector<uint64_t>&);
</span><span class="cx">
</span><span class="cx"> void addUserScriptMessageHandlers(const Vector<WebScriptMessageHandlerHandle>&);
</span><span class="lines">@@ -97,27 +73,11 @@
</span><span class="cx"> void removeAllUserContentExtensions();
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-
- void addUserScriptInternal(InjectedBundleScriptWorld&, uint64_t userScriptIdentifier, WebCore::UserScript&&);
- void removeUserScriptInternal(InjectedBundleScriptWorld&, uint64_t userScriptIdentifier);
- void addUserStyleSheetInternal(InjectedBundleScriptWorld&, uint64_t userStyleSheetIdentifier, WebCore::UserStyleSheet&&);
- void removeUserStyleSheetInternal(InjectedBundleScriptWorld&, uint64_t userStyleSheetIdentifier);
-
-
</del><span class="cx"> uint64_t m_identifier;
</span><ins>+ Ref<WebCore::UserContentController> m_userContentController;
+#if ENABLE(USER_MESSAGE_HANDLERS)
</ins><span class="cx"> HashMap<uint64_t, RefPtr<WebUserMessageHandlerDescriptorProxy>> m_userMessageHandlerDescriptors;
</span><del>-
- typedef HashMap<RefPtr<InjectedBundleScriptWorld>, Vector<std::pair<uint64_t, WebCore::UserScript>>> WorldToUserScriptMap;
- WorldToUserScriptMap m_userScripts;
-
- typedef HashMap<RefPtr<InjectedBundleScriptWorld>, Vector<std::pair<uint64_t, WebCore::UserStyleSheet>>> WorldToUserStyleSheetMap;
- WorldToUserStyleSheetMap m_userStyleSheets;
-
- WebCore::UserMessageHandlerDescriptorMap m_userMessageHandlerDescriptorsMap;
-#if ENABLE(CONTENT_EXTENSIONS)
- WebCore::ContentExtensions::ContentExtensionsBackend m_contentExtensionBackend;
</del><span class="cx"> #endif
</span><del>-
</del><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessUserContentWebUserContentControllermessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.messages.in (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.messages.in        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.messages.in        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -27,12 +27,12 @@
</span><span class="cx"> AddUserContentWorlds(Vector<std::pair<uint64_t, String>> worlds);
</span><span class="cx"> RemoveUserContentWorlds(Vector<uint64_t> worldIdentifiers);
</span><span class="cx">
</span><del>- AddUserScripts(Vector<struct WebKit::WebUserScriptData> userScripts);
- RemoveUserScript(uint64_t worldIdentifier, uint64_t identifier);
</del><ins>+ AddUserScripts(Vector<std::pair<uint64_t, WebCore::UserScript>> userScripts);
+ RemoveUserScript(uint64_t worldIdentifier, String url);
</ins><span class="cx"> RemoveAllUserScripts(Vector<uint64_t> worldIdentifiers);
</span><span class="cx">
</span><del>- AddUserStyleSheets(Vector<struct WebKit::WebUserStyleSheetData> userStyleSheets);
- RemoveUserStyleSheet(uint64_t worldIdentifier, uint64_t identifier);
</del><ins>+ AddUserStyleSheets(Vector<std::pair<uint64_t, WebCore::UserStyleSheet>> userStyleSheets);
+ RemoveUserStyleSheet(uint64_t worldIdentifier, String url);
</ins><span class="cx"> RemoveAllUserStyleSheets(Vector<uint64_t> worldIdentifiers);
</span><span class="cx">
</span><span class="cx"> AddUserScriptMessageHandlers(Vector<WebKit::WebScriptMessageHandlerHandle> scriptMessageHandlers);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx"> #include "EventDispatcher.h"
</span><span class="cx"> #include "InjectedBundle.h"
</span><span class="cx"> #include "InjectedBundleBackForwardList.h"
</span><del>-#include "InjectedBundleScriptWorld.h"
</del><span class="cx"> #include "Logging.h"
</span><span class="cx"> #include "NetscapePlugin.h"
</span><span class="cx"> #include "NotificationPermissionRequestManager.h"
</span><span class="lines">@@ -397,7 +396,7 @@
</span><span class="cx">
</span><span class="cx"> pageConfiguration.databaseProvider = WebDatabaseProvider::getOrCreate(m_pageGroup->pageGroupID());
</span><span class="cx"> pageConfiguration.storageNamespaceProvider = WebStorageNamespaceProvider::getOrCreate(m_pageGroup->pageGroupID());
</span><del>- pageConfiguration.userContentProvider = m_userContentController.ptr();
</del><ins>+ pageConfiguration.userContentController = &m_userContentController->userContentController();
</ins><span class="cx"> pageConfiguration.visitedLinkStore = VisitedLinkTableController::getOrCreate(parameters.visitedLinkTableID);
</span><span class="cx">
</span><span class="cx"> #if USE(APPLE_INTERNAL_SDK)
</span><span class="lines">@@ -5217,21 +5216,21 @@
</span><span class="cx">
</span><span class="cx"> void WebPage::addUserScript(const String& source, WebCore::UserContentInjectedFrames injectedFrames, WebCore::UserScriptInjectionTime injectionTime)
</span><span class="cx"> {
</span><del>- WebCore::UserScript userScript{ source, WebCore::blankURL(), Vector<String>(), Vector<String>(), injectionTime, injectedFrames };
</del><ins>+ WebCore::UserScript userScript(source, WebCore::blankURL(), Vector<String>(), Vector<String>(), injectionTime, injectedFrames);
</ins><span class="cx">
</span><del>- m_userContentController->addUserScript(*InjectedBundleScriptWorld::normalWorld(), WTFMove(userScript));
</del><ins>+ m_userContentController->userContentController().addUserScript(mainThreadNormalWorld(), std::make_unique<WebCore::UserScript>(userScript));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPage::addUserStyleSheet(const String& source, WebCore::UserContentInjectedFrames injectedFrames)
</span><span class="cx"> {
</span><del>- WebCore::UserStyleSheet userStyleSheet{ source, WebCore::blankURL(), Vector<String>(), Vector<String>(), injectedFrames, UserStyleUserLevel };
</del><ins>+ WebCore::UserStyleSheet userStyleSheet(source, WebCore::blankURL(), Vector<String>(), Vector<String>(), injectedFrames, UserStyleUserLevel);
</ins><span class="cx">
</span><del>- m_userContentController->addUserStyleSheet(*InjectedBundleScriptWorld::normalWorld(), WTFMove(userStyleSheet));
</del><ins>+ m_userContentController->userContentController().addUserStyleSheet(mainThreadNormalWorld(), std::make_unique<WebCore::UserStyleSheet>(userStyleSheet), InjectInExistingDocuments);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPage::removeAllUserContent()
</span><span class="cx"> {
</span><del>- m_userContentController->removeAllUserContent();
</del><ins>+ m_userContentController->userContentController().removeAllUserContent();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPage::dispatchDidLayout(WebCore::LayoutMilestones milestones)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageGroupProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -56,9 +56,9 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-WebUserContentController& WebPageGroupProxy::userContentController()
</del><ins>+WebCore::UserContentController& WebPageGroupProxy::userContentController()
</ins><span class="cx"> {
</span><del>- return m_userContentController;
</del><ins>+ return m_userContentController->userContentController();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageGroupProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h (197949 => 197950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h        2016-03-10 20:09:58 UTC (rev 197949)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h        2016-03-10 20:46:57 UTC (rev 197950)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> class PageGroup;
</span><ins>+class UserContentController;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -49,7 +50,7 @@
</span><span class="cx"> bool isVisibleToHistoryClient() const { return m_data.visibleToHistoryClient; }
</span><span class="cx"> WebCore::PageGroup* corePageGroup() const { return m_pageGroup; }
</span><span class="cx">
</span><del>- WebUserContentController& userContentController();
</del><ins>+ WebCore::UserContentController& userContentController();
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> WebPageGroupProxy(const WebPageGroupData&);
</span></span></pre>
</div>
</div>
</body>
</html>