Changeset 261726 in webkit
- Timestamp:
- May 14, 2020 5:33:37 PM (4 years ago)
- Location:
- trunk/Source
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r261723 r261726 1 2020-05-14 Timothy Hatcher <timothy@apple.com> 2 3 Add baseURL version of _WKUserStyleSheet forWKWebView. 4 https://bugs.webkit.org/show_bug.cgi?id=211926 5 rdar://problem/62074675 6 7 Reviewed by Devin Rousso. 8 9 Consolidate the paths taken for adding a UserStyleSheet. The m_injectedStyleSheetToSource 10 was missing for page specific style sheets since it was another loop. 11 12 * dom/ExtensionStyleSheets.cpp: 13 (WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache const): 14 (WebCore::ExtensionStyleSheets::injectPageSpecificUserStyleSheet): 15 (WebCore::ExtensionStyleSheets::removePageSpecificUserStyleSheet): 16 (WebCore::ExtensionStyleSheets::detachFromDocument): 17 * dom/ExtensionStyleSheets.h: 18 1 19 2020-05-14 Jiewen Tan <jiewen_tan@apple.com> 2 20 -
trunk/Source/WebCore/dom/ExtensionStyleSheets.cpp
r260709 r261726 128 128 return; 129 129 130 for (const auto& pageSpecificStyleSheet : m_pageSpecificStyleSheets) { 131 if (pageSpecificStyleSheet->contents().isUserStyleSheet()) 132 m_injectedUserStyleSheets.append(pageSpecificStyleSheet); 130 auto addStyleSheet = [&](const UserStyleSheet& userStyleSheet) { 131 auto sheet = createExtensionsStyleSheet(const_cast<Document&>(m_document), userStyleSheet.url(), userStyleSheet.source(), userStyleSheet.level()); 132 133 m_injectedStyleSheetToSource.set(sheet.copyRef(), userStyleSheet.source()); 134 135 if (sheet->contents().isUserStyleSheet()) 136 m_injectedUserStyleSheets.append(WTFMove(sheet)); 133 137 else 134 m_injectedAuthorStyleSheets.append(pageSpecificStyleSheet); 135 } 138 m_injectedAuthorStyleSheets.append(WTFMove(sheet)); 139 }; 140 141 for (const auto& userStyleSheet : m_pageSpecificStyleSheets) 142 addStyleSheet(userStyleSheet); 136 143 137 144 owningPage->userContentProvider().forEachUserStyleSheet([&](const UserStyleSheet& userStyleSheet) { … … 145 152 return; 146 153 147 auto sheet = createExtensionsStyleSheet(const_cast<Document&>(m_document), userStyleSheet.url(), userStyleSheet.source(), userStyleSheet.level()); 148 149 m_injectedStyleSheetToSource.set(sheet.copyRef(), userStyleSheet.source()); 150 151 if (userStyleSheet.level() == UserStyleUserLevel) 152 m_injectedUserStyleSheets.append(WTFMove(sheet)); 153 else 154 m_injectedAuthorStyleSheets.append(WTFMove(sheet)); 154 addStyleSheet(userStyleSheet); 155 155 }); 156 156 } … … 158 158 void ExtensionStyleSheets::injectPageSpecificUserStyleSheet(const UserStyleSheet& userStyleSheet) 159 159 { 160 auto sheet = createExtensionsStyleSheet(const_cast<Document&>(m_document), userStyleSheet.url(), userStyleSheet.source(), userStyleSheet.level()); 161 m_pageSpecificStyleSheets.append(WTFMove(sheet)); 160 m_pageSpecificStyleSheets.append(userStyleSheet); 162 161 invalidateInjectedStyleSheetCache(); 163 162 } … … 165 164 void ExtensionStyleSheets::removePageSpecificUserStyleSheet(const UserStyleSheet& userStyleSheet) 166 165 { 167 bool removedStyleSheet = m_pageSpecificStyleSheets.removeFirstMatching([ userStyleSheet](auto& cssStyleSheet) {168 return cssStyleSheet->contents().originalURL() == userStyleSheet.url();166 bool removedStyleSheet = m_pageSpecificStyleSheets.removeFirstMatching([&](const auto& styleSheet) { 167 return styleSheet.url() == userStyleSheet.url(); 169 168 }); 170 169 … … 238 237 for (auto& sheet : m_authorStyleSheetsForTesting) 239 238 sheet->detachFromDocument(); 240 for (auto& sheet : m_pageSpecificStyleSheets) 241 sheet->detachFromDocument(); 242 } 243 244 } 239 } 240 241 } -
trunk/Source/WebCore/dom/ExtensionStyleSheets.h
r257939 r261726 28 28 #pragma once 29 29 30 #include "UserStyleSheet.h" 30 31 #include <memory> 31 32 #include <wtf/FastMalloc.h> … … 47 48 class StyleSheetContents; 48 49 class StyleSheetList; 49 class UserStyleSheet;50 50 51 51 class ExtensionStyleSheets { … … 93 93 Vector<RefPtr<CSSStyleSheet>> m_userStyleSheets; 94 94 Vector<RefPtr<CSSStyleSheet>> m_authorStyleSheetsForTesting; 95 Vector< RefPtr<CSSStyleSheet>> m_pageSpecificStyleSheets;95 Vector<UserStyleSheet> m_pageSpecificStyleSheets; 96 96 97 97 #if ENABLE(CONTENT_EXTENSIONS) -
trunk/Source/WebKit/ChangeLog
r261724 r261726 1 2020-05-14 Timothy Hatcher <timothy@apple.com> 2 3 Add baseURL version of _WKUserStyleSheet forWKWebView. 4 https://bugs.webkit.org/show_bug.cgi?id=211926 5 rdar://problem/62074675 6 7 Reviewed by Devin Rousso. 8 9 * UIProcess/API/Cocoa/_WKUserStyleSheet.h: 10 * UIProcess/API/Cocoa/_WKUserStyleSheet.mm: 11 (-[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:baseURL:level:userContentWorld:]): Added. 12 (-[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:level:userContentWorld:]): Clean up WebCore::UserStyleSheet initializer. 13 (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:]): Ditto. 14 (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:userContentWorld:]): Ditto. 15 (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]): Ditto. 16 (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:level:userContentWorld:]): Ditto. 17 1 18 2020-05-14 John Wilander <wilander@apple.com> 2 19 -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.h
r260334 r261726 50 50 #pragma clang diagnostic ignored "-Wdeprecated-declarations" 51 51 - (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly level:(_WKUserStyleLevel)level userContentWorld:(_WKUserContentWorld *)userContentWorld WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 52 - (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly baseURL:(NSURL *)baseURL level:(_WKUserStyleLevel)level userContentWorld:(_WKUserContentWorld *)userContentWorld WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 52 53 - (instancetype)initWithSource:(NSString *)source forMainFrameOnly:(BOOL)forMainFrameOnly legacyWhitelist:(NSArray<NSString *> *)legacyWhitelist legacyBlacklist:(NSArray<NSString *> *)legacyBlacklist userContentWorld:(_WKUserContentWorld *)userContentWorld; 53 54 - (instancetype)initWithSource:(NSString *)source forMainFrameOnly:(BOOL)forMainFrameOnly legacyWhitelist:(NSArray<NSString *> *)legacyWhitelist legacyBlacklist:(NSArray<NSString *> *)legacyBlacklist baseURL:(NSURL *)baseURL userContentWorld:(_WKUserContentWorld *)userContentWorld; -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm
r260254 r261726 46 46 WebKit::InitializeWebKit2(); 47 47 48 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { WTF::String(source), API::UserStyleSheet::generateUniqueURL(), { }, { }, forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, WebCore::UserStyleUserLevel }, API::ContentWorld::pageContentWorld());48 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { source, API::UserStyleSheet::generateUniqueURL(), { }, { }, forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, WebCore::UserStyleUserLevel }, API::ContentWorld::pageContentWorld()); 49 49 50 50 return self; … … 60 60 WebKit::InitializeWebKit2(); 61 61 62 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { WTF::String(source), API::UserStyleSheet::generateUniqueURL(), { }, { }, forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, API::toWebCoreUserStyleLevel(level), [webView _page]->webPageID() }, *userContentWorld->_contentWorld->_contentWorld); 62 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { source, API::UserStyleSheet::generateUniqueURL(), { }, { }, forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, API::toWebCoreUserStyleLevel(level), [webView _page]->webPageID() }, *userContentWorld->_contentWorld->_contentWorld); 63 64 return self; 65 } 66 67 - (instancetype)initWithSource:(NSString *)source forWKWebView:(WKWebView *)webView forMainFrameOnly:(BOOL)forMainFrameOnly baseURL:(NSURL *)baseURL level:(_WKUserStyleLevel)level userContentWorld:(_WKUserContentWorld *)userContentWorld 68 { 69 if (!(self = [super init])) 70 return nil; 71 72 // FIXME: In the API test, we can use generateUniqueURL below before the API::Object constructor has done this... where should this really be? 73 WebKit::InitializeWebKit2(); 74 75 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { source, baseURL, { }, { }, forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, API::toWebCoreUserStyleLevel(level), [webView _page]->webPageID() }, *userContentWorld->_contentWorld->_contentWorld); 63 76 64 77 return self; … … 73 86 WebKit::InitializeWebKit2(); 74 87 75 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { WTF::String(source), API::UserStyleSheet::generateUniqueURL(), makeVector<String>(legacyWhitelist), makeVector<String>(legacyBlacklist), forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, WebCore::UserStyleUserLevel }, *userContentWorld->_contentWorld->_contentWorld);88 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { source, API::UserStyleSheet::generateUniqueURL(), makeVector<String>(legacyWhitelist), makeVector<String>(legacyBlacklist), forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, WebCore::UserStyleUserLevel }, *userContentWorld->_contentWorld->_contentWorld); 76 89 77 90 return self; … … 86 99 WebKit::InitializeWebKit2(); 87 100 88 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { WTF::String(source), { URL(), WTF::String([baseURL _web_originalDataAsWTFString]) }, makeVector<String>(legacyWhitelist), makeVector<String>(legacyBlacklist), forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, WebCore::UserStyleUserLevel }, *userContentWorld->_contentWorld->_contentWorld);101 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { source, baseURL, makeVector<String>(legacyWhitelist), makeVector<String>(legacyBlacklist), forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, WebCore::UserStyleUserLevel }, *userContentWorld->_contentWorld->_contentWorld); 89 102 90 103 return self; … … 99 112 WebKit::InitializeWebKit2(); 100 113 101 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { WTF::String(source), { URL(), WTF::String([baseURL _web_originalDataAsWTFString]) }, makeVector<String>(legacyWhitelist), makeVector<String>(legacyBlacklist), forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, API::toWebCoreUserStyleLevel(level) }, *userContentWorld->_contentWorld->_contentWorld);114 API::Object::constructInWrapper<API::UserStyleSheet>(self, WebCore::UserStyleSheet { source, baseURL, makeVector<String>(legacyWhitelist), makeVector<String>(legacyBlacklist), forMainFrameOnly ? WebCore::UserContentInjectedFrames::InjectInTopFrameOnly : WebCore::UserContentInjectedFrames::InjectInAllFrames, API::toWebCoreUserStyleLevel(level) }, *userContentWorld->_contentWorld->_contentWorld); 102 115 103 116 return self;
Note: See TracChangeset
for help on using the changeset viewer.