- Revision
- 136888
- Author
- a...@apple.com
- Date
- 2012-12-06 14:14:38 -0800 (Thu, 06 Dec 2012)
Log Message
Track private browsing session in network process
https://bugs.webkit.org/show_bug.cgi?id=104281
Reviewed by Jessie Berlin.
Added ensure/destroy messages that match what's done in WebProcess. Also similarly,
ensuring a private session may happen on demand if network process has been restarted
after a crash, or if private browsing is enabled via a persistent preference.
Eventually, we should find a way to share code between WebFrameNetworkingContext
and RemoteNetworkingContext.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::ensurePrivateBrowsingSession):
(WebKit::NetworkProcess::destroyPrivateBrowsingSession):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/mac/RemoteNetworkingContext.h:
(RemoteNetworkingContext):
* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::privateBrowsingStorageSessionIdentifierBase):
(WebKit::RemoteNetworkingContext::setPrivateBrowsingStorageSessionIdentifierBase):
(WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
(WebKit::RemoteNetworkingContext::destroyPrivateBrowsingSession):
* Shared/Network/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):
* Shared/Network/NetworkProcessCreationParameters.h:
(NetworkProcessCreationParameters):
* UIProcess/Network/mac/NetworkProcessProxyMac.mm:
(WebKit::NetworkProcessProxy::platformInitializeNetworkProcess):
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (136887 => 136888)
--- trunk/Source/WebKit2/ChangeLog 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/ChangeLog 2012-12-06 22:14:38 UTC (rev 136888)
@@ -1,3 +1,42 @@
+2012-12-06 Alexey Proskuryakov <a...@apple.com>
+
+ Track private browsing session in network process
+ https://bugs.webkit.org/show_bug.cgi?id=104281
+
+ Reviewed by Jessie Berlin.
+
+ Added ensure/destroy messages that match what's done in WebProcess. Also similarly,
+ ensuring a private session may happen on demand if network process has been restarted
+ after a crash, or if private browsing is enabled via a persistent preference.
+
+ Eventually, we should find a way to share code between WebFrameNetworkingContext
+ and RemoteNetworkingContext.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::initializeNetworkProcess):
+ (WebKit::NetworkProcess::ensurePrivateBrowsingSession):
+ (WebKit::NetworkProcess::destroyPrivateBrowsingSession):
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkProcess.messages.in:
+ * NetworkProcess/mac/RemoteNetworkingContext.h:
+ (RemoteNetworkingContext):
+ * NetworkProcess/mac/RemoteNetworkingContext.mm:
+ (WebKit::privateBrowsingStorageSessionIdentifierBase):
+ (WebKit::RemoteNetworkingContext::setPrivateBrowsingStorageSessionIdentifierBase):
+ (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
+ (WebKit::RemoteNetworkingContext::destroyPrivateBrowsingSession):
+ * Shared/Network/NetworkProcessCreationParameters.cpp:
+ (WebKit::NetworkProcessCreationParameters::encode):
+ (WebKit::NetworkProcessCreationParameters::decode):
+ * Shared/Network/NetworkProcessCreationParameters.h:
+ (NetworkProcessCreationParameters):
+ * UIProcess/Network/mac/NetworkProcessProxyMac.mm:
+ (WebKit::NetworkProcessProxy::platformInitializeNetworkProcess):
+ * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
+ (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::initializeWebProcess):
+
2012-12-06 Laszlo Gombos <l.gom...@samsung.com>
[EFL] Remove ENABLE_GLIB_SUPPORT CMake variable
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp (136887 => 136888)
--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp 2012-12-06 22:14:38 UTC (rev 136888)
@@ -31,7 +31,9 @@
#include "ArgumentCoders.h"
#include "Attachment.h"
#include "NetworkConnectionToWebProcess.h"
+#include "NetworkProcessCreationParameters.h"
#include "NetworkProcessProxyMessages.h"
+#include "RemoteNetworkingContext.h"
#include <WebCore/ResourceRequest.h>
#include <WebCore/RunLoop.h>
#include <wtf/text/CString.h>
@@ -95,6 +97,10 @@
void NetworkProcess::initializeNetworkProcess(const NetworkProcessCreationParameters& parameters)
{
platformInitialize(parameters);
+
+#if PLATFORM(MAC) || USE(CFNETWORK)
+ RemoteNetworkingContext::setPrivateBrowsingStorageSessionIdentifierBase(parameters.uiProcessBundleIdentifier);
+#endif
}
void NetworkProcess::createNetworkConnectionToWebProcess()
@@ -115,6 +121,16 @@
#endif
}
+void NetworkProcess::ensurePrivateBrowsingSession()
+{
+ RemoteNetworkingContext::ensurePrivateBrowsingSession();
+}
+
+void NetworkProcess::destroyPrivateBrowsingSession()
+{
+ RemoteNetworkingContext::destroyPrivateBrowsingSession();
+}
+
} // namespace WebKit
#endif // ENABLE(NETWORK_PROCESS)
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h (136887 => 136888)
--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h 2012-12-06 22:14:38 UTC (rev 136888)
@@ -70,6 +70,8 @@
void didReceiveNetworkProcessMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&);
void initializeNetworkProcess(const NetworkProcessCreationParameters&);
void createNetworkConnectionToWebProcess();
+ void ensurePrivateBrowsingSession();
+ void destroyPrivateBrowsingSession();
// The connection to the UI process.
RefPtr<CoreIPC::Connection> m_uiConnection;
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in (136887 => 136888)
--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in 2012-12-06 22:14:38 UTC (rev 136888)
@@ -29,6 +29,9 @@
# Creates a connection for communication with a WebProcess
CreateNetworkConnectionToWebProcess()
+ EnsurePrivateBrowsingSession()
+ DestroyPrivateBrowsingSession()
+
#if PLATFORM(MAC)
SetApplicationIsOccluded(bool flag)
#endif
Modified: trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.h (136887 => 136888)
--- trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.h 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.h 2012-12-06 22:14:38 UTC (rev 136888)
@@ -38,6 +38,10 @@
}
virtual ~RemoteNetworkingContext();
+ static void setPrivateBrowsingStorageSessionIdentifierBase(const String&);
+ static void ensurePrivateBrowsingSession();
+ static void destroyPrivateBrowsingSession();
+
private:
RemoteNetworkingContext(bool needsSiteSpecificQuirks, bool localFileContentSniffingEnabled);
Modified: trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm (136887 => 136888)
--- trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm 2012-12-06 22:14:38 UTC (rev 136888)
@@ -28,11 +28,15 @@
#import "WebCore/ResourceError.h"
#import "WebErrors.h"
+#import <WebKitSystemInterface.h>
+#import <wtf/MainThread.h>
using namespace WebCore;
namespace WebKit {
+static CFURLStorageSessionRef privateBrowsingStorageSession;
+
RemoteNetworkingContext::RemoteNetworkingContext(bool needsSiteSpecificQuirks, bool localFileContentSniffingEnabled)
: m_needsSiteSpecificQuirks(needsSiteSpecificQuirks)
, m_localFileContentSniffingEnabled(localFileContentSniffingEnabled)
@@ -80,4 +84,37 @@
return WebKit::blockedError(request);
}
+static String& privateBrowsingStorageSessionIdentifierBase()
+{
+ ASSERT(isMainThread());
+ DEFINE_STATIC_LOCAL(String, base, ());
+ return base;
}
+
+void RemoteNetworkingContext::setPrivateBrowsingStorageSessionIdentifierBase(const String& identifier)
+{
+ privateBrowsingStorageSessionIdentifierBase() = identifier;
+}
+
+void RemoteNetworkingContext::ensurePrivateBrowsingSession()
+{
+ ASSERT(isMainThread());
+ if (privateBrowsingStorageSession)
+ return;
+
+ ASSERT(!privateBrowsingStorageSessionIdentifierBase().isNull());
+ RetainPtr<CFStringRef> cfIdentifier = String(privateBrowsingStorageSessionIdentifierBase() + ".PrivateBrowsing").createCFString();
+
+ privateBrowsingStorageSession = WKCreatePrivateStorageSession(cfIdentifier.get());
+}
+
+void RemoteNetworkingContext::destroyPrivateBrowsingSession()
+{
+ if (!privateBrowsingStorageSession)
+ return;
+
+ CFRelease(privateBrowsingStorageSession);
+ privateBrowsingStorageSession = 0;
+}
+
+}
Modified: trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp (136887 => 136888)
--- trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp 2012-12-06 22:14:38 UTC (rev 136888)
@@ -40,6 +40,7 @@
{
#if PLATFORM(MAC)
encoder << parentProcessName;
+ encoder << uiProcessBundleIdentifier;
#endif
}
@@ -48,6 +49,8 @@
#if PLATFORM(MAC)
if (!decoder->decode(result.parentProcessName))
return false;
+ if (!decoder->decode(result.uiProcessBundleIdentifier))
+ return false;
#endif
return true;
Modified: trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h (136887 => 136888)
--- trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h 2012-12-06 22:14:38 UTC (rev 136888)
@@ -45,6 +45,7 @@
#if PLATFORM(MAC)
String parentProcessName;
+ String uiProcessBundleIdentifier;
#endif
};
Modified: trunk/Source/WebKit2/UIProcess/Network/mac/NetworkProcessProxyMac.mm (136887 => 136888)
--- trunk/Source/WebKit2/UIProcess/Network/mac/NetworkProcessProxyMac.mm 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/UIProcess/Network/mac/NetworkProcessProxyMac.mm 2012-12-06 22:14:38 UTC (rev 136888)
@@ -38,6 +38,7 @@
void NetworkProcessProxy::platformInitializeNetworkProcess(NetworkProcessCreationParameters& parameters)
{
parameters.parentProcessName = [[NSProcessInfo processInfo] processName];
+ parameters.uiProcessBundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
}
void NetworkProcessProxy::setApplicationIsOccluded(bool applicationIsOccluded)
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm (136887 => 136888)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm 2012-12-06 22:14:38 UTC (rev 136888)
@@ -77,6 +77,8 @@
void WebFrameNetworkingContext::ensurePrivateBrowsingSession()
{
+ // FIXME (NetworkProcess): Don't create an unnecessary session when using network process.
+
ASSERT(isMainThread());
if (privateBrowsingStorageSession)
return;
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (136887 => 136888)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-12-06 22:10:11 UTC (rev 136887)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-12-06 22:14:38 UTC (rev 136888)
@@ -295,7 +295,6 @@
setShouldUseFontSmoothing(true);
#if (PLATFORM(MAC) || USE(CFNETWORK)) && !PLATFORM(WIN)
- // FIXME (NetworkProcess): Send this identifier to network process.
WebFrameNetworkingContext::setPrivateBrowsingStorageSessionIdentifierBase(parameters.uiProcessBundleIdentifier);
#endif