Changeset 176542 in webkit
- Timestamp:
- Nov 25, 2014, 8:16:15 AM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 7 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/WebCore.exp.in (modified) (2 diffs)
-
WebCore/page/Page.cpp (modified) (1 diff)
-
WebKit/mac/ChangeLog (modified) (1 diff)
-
WebKit/mac/WebCoreSupport/WebViewGroup.h (modified) (3 diffs)
-
WebKit/mac/WebCoreSupport/WebViewGroup.mm (modified) (2 diffs)
-
WebKit/mac/WebView/WebView.mm (modified) (21 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r176541 r176542 1 2014-11-25 Anders Carlsson <andersca@apple.com> 2 3 Add a user content controller to WebViewGroup and use it for user content 4 https://bugs.webkit.org/show_bug.cgi?id=139043 5 6 Reviewed by Antti Koivisto. 7 8 * WebCore.exp.in: 9 Export symbols. 10 11 * page/Page.cpp: 12 (WebCore::Page::setUserContentController): 13 Invalidate the injected style cache when setting a new user content controller. 14 1 15 2014-11-25 Philippe Normand <pnormand@igalia.com> 2 16 -
trunk/Source/WebCore/WebCore.exp.in
r176509 r176542 958 958 __ZN7WebCore21URLByRemovingUserInfoEP5NSURL 959 959 __ZN7WebCore21UserContentController13addUserScriptERNS_15DOMWrapperWorldENSt3__110unique_ptrINS_10UserScriptENS3_14default_deleteIS5_EEEE 960 __ZN7WebCore21UserContentController16removeUserScriptERNS_15DOMWrapperWorldERKNS_3URLE 960 961 __ZN7WebCore21UserContentController17addUserStyleSheetERNS_15DOMWrapperWorldENSt3__110unique_ptrINS_14UserStyleSheetENS3_14default_deleteIS5_EEEENS_22UserStyleInjectionTimeE 961 962 __ZN7WebCore21UserContentController17removeUserScriptsERNS_15DOMWrapperWorldE 963 __ZN7WebCore21UserContentController20removeAllUserContentEv 964 __ZN7WebCore21UserContentController20removeUserStyleSheetERNS_15DOMWrapperWorldERKNS_3URLE 962 965 __ZN7WebCore21UserContentController21removeUserStyleSheetsERNS_15DOMWrapperWorldE 963 966 __ZN7WebCore21UserContentController31addUserMessageHandlerDescriptorERNS_28UserMessageHandlerDescriptorE … … 1166 1169 __ZN7WebCore4Page24resumeScriptedAnimationsEv 1167 1170 __ZN7WebCore4Page24scrollingStateTreeAsTextEv 1171 __ZN7WebCore4Page24setUserContentControllerEPNS_21UserContentControllerE 1168 1172 __ZN7WebCore4Page25suspendScriptedAnimationsEv 1169 1173 __ZN7WebCore4Page27enableLegacyPrivateBrowsingEb -
trunk/Source/WebCore/page/Page.cpp
r176499 r176542 1621 1621 if (m_userContentController) 1622 1622 m_userContentController->addPage(*this); 1623 1624 for (Frame* frame = &mainFrame(); frame; frame = frame->tree().traverseNext()) { 1625 if (Document *document = frame->document()) { 1626 document->styleSheetCollection().invalidateInjectedStyleSheetCache(); 1627 document->styleResolverChanged(DeferRecalcStyle); 1628 } 1629 } 1623 1630 } 1624 1631 -
trunk/Source/WebKit/mac/ChangeLog
r176499 r176542 1 2014-11-25 Anders Carlsson <andersca@apple.com> 2 3 Add a user content controller to WebViewGroup and use it for user content 4 https://bugs.webkit.org/show_bug.cgi?id=139043 5 6 Reviewed by Antti Koivisto. 7 8 This is another tiny step towards getting rid of user content handling inside PageGroup. 9 10 * WebCoreSupport/WebViewGroup.h: 11 (WebViewGroup::userContentController): 12 Add a UserContentController member and getter. 13 14 * WebCoreSupport/WebViewGroup.mm: 15 (WebViewGroup::get): 16 Helper function that returns a WebViewGroup by its name (or null if it doesn't exist). 17 18 (WebViewGroup::WebViewGroup): 19 Create a user content controller. 20 21 * WebView/WebView.mm: 22 (-[WebView _commonInitializationWithFrameName:groupName:]): 23 Instead of calling -[WebView setGroupName:], create a WebViewGroup before creating the page, that way we can 24 set its user content controller in the PageConfiguration. 25 26 (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]): 27 Ditto. 28 29 (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): 30 (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): 31 (+[WebView _removeUserScriptFromGroup:world:url:]): 32 (+[WebView _removeUserStyleSheetFromGroup:world:url:]): 33 (+[WebView _removeUserScriptsFromGroup:world:]): 34 (+[WebView _removeUserStyleSheetsFromGroup:world:]): 35 (+[WebView _removeAllUserContentFromGroup:]): 36 Instead of calling into the PageGroup, get the WebViewGroup's user content controller and call into that. 37 38 (-[WebView setGroupName:]): 39 Set the user content controller to the new WebViewGroup's user content controller. 40 1 41 2014-11-21 Jer Noble <jer.noble@apple.com> 2 42 -
trunk/Source/WebKit/mac/WebCoreSupport/WebViewGroup.h
r164618 r176542 24 24 */ 25 25 26 #import <wtf/HashSet.h> 27 #import <wtf/RefCounted.h> 28 #import <wtf/PassRefPtr.h> 29 #import <wtf/text/WTFString.h> 26 #import <WebCore/UserContentController.h> 30 27 31 28 @class WebView; … … 36 33 ~WebViewGroup(); 37 34 35 static WebViewGroup* get(const String& name); 36 38 37 void addWebView(WebView *); 39 38 void removeWebView(WebView *); 40 39 40 WebCore::UserContentController& userContentController() { return m_userContentController.get(); } 41 41 42 private: 42 43 WebViewGroup(const String& name); … … 44 45 String m_name; 45 46 HashSet<WebView *> m_webViews; 47 48 Ref<WebCore::UserContentController> m_userContentController; 46 49 }; -
trunk/Source/WebKit/mac/WebCoreSupport/WebViewGroup.mm
r164618 r176542 27 27 28 28 #import "WebView.h" 29 #import <wtf/HashMap.h>30 29 #import <wtf/NeverDestroyed.h> 31 #import <wtf/RefPtr.h>32 30 #import <wtf/text/StringHash.h> 31 32 using namespace WebCore; 33 33 34 34 // Any named groups will live for the lifetime of the process, thanks to the reference held by the RefPtr. … … 52 52 } 53 53 54 WebViewGroup* WebViewGroup::get(const String& name) 55 { 56 ASSERT(!name.isEmpty()); 57 58 return webViewGroups().get(name); 59 } 60 54 61 WebViewGroup::WebViewGroup(const String& name) 55 62 : m_name(name) 63 , m_userContentController(*UserContentController::create()) 56 64 { 57 65 } -
trunk/Source/WebKit/mac/WebView/WebView.mm
r176499 r176542 177 177 #import <WebCore/ThreadCheck.h> 178 178 #import <WebCore/UserAgent.h> 179 #import <WebCore/UserContentController.h> 179 180 #import <WebCore/WebCoreObjCExtras.h> 180 181 #import <WebCore/WebCoreView.h> … … 920 921 } 921 922 923 _private->group = WebViewGroup::getOrCreate(groupName); 924 _private->group->addWebView(self); 925 922 926 PageConfiguration pageConfiguration; 923 927 #if !PLATFORM(IOS) … … 936 940 pageConfiguration.loaderClientForMainFrame = new WebFrameLoaderClient; 937 941 pageConfiguration.progressTrackerClient = new WebProgressTrackerClient(self); 942 pageConfiguration.userContentController = &_private->group->userContentController(); 938 943 _private->page = new Page(pageConfiguration); 944 945 _private->page->setGroupName(groupName); 946 939 947 #if ENABLE(GEOLOCATION) 940 948 WebCore::provideGeolocationTo(_private->page, new WebGeolocationClient(self)); … … 993 1001 994 1002 [self _addToAllWebViewsSet]; 995 [self setGroupName:groupName];996 1003 997 1004 // If there's already a next key view (e.g., from a nib), wire it up to our … … 1156 1163 [frameView release]; 1157 1164 1158 1165 _private->group = WebViewGroup::getOrCreate(groupName); 1166 _private->group->addWebView(self); 1167 1159 1168 PageConfiguration pageConfiguration; 1160 1169 pageConfiguration.chromeClient = new WebChromeClientIOS(self); … … 1166 1175 pageConfiguration.loaderClientForMainFrame = new WebFrameLoaderClient; 1167 1176 pageConfiguration.progressTrackerClient = new WebProgressTrackerClient(self); 1177 pageConfiguration.userContentController = &_private->group->userContentController(); 1178 1168 1179 _private->page = new Page(pageConfiguration); 1169 1180 … … 1193 1204 _private->page->settings().setMinimumFontSize([_private->preferences minimumFontSize]); 1194 1205 1195 [self setGroupName:groupName];1206 _private->page->setGroupName(groupName); 1196 1207 1197 1208 #if ENABLE(REMOTE_INSPECTOR) … … 3996 4007 if (group.isEmpty()) 3997 4008 return; 3998 3999 PageGroup* pageGroup = PageGroup::pageGroup(group);4000 if (! pageGroup)4009 4010 auto* viewGroup = WebViewGroup::get(group); 4011 if (!viewGroup) 4001 4012 return; 4002 4013 … … 4004 4015 return; 4005 4016 4006 pageGroup->addUserScriptToWorld(*core(world), source, url, toStringVector(whitelist), toStringVector(blacklist), 4007 injectionTime == WebInjectAtDocumentStart ? InjectAtDocumentStart : InjectAtDocumentEnd, 4008 injectedFrames == WebInjectInAllFrames ? InjectInAllFrames : InjectInTopFrameOnly); 4017 auto userScript = std::make_unique<UserScript>(source, url, toStringVector(whitelist), toStringVector(blacklist), injectionTime == WebInjectAtDocumentStart ? InjectAtDocumentStart : InjectAtDocumentEnd, injectedFrames == WebInjectInAllFrames ? InjectInAllFrames : InjectInTopFrameOnly); 4018 viewGroup->userContentController().addUserScript(*core(world), WTF::move(userScript)); 4009 4019 } 4010 4020 … … 4022 4032 if (group.isEmpty()) 4023 4033 return; 4024 4025 PageGroup* pageGroup = PageGroup::pageGroup(group);4026 if (! pageGroup)4034 4035 auto* viewGroup = WebViewGroup::get(group); 4036 if (!viewGroup) 4027 4037 return; 4028 4038 … … 4030 4040 return; 4031 4041 4032 pageGroup->addUserStyleSheetToWorld(*core(world), source, url, toStringVector(whitelist), toStringVector(blacklist), injectedFrames == WebInjectInAllFrames ? InjectInAllFrames : InjectInTopFrameOnly); 4042 auto styleSheet = std::make_unique<UserStyleSheet>(source, url, toStringVector(whitelist), toStringVector(blacklist), injectedFrames == WebInjectInAllFrames ? InjectInAllFrames : InjectInTopFrameOnly, UserStyleUserLevel); 4043 viewGroup->userContentController().addUserStyleSheet(*core(world), WTF::move(styleSheet), InjectInExistingDocuments); 4033 4044 } 4034 4045 … … 4038 4049 if (group.isEmpty()) 4039 4050 return; 4040 4041 PageGroup* pageGroup = PageGroup::pageGroup(group);4042 if (! pageGroup)4051 4052 auto* viewGroup = WebViewGroup::get(group); 4053 if (!viewGroup) 4043 4054 return; 4044 4055 … … 4046 4057 return; 4047 4058 4048 pageGroup->removeUserScriptFromWorld(*core(world), url);4059 viewGroup->userContentController().removeUserScript(*core(world), url); 4049 4060 } 4050 4061 … … 4054 4065 if (group.isEmpty()) 4055 4066 return; 4056 4057 PageGroup* pageGroup = PageGroup::pageGroup(group);4058 if (! pageGroup)4067 4068 auto* viewGroup = WebViewGroup::get(group); 4069 if (!viewGroup) 4059 4070 return; 4060 4071 … … 4062 4073 return; 4063 4074 4064 pageGroup->removeUserStyleSheetFromWorld(*core(world), url);4075 viewGroup->userContentController().removeUserStyleSheet(*core(world), url); 4065 4076 } 4066 4077 … … 4070 4081 if (group.isEmpty()) 4071 4082 return; 4072 4073 PageGroup* pageGroup = PageGroup::pageGroup(group);4074 if (! pageGroup)4083 4084 auto* viewGroup = WebViewGroup::get(group); 4085 if (!viewGroup) 4075 4086 return; 4076 4087 … … 4078 4089 return; 4079 4090 4080 pageGroup->removeUserScriptsFromWorld(*core(world));4091 viewGroup->userContentController().removeUserScripts(*core(world)); 4081 4092 } 4082 4093 … … 4086 4097 if (group.isEmpty()) 4087 4098 return; 4088 4089 PageGroup* pageGroup = PageGroup::pageGroup(group);4090 if (! pageGroup)4099 4100 auto* viewGroup = WebViewGroup::get(group); 4101 if (!viewGroup) 4091 4102 return; 4092 4103 … … 4094 4105 return; 4095 4106 4096 pageGroup->removeUserStyleSheetsFromWorld(*core(world));4107 viewGroup->userContentController().removeUserStyleSheets(*core(world)); 4097 4108 } 4098 4109 … … 4102 4113 if (group.isEmpty()) 4103 4114 return; 4104 4105 PageGroup* pageGroup = PageGroup::pageGroup(group);4106 if (! pageGroup)4107 return; 4108 4109 pageGroup->removeAllUserContent();4115 4116 auto* viewGroup = WebViewGroup::get(group); 4117 if (!viewGroup) 4118 return; 4119 4120 viewGroup->userContentController().removeAllUserContent(); 4110 4121 } 4111 4122 … … 6103 6114 if (!_private->page) 6104 6115 return; 6116 6117 _private->page->setUserContentController(&_private->group->userContentController()); 6105 6118 _private->page->setGroupName(groupName); 6106 6119 }
Note:
See TracChangeset
for help on using the changeset viewer.