Title: [136888] trunk/Source/WebKit2
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
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to