https://bugs.webkit.org/show_bug.cgi?id=145908
Patch by Hyungwook Lee <hyungwook.lee@navercorp.com> on 2015-06-26
Reviewed by Brent Fulgham.
Make WebViewGroup class sharing on Mac and Win port.
Source/WebKit:
* WebCoreSupport: Added.
* WebCoreSupport/WebViewGroup.cpp: Added.
(webViewGroups):
(WebViewGroup::getOrCreate):
(WebViewGroup::get):
(WebViewGroup::WebViewGroup):
(WebViewGroup::~WebViewGroup):
(WebViewGroup::addWebView):
(WebViewGroup::removeWebView):
(WebViewGroup::storageNamespaceProvider):
* WebCoreSupport/WebViewGroup.h: Added.
(WebViewGroup::userContentController):
(WebViewGroup::visitedLinkStore):
* WebKit.vcxproj/WebKit/WebKit.vcxproj:
* WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
* WebKit.vcxproj/WebKit/WebKitCommon.props:
* WebKit.xcodeproj/project.pbxproj:
Source/WebKit/mac:
* WebCoreSupport/WebViewGroup.h: Removed.
* WebCoreSupport/WebViewGroup.mm: Removed.
Source/WebKit/win:
* WebCoreSupport/WebVisitedLinkStore.cpp:
(visitedLinkStores):
(WebVisitedLinkStore::create):
(WebVisitedLinkStore::WebVisitedLinkStore):
(WebVisitedLinkStore::~WebVisitedLinkStore):
(WebVisitedLinkStore::setShouldTrackVisitedLinks):
(WebVisitedLinkStore::removeAllVisitedLinks):
(WebVisitedLinkStore::singleton): Deleted.
* WebCoreSupport/WebVisitedLinkStore.h:
* WebView.cpp:
(toURL):
(localStorageDatabasePath):
(WebView::WebView):
(WebView::~WebView):
(WebView::shouldInitializeTrackPointHack):
(WebView::initWithFrame):
(WebView::setGroupName):
(WebView::addVisitedLinks):
* WebView.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@185999
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2015-06-26 Hyungwook Lee <hyungwook.lee@navercorp.com>
+
+ [Win] Implement WebViewGroup to support WebView::addxxxToGroup().
+ https://bugs.webkit.org/show_bug.cgi?id=145908
+
+ Reviewed by Brent Fulgham.
+
+ Make WebViewGroup class sharing on Mac and Win port.
+
+ * WebCoreSupport: Added.
+ * WebCoreSupport/WebViewGroup.cpp: Added.
+ (webViewGroups):
+ (WebViewGroup::getOrCreate):
+ (WebViewGroup::get):
+ (WebViewGroup::WebViewGroup):
+ (WebViewGroup::~WebViewGroup):
+ (WebViewGroup::addWebView):
+ (WebViewGroup::removeWebView):
+ (WebViewGroup::storageNamespaceProvider):
+ * WebCoreSupport/WebViewGroup.h: Added.
+ (WebViewGroup::userContentController):
+ (WebViewGroup::visitedLinkStore):
+ * WebKit.vcxproj/WebKit/WebKit.vcxproj:
+ * WebKit.vcxproj/WebKit/WebKit.vcxproj.filters:
+ * WebKit.vcxproj/WebKit/WebKitCommon.props:
+ * WebKit.xcodeproj/project.pbxproj:
+
2015-06-24 Anders Carlsson <andersca@apple.com>
Move PluginMainThreadScheduler to WebKit/win
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#import "WebViewGroup.h"
-
-#import "WebStorageNamespaceProvider.h"
-#import "WebView.h"
-#import "WebVisitedLinkStore.h"
-#import <WebCore/UserContentController.h>
-#import <wtf/NeverDestroyed.h>
-#import <wtf/text/StringHash.h>
+#include "WebViewGroup.h"
+
+#include "WebStorageNamespaceProvider.h"
+#include "WebView.h"
+#include "WebVisitedLinkStore.h"
+#include <WebCore/UserContentController.h>
+#include <wtf/NeverDestroyed.h>
+#include <wtf/text/StringHash.h>
using namespace WebCore;
class WebVisitedLinkStore;
-@class WebView;
+OBJC_CLASS WebView;
class WebViewGroup : public RefCounted<WebViewGroup> {
public:
<ClCompile Include="..\..\Storage\WebDatabaseProvider.cpp" />
<ClCompile Include="..\..\Storage\WebStorageNamespaceProvider.cpp" />
<ClCompile Include="..\..\cf\WebCoreSupport\WebInspectorClientCF.cpp" />
+ <ClCompile Include="..\..\WebCoreSupport\WebViewGroup.cpp" />
<ClCompile Include="..\..\win\Plugins\npapi.cpp" />
<ClCompile Include="..\..\win\Plugins\PluginDatabase.cpp" />
<ClCompile Include="..\..\win\Plugins\PluginDebug.cpp" />
<ClInclude Include="..\..\Storage\StorageTrackerClient.h" />
<ClInclude Include="..\..\Storage\WebDatabaseProvider.h" />
<ClInclude Include="..\..\Storage\WebStorageNamespaceProvider.h" />
+ <ClInclude Include="..\..\WebCoreSupport\WebViewGroup.h" />
<ClInclude Include="..\..\win\Plugins\PluginDatabase.h" />
<ClInclude Include="..\..\win\Plugins\PluginDebug.h" />
<ClInclude Include="..\..\win\Plugins\PluginPackage.h" />
<ClCompile Include="..\..\win\WebKitMessageLoop.cpp">
<Filter>Sources</Filter>
</ClCompile>
+ <ClCompile Include="..\..\WebCoreSupport\WebViewGroup.cpp">
+ <Filter>Sources</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\win\WebCoreSupport\EmbeddedWidget.h">
<ClInclude Include="..\..\win\WebKitMessageLoop.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="..\..\WebCoreSupport\WebViewGroup.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="WebKitPostBuild.cmd" />
<Filter>Sources\Plugins</Filter>
</MASM>
</ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
- <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\..\..\win;$(ProjectDir)\..\..\win\Plugins;$(ProjectDir)\..\..\win\WebCoreSupport;$(ProjectDir)\..\..\Storage;$(ConfigurationBuildDir)\include\WebKit;$(ConfigurationBuildDir)\Include;$(ConfigurationBuildDir)\Include\private;$(ConfigurationBuildDir)\Include\WebCore;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders;$(ConfigurationBuildDir)\Include\JavaScriptCore;$(ConfigurationBuildDir)\Include\private\JavaScriptCore;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebKit\DerivedSources;$(WebKit_Libraries)\Include;$(WebKit_Libraries)\Include\private;$(WebKit_Libraries)\Include\WebCore;$(WebKit_Libraries)\Include\WebCore\ForwardingHeaders;$(WebKit_Libraries)\include\sqlite;$(WebKit_Libraries)\Include\JavaScriptCore;$(WebKit_Libraries)\Include\private\JavaScriptCore;$(IntDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)\..\..\win;$(ProjectDir)\..\..\win\Plugins;$(ProjectDir)\..\..\win\WebCoreSupport;$(ProjectDir)\..\..\Storage;$(ProjectDir)\..\..\WebCoreSupport;$(ConfigurationBuildDir)\include\WebKit;$(ConfigurationBuildDir)\Include;$(ConfigurationBuildDir)\Include\private;$(ConfigurationBuildDir)\Include\WebCore;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders;$(ConfigurationBuildDir)\Include\JavaScriptCore;$(ConfigurationBuildDir)\Include\private\JavaScriptCore;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebKit\DerivedSources;$(WebKit_Libraries)\Include;$(WebKit_Libraries)\Include\private;$(WebKit_Libraries)\Include\WebCore;$(WebKit_Libraries)\Include\WebCore\ForwardingHeaders;$(WebKit_Libraries)\include\sqlite;$(WebKit_Libraries)\Include\JavaScriptCore;$(WebKit_Libraries)\Include\private\JavaScriptCore;$(IntDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WEBKIT_EXPORTS;FRAMEWORK_NAME=WebKit;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>WebKitPrefix.h</PrecompiledHeaderFile>
<DelayLoadDLLs>usp10.dll;comctl32.dll;version.dll;iphlpapi.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
</ItemDefinitionGroup>
-</Project>
+</Project>
\ No newline at end of file
0AB752380FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */; };
0AEBFF630F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AEBFF610F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
0AEBFF640F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0AEBFF620F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm */; };
+ 1430C12C1B2C5DF700DEA01D /* WebViewGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1430C12A1B2C5DF700DEA01D /* WebViewGroup.cpp */; };
+ 1430C12D1B2C5DF700DEA01D /* WebViewGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 1430C12B1B2C5DF700DEA01D /* WebViewGroup.h */; };
14D8252F0AF955090004F057 /* WebChromeClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D8252D0AF955090004F057 /* WebChromeClient.h */; };
14D825300AF955090004F057 /* WebChromeClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 14D8252E0AF955090004F057 /* WebChromeClient.mm */; };
1A2DBE9F0F251E3A0036F8A6 /* ProxyInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2DBE9D0F251E3A0036F8A6 /* ProxyInstance.h */; };
1AAF5D0F0EDDE7A7008D883D /* WebKitPluginAgent.defs in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF588A0EDCCEA3008D883D /* WebKitPluginAgent.defs */; };
1AAF5FBF0EDE3A92008D883D /* WebHostedNetscapePluginView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF5FBD0EDE3A92008D883D /* WebHostedNetscapePluginView.h */; };
1AAF5FC00EDE3A92008D883D /* WebHostedNetscapePluginView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF5FBE0EDE3A92008D883D /* WebHostedNetscapePluginView.mm */; };
- 1AB1DAC118BC0232004B6A9F /* WebViewGroup.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AB1DABF18BC0232004B6A9F /* WebViewGroup.mm */; };
- 1AB1DAC218BC0232004B6A9F /* WebViewGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB1DAC018BC0232004B6A9F /* WebViewGroup.h */; };
1AC7176E1A26568A002E3115 /* WebVisitedLinkStore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AC7176C1A26568A002E3115 /* WebVisitedLinkStore.mm */; };
1AC7176F1A26568A002E3115 /* WebVisitedLinkStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC7176D1A26568A002E3115 /* WebVisitedLinkStore.h */; };
1AEA66D40DC6B1FF003D12BF /* WebNetscapePluginEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEA66D20DC6B1FF003D12BF /* WebNetscapePluginEventHandler.h */; };
0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapeContainerCheckContextInfo.mm; sourceTree = "<group>"; };
0AEBFF610F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = WebNetscapeContainerCheckPrivate.h; sourceTree = "<group>"; };
0AEBFF620F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapeContainerCheckPrivate.mm; sourceTree = "<group>"; };
+ 1430C12A1B2C5DF700DEA01D /* WebViewGroup.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = WebViewGroup.cpp; path = WebCoreSupport/WebViewGroup.cpp; sourceTree = SOURCE_ROOT; };
+ 1430C12B1B2C5DF700DEA01D /* WebViewGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebViewGroup.h; path = WebCoreSupport/WebViewGroup.h; sourceTree = SOURCE_ROOT; };
14D8252D0AF955090004F057 /* WebChromeClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebChromeClient.h; sourceTree = "<group>"; };
14D8252E0AF955090004F057 /* WebChromeClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebChromeClient.mm; sourceTree = "<group>"; };
1A2DBE9D0F251E3A0036F8A6 /* ProxyInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProxyInstance.h; sourceTree = "<group>"; };
1AAF5D080EDDE71D008D883D /* WebKitPluginHostTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitPluginHostTypes.h; sourceTree = "<group>"; };
1AAF5FBD0EDE3A92008D883D /* WebHostedNetscapePluginView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebHostedNetscapePluginView.h; sourceTree = "<group>"; };
1AAF5FBE0EDE3A92008D883D /* WebHostedNetscapePluginView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebHostedNetscapePluginView.mm; sourceTree = "<group>"; };
- 1AB1DABF18BC0232004B6A9F /* WebViewGroup.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebViewGroup.mm; sourceTree = "<group>"; };
- 1AB1DAC018BC0232004B6A9F /* WebViewGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewGroup.h; sourceTree = "<group>"; };
1AC7176C1A26568A002E3115 /* WebVisitedLinkStore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebVisitedLinkStore.mm; sourceTree = "<group>"; };
1AC7176D1A26568A002E3115 /* WebVisitedLinkStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVisitedLinkStore.h; sourceTree = "<group>"; };
1AEA66D20DC6B1FF003D12BF /* WebNetscapePluginEventHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapePluginEventHandler.h; sourceTree = "<group>"; };
2DD632C119E5D1F0002E9C7B /* WebSelectionServiceController.mm */,
93EB178E09F88D510091F8FF /* WebSystemInterface.h */,
93EB178C09F88D460091F8FF /* WebSystemInterface.mm */,
- 1AB1DAC018BC0232004B6A9F /* WebViewGroup.h */,
- 1AB1DABF18BC0232004B6A9F /* WebViewGroup.mm */,
+ 1430C12A1B2C5DF700DEA01D /* WebViewGroup.cpp */,
+ 1430C12B1B2C5DF700DEA01D /* WebViewGroup.h */,
1AC7176D1A26568A002E3115 /* WebVisitedLinkStore.h */,
1AC7176C1A26568A002E3115 /* WebVisitedLinkStore.mm */,
);
939810490824BF01008DF038 /* WebClipView.h in Headers */,
065AD5A30B0C32C7005A2B1D /* WebContextMenuClient.h in Headers */,
939810160824BF01008DF038 /* WebCoreStatistics.h in Headers */,
- 1AB1DAC218BC0232004B6A9F /* WebViewGroup.h in Headers */,
93E2A1A4123B0B3C009FE12A /* WebDashboardRegion.h in Headers */,
511F3FD70CECC88F00852565 /* WebDatabaseManagerClient.h in Headers */,
51AEDEF10CECF45700854328 /* WebDatabaseManagerInternal.h in Headers */,
939810140824BF01008DF038 /* WebHistoryPrivate.h in Headers */,
1AAF5FBF0EDE3A92008D883D /* WebHostedNetscapePluginView.h in Headers */,
939810550824BF01008DF038 /* WebHTMLRepresentation.h in Headers */,
+ 1430C12D1B2C5DF700DEA01D /* WebViewGroup.h in Headers */,
939810560824BF01008DF038 /* WebHTMLRepresentationPrivate.h in Headers */,
939810570824BF01008DF038 /* WebHTMLView.h in Headers */,
1A6B313D1A51F3A900422975 /* StorageTrackerClient.h in Headers */,
1A6B31351A51F3A900422975 /* StorageNamespaceImpl.cpp in Sources */,
F834AAD80E64B1C700E2737C /* WebTextIterator.mm in Sources */,
A10C1D1D18202F9C0036883A /* WebDefaultResourceLoadDelegate.m in Sources */,
+ 1430C12C1B2C5DF700DEA01D /* WebViewGroup.cpp in Sources */,
939810BE0824BF01008DF038 /* WebURLsWithTitles.m in Sources */,
C0C5B3EF1177A4A0002B0AEF /* WebUserContentURLPattern.mm in Sources */,
- 1AB1DAC118BC0232004B6A9F /* WebViewGroup.mm in Sources */,
939811070824BF01008DF038 /* WebView.mm in Sources */,
1A6B313B1A51F3A900422975 /* StorageTracker.cpp in Sources */,
BC2E464E0FD8A96800A9D9DE /* WebViewData.mm in Sources */,
+2015-06-26 Hyungwook Lee <hyungwook.lee@navercorp.com>
+
+ [Win] Implement WebViewGroup to support WebView::addxxxToGroup().
+ https://bugs.webkit.org/show_bug.cgi?id=145908
+
+ Reviewed by Brent Fulgham.
+
+ Make WebViewGroup class sharing on Mac and Win port.
+
+ * WebCoreSupport/WebViewGroup.h: Removed.
+ * WebCoreSupport/WebViewGroup.mm: Removed.
+
2015-06-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add Support for OS X Full Screen Mode
+2015-06-26 Hyungwook Lee <hyungwook.lee@navercorp.com>
+
+ [Win] Implement WebViewGroup to support WebView::addxxxToGroup().
+ https://bugs.webkit.org/show_bug.cgi?id=145908
+
+ Reviewed by Brent Fulgham.
+
+ Make WebViewGroup class sharing on Mac and Win port.
+
+ * WebCoreSupport/WebVisitedLinkStore.cpp:
+ (visitedLinkStores):
+ (WebVisitedLinkStore::create):
+ (WebVisitedLinkStore::WebVisitedLinkStore):
+ (WebVisitedLinkStore::~WebVisitedLinkStore):
+ (WebVisitedLinkStore::setShouldTrackVisitedLinks):
+ (WebVisitedLinkStore::removeAllVisitedLinks):
+ (WebVisitedLinkStore::singleton): Deleted.
+ * WebCoreSupport/WebVisitedLinkStore.h:
+ * WebView.cpp:
+ (toURL):
+ (localStorageDatabasePath):
+ (WebView::WebView):
+ (WebView::~WebView):
+ (WebView::shouldInitializeTrackPointHack):
+ (WebView::initWithFrame):
+ (WebView::setGroupName):
+ (WebView::addVisitedLinks):
+ * WebView.h:
+
2015-06-25 Brent Fulgham <bfulgham@apple.com>
[Win] Need implementation of layoutTestController.setBackingScaleFactor
static bool s_shouldTrackVisitedLinks;
-WebVisitedLinkStore& WebVisitedLinkStore::singleton()
+static HashSet<WebVisitedLinkStore*>& visitedLinkStores()
{
- static WebVisitedLinkStore& visitedLinkStore = *adoptRef(new WebVisitedLinkStore).leakRef();
-
- return visitedLinkStore;
+ static NeverDestroyed<HashSet<WebVisitedLinkStore*>> visitedLinkStores;
+
+ return visitedLinkStores;
+}
+
+Ref<WebVisitedLinkStore> WebVisitedLinkStore::create()
+{
+ return adoptRef(*new WebVisitedLinkStore);
}
WebVisitedLinkStore::WebVisitedLinkStore()
: m_visitedLinksPopulated(false)
{
+ visitedLinkStores().add(this);
}
WebVisitedLinkStore::~WebVisitedLinkStore()
{
+ visitedLinkStores().remove(this);
}
void WebVisitedLinkStore::setShouldTrackVisitedLinks(bool shouldTrackVisitedLinks)
void WebVisitedLinkStore::removeAllVisitedLinks()
{
- WebVisitedLinkStore::singleton().removeVisitedLinkHashes();
+ for (auto& visitedLinkStore : visitedLinkStores())
+ visitedLinkStore->removeVisitedLinkHashes();
PageCache::singleton().markPagesForVisitedLinkStyleRecalc();
}
class WebVisitedLinkStore final : public WebCore::VisitedLinkStore {
public:
- static WebVisitedLinkStore& singleton();
- WebVisitedLinkStore();
+ static Ref<WebVisitedLinkStore> create();
virtual ~WebVisitedLinkStore();
static void setShouldTrackVisitedLinks(bool);
void addVisitedLink(const String& urlString);
private:
+ WebVisitedLinkStore();
+
virtual bool isLinkVisited(WebCore::Page&, WebCore::LinkHash, const WebCore::URL& baseURL, const AtomicString& attributeURL) override;
virtual void addVisitedLink(WebCore::Page&, WebCore::LinkHash) override;
#include "WebPreferences.h"
#include "WebScriptWorld.h"
#include "WebStorageNamespaceProvider.h"
+#include "WebViewGroup.h"
#include "WebVisitedLinkStore.h"
#include "resource.h"
#include <JavaScriptCore/APICast.h>
#include <WebCore/SecurityPolicy.h>
#include <WebCore/Settings.h>
#include <WebCore/SystemInfo.h>
+#include <WebCore/UserContentController.h>
#include <WebCore/WindowMessageBroadcaster.h>
#include <WebCore/WindowsTouch.h>
#include <bindings/ScriptValue.h>
return URL(URL(), toString(bstr));
}
+static String localStorageDatabasePath(WebPreferences* preferences)
+{
+ BString localStorageDatabasePath;
+ if (FAILED(preferences->localStorageDatabasePath(&localStorageDatabasePath)))
+ return String();
+
+ return toString(localStorageDatabasePath);
+}
+
class PreferencesChangedOrRemovedObserver : public IWebNotificationObserver {
public:
static PreferencesChangedOrRemovedObserver* sharedInstance();
if (SUCCEEDED(sharedPreferences->grammarCheckingEnabled(&enabled)))
grammarCheckingEnabled = !!enabled;
+ m_webViewGroup = WebViewGroup::getOrCreate(String(), localStorageDatabasePath(sharedPreferences));
+ m_webViewGroup->addWebView(this);
+
WebViewCount++;
gClassCount++;
gClassNameCount().add("WebView");
ASSERT(!m_layerTreeHost);
#endif
+ m_webViewGroup->removeWebView(this);
+
WebViewCount--;
gClassCount--;
gClassNameCount().remove("WebView");
return shouldCreateScrollbars;
}
-static String localStorageDatabasePath(WebPreferences* preferences)
-{
- BString localStorageDatabasePath;
- if (FAILED(preferences->localStorageDatabasePath(&localStorageDatabasePath)))
- return String();
-
- return toString(localStorageDatabasePath);
-}
-
HRESULT STDMETHODCALLTYPE WebView::initWithFrame(
/* [in] */ RECT frame,
/* [in] */ BSTR frameName,
configuration.inspectorClient = m_inspectorClient;
configuration.loaderClientForMainFrame = new WebFrameLoaderClient;
configuration.databaseProvider = &WebDatabaseProvider::singleton();
- configuration.storageNamespaceProvider = WebStorageNamespaceProvider::create(localStorageDatabasePath(m_preferences.get()));
+ configuration.storageNamespaceProvider = &m_webViewGroup->storageNamespaceProvider();
configuration.progressTrackerClient = static_cast<WebFrameLoaderClient*>(configuration.loaderClientForMainFrame);
- configuration.visitedLinkStore = &WebVisitedLinkStore::singleton();
+ configuration.userContentController = &m_webViewGroup->userContentController();
+ configuration.visitedLinkStore = &m_webViewGroup->visitedLinkStore();
m_page = new Page(configuration);
provideGeolocationTo(m_page, new WebGeolocationClient(this));
HRESULT STDMETHODCALLTYPE WebView::setGroupName(
/* [in] */ BSTR groupName)
{
+ if (m_webViewGroup)
+ m_webViewGroup->removeWebView(this);
+
+ m_webViewGroup = WebViewGroup::getOrCreate(groupName, localStorageDatabasePath(m_preferences.get()));
+ m_webViewGroup->addWebView(this);
+
if (!m_page)
return S_OK;
+
+ m_page->setUserContentController(&m_webViewGroup->userContentController());
+ m_page->setVisitedLinkStore(m_webViewGroup->visitedLinkStore());
m_page->setGroupName(toString(groupName));
return S_OK;
}
HRESULT WebView::addVisitedLinks(BSTR* visitedURLs, unsigned visitedURLCount)
{
- auto& visitedLinkStore = WebVisitedLinkStore::singleton();
+ auto& visitedLinkStore = m_webViewGroup->visitedLinkStore();
PageGroup& group = core(this)->group();
for (unsigned i = 0; i < visitedURLCount; ++i) {
#if USE(TEXTURE_MAPPER_GL)
class AcceleratedCompositingContext;
#endif
+class WebViewGroup;
WebView* kit(WebCore::Page*);
WebCore::Page* core(IWebView*);
std::unique_ptr<WebCore::FullScreenController> m_fullscreenController;
WebCore::IntPoint m_scrollPosition;
#endif
+
+ RefPtr<WebViewGroup> m_webViewGroup;
};
#endif