Changeset 196341 in webkit
- Timestamp:
- Feb 9, 2016 3:04:27 PM (8 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r196331 r196341 1 2016-02-09 Anders Carlsson <andersca@apple.com> 2 3 Add SPI to remove individual user scripts or user style sheets 4 https://bugs.webkit.org/show_bug.cgi?id=154046 5 rdar://problem/23596352 6 7 Reviewed by Sam Weinig. 8 9 * UIProcess/API/Cocoa/WKUserContentController.mm: 10 (-[WKUserContentController _removeUserScript:]): 11 (-[WKUserContentController _userStyleSheets]): 12 (-[WKUserContentController _addUserStyleSheet:]): 13 (-[WKUserContentController _removeUserStyleSheet:]): 14 * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h: 15 * UIProcess/UserContent/WebUserContentControllerProxy.cpp: 16 (WebKit::WebUserContentControllerProxy::WebUserContentControllerProxy): 17 (WebKit::WebUserContentControllerProxy::addProcess): 18 (WebKit::WebUserContentControllerProxy::removeUserScript): 19 (WebKit::WebUserContentControllerProxy::addUserStyleSheet): 20 (WebKit::WebUserContentControllerProxy::removeUserStyleSheet): 21 (WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets): 22 * UIProcess/UserContent/WebUserContentControllerProxy.h: 23 (WebKit::WebUserContentControllerProxy::userStyleSheets): 24 * WebProcess/UserContent/WebUserContentController.cpp: 25 (WebKit::WebUserContentController::removeUserScript): 26 (WebKit::WebUserContentController::removeUserStyleSheet): 27 * WebProcess/UserContent/WebUserContentController.h: 28 * WebProcess/UserContent/WebUserContentController.messages.in: 29 1 30 2016-02-07 Gavin Barraclough <barraclough@apple.com> 2 31 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm
r191545 r196341 127 127 @implementation WKUserContentController (WKPrivate) 128 128 129 - (void)_removeUserScript:(WKUserScript *)userScript 130 { 131 _userContentControllerProxy->removeUserScript(*userScript->_userScript); 132 } 133 129 134 - (void)_addUserContentFilter:(_WKUserContentFilter *)userContentFilter 130 135 { … … 148 153 } 149 154 155 - (NSArray *)_userStyleSheets 156 { 157 return wrapper(_userContentControllerProxy->userStyleSheets()); 158 } 159 150 160 - (void)_addUserStyleSheet:(_WKUserStyleSheet *)userStyleSheet 151 161 { 152 _userContentControllerProxy->addUserStyleSheet(userStyleSheet->_userStyleSheet->userStyleSheet()); 162 _userContentControllerProxy->addUserStyleSheet(*userStyleSheet->_userStyleSheet); 163 } 164 165 - (void)_removeUserStyleSheet:(_WKUserStyleSheet *)userStyleSheet 166 { 167 _userContentControllerProxy->removeUserStyleSheet(*userStyleSheet->_userStyleSheet); 153 168 } 154 169 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentControllerPrivate.h
r191545 r196341 28 28 #if WK_API_ENABLED 29 29 30 @class WKUserScript; 30 31 @class _WKUserContentFilter; 31 32 @class _WKUserStyleSheet; … … 33 34 @interface WKUserContentController (WKPrivate) 34 35 36 - (void)_removeUserScript:(WKUserScript *)userScript WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); 37 35 38 - (void)_addUserContentFilter:(_WKUserContentFilter *)userContentFilter WK_AVAILABLE(10_11, 9_0); 36 39 - (void)_removeUserContentFilter:(NSString *)userContentFilterName WK_AVAILABLE(10_11, 9_0); 37 40 - (void)_removeAllUserContentFilters WK_AVAILABLE(10_11, 9_0); 38 41 42 @property (nonatomic, readonly, copy) WK_ARRAY(_WKUserStyleSheet *) *_userStyleSheets WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); 39 43 - (void)_addUserStyleSheet:(_WKUserStyleSheet *)userStyleSheet WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); 44 - (void)_removeUserStyleSheet:(_WKUserStyleSheet *)userStyleSheet WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); 40 45 - (void)_removeAllUserStyleSheets WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA); 41 46 -
trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp
r195235 r196341 29 29 #include "APIArray.h" 30 30 #include "APIUserScript.h" 31 #include "APIUserStyleSheet.h" 31 32 #include "DataReference.h" 32 33 #include "WebProcessProxy.h" … … 53 54 : m_identifier(generateIdentifier()) 54 55 , m_userScripts(API::Array::create()) 56 , m_userStyleSheets(API::Array::create()) 55 57 { 56 58 } … … 78 80 webProcessProxy.connection()->send(Messages::WebUserContentController::AddUserScripts(userScripts), m_identifier); 79 81 80 webProcessProxy.connection()->send(Messages::WebUserContentController::AddUserStyleSheets(m_userStyleSheets), m_identifier); 82 Vector<WebCore::UserStyleSheet> userStyleSheets; 83 for (const auto& userStyleSheet : m_userScripts->elementsOfType<API::UserStyleSheet>()) 84 userStyleSheets.append(userStyleSheet->userStyleSheet()); 85 webProcessProxy.connection()->send(Messages::WebUserContentController::AddUserStyleSheets(userStyleSheets), m_identifier); 81 86 82 87 Vector<WebScriptMessageHandlerHandle> messageHandlerHandles; … … 109 114 } 110 115 116 void WebUserContentControllerProxy::removeUserScript(const API::UserScript& userScript) 117 { 118 for (WebProcessProxy* process : m_processes) 119 process->connection()->send(Messages::WebUserContentController::RemoveUserScript({ userScript.userScript().url().string() }), m_identifier); 120 121 m_userScripts->elements().removeAll(&userScript); 122 } 123 111 124 void WebUserContentControllerProxy::removeAllUserScripts() 112 125 { … … 117 130 } 118 131 119 void WebUserContentControllerProxy::addUserStyleSheet(WebCore::UserStyleSheet userStyleSheet) 120 { 121 m_userStyleSheets.append(WTFMove(userStyleSheet)); 122 123 for (WebProcessProxy* process : m_processes) 124 process->connection()->send(Messages::WebUserContentController::AddUserStyleSheets({ m_userStyleSheets.last() }), m_identifier); 132 void WebUserContentControllerProxy::addUserStyleSheet(API::UserStyleSheet& userStyleSheet) 133 { 134 m_userStyleSheets->elements().append(&userStyleSheet); 135 136 for (WebProcessProxy* process : m_processes) 137 process->connection()->send(Messages::WebUserContentController::AddUserStyleSheets({ userStyleSheet.userStyleSheet() }), m_identifier); 138 } 139 140 void WebUserContentControllerProxy::removeUserStyleSheet(const API::UserStyleSheet& userStyleSheet) 141 { 142 for (WebProcessProxy* process : m_processes) 143 process->connection()->send(Messages::WebUserContentController::RemoveUserStyleSheet({ userStyleSheet.userStyleSheet().url().string() }), m_identifier); 144 145 m_userStyleSheets->elements().removeAll(&userStyleSheet); 125 146 } 126 147 127 148 void WebUserContentControllerProxy::removeAllUserStyleSheets() 128 149 { 129 m_userStyleSheets .clear();150 m_userStyleSheets->elements().clear(); 130 151 131 152 for (WebProcessProxy* process : m_processes) -
trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h
r189313 r196341 42 42 class UserContentExtension; 43 43 class UserScript; 44 class UserStyleSheet; 44 45 } 45 46 … … 49 50 50 51 namespace WebCore { 51 class UserScript;52 class UserStyleSheet;53 52 struct SecurityOriginData; 54 53 } … … 75 74 API::Array& userScripts() { return m_userScripts.get(); } 76 75 void addUserScript(API::UserScript&); 76 void removeUserScript(const API::UserScript&); 77 77 void removeAllUserScripts(); 78 78 79 void addUserStyleSheet(WebCore::UserStyleSheet); 79 API::Array& userStyleSheets() { return m_userStyleSheets.get(); } 80 void addUserStyleSheet(API::UserStyleSheet&); 81 void removeUserStyleSheet(const API::UserStyleSheet&); 80 82 void removeAllUserStyleSheets(); 81 83 … … 99 101 HashSet<WebProcessProxy*> m_processes; 100 102 Ref<API::Array> m_userScripts; 101 Vector<WebCore::UserStyleSheet> m_userStyleSheets;103 Ref<API::Array> m_userStyleSheets; 102 104 HashMap<uint64_t, RefPtr<WebScriptMessageHandler>> m_scriptMessageHandlers; 103 105 -
trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp
r194496 r196341 91 91 } 92 92 93 void WebUserContentController::removeUserScript(const String& urlString) 94 { 95 m_userContentController->removeUserScript(mainThreadNormalWorld(), URL(URL(), urlString)); 96 } 97 93 98 void WebUserContentController::removeAllUserScripts() 94 99 { … … 102 107 std::make_unique<WebCore::UserStyleSheet>(userStyleSheet), InjectInExistingDocuments); 103 108 } 109 } 110 111 void WebUserContentController::removeUserStyleSheet(const String& urlString) 112 { 113 m_userContentController->removeUserStyleSheet(mainThreadNormalWorld(), URL(URL(), urlString)); 104 114 } 105 115 -
trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.h
r181200 r196341 54 54 55 55 void addUserScripts(const Vector<WebCore::UserScript>&); 56 void removeUserScript(const String& urlString); 56 57 void removeAllUserScripts(); 57 58 58 59 void addUserStyleSheets(const Vector<WebCore::UserStyleSheet>&); 60 void removeUserStyleSheet(const String& urlString); 59 61 void removeAllUserStyleSheets(); 60 62 -
trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.messages.in
r181200 r196341 26 26 messages -> WebUserContentController { 27 27 AddUserScripts(Vector<WebCore::UserScript> userScripts); 28 RemoveUserScript(String url); 28 29 RemoveAllUserScripts(); 29 30 30 31 AddUserStyleSheets(Vector<WebCore::UserStyleSheet> userStyleSheets); 32 RemoveUserStyleSheet(String url); 31 33 RemoveAllUserStyleSheets(); 32 34
Note: See TracChangeset
for help on using the changeset viewer.