Title: [126918] trunk/Source/WebKit2
Revision
126918
Author
[email protected]
Date
2012-08-28 13:10:07 -0700 (Tue, 28 Aug 2012)

Log Message

        [WK2] Expose process model as API
        https://bugs.webkit.org/show_bug.cgi?id=95228

        Reviewed by Jon Honeycutt.

        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toProcessModel):
        (WebKit::toAPI):
        Convert ProcessModel values.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetProcessModel):
        (WKContextGetProcessModel):
        * UIProcess/API/C/WKContext.h:
        * UIProcess/WebContext.cpp: (WebKit::WebContext::setProcessModel):
        * UIProcess/WebContext.h:
        Added a setter and a getter. Setting process model is only allowed when there are
        no processes yet - that's checked with a CRASH to guarantee that clients using
        production builds of WebKit2 don't misstep.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (126917 => 126918)


--- trunk/Source/WebKit2/ChangeLog	2012-08-28 19:59:52 UTC (rev 126917)
+++ trunk/Source/WebKit2/ChangeLog	2012-08-28 20:10:07 UTC (rev 126918)
@@ -1,3 +1,25 @@
+2012-08-28  Alexey Proskuryakov  <[email protected]>
+
+        [WK2] Expose process model as API
+        https://bugs.webkit.org/show_bug.cgi?id=95228
+
+        Reviewed by Jon Honeycutt.
+
+        * UIProcess/API/C/WKAPICast.h:
+        (WebKit::toProcessModel):
+        (WebKit::toAPI):
+        Convert ProcessModel values.
+
+        * UIProcess/API/C/WKContext.cpp:
+        (WKContextSetProcessModel):
+        (WKContextGetProcessModel):
+        * UIProcess/API/C/WKContext.h:
+        * UIProcess/WebContext.cpp: (WebKit::WebContext::setProcessModel):
+        * UIProcess/WebContext.h:
+        Added a setter and a getter. Setting process model is only allowed when there are
+        no processes yet - that's checked with a CRASH to guarantee that clients using
+        production builds of WebKit2 don't misstep.
+
 2012-08-28  Caio Marcelo de Oliveira Filho  <[email protected]>
 
         Rename first/second to key/value in HashMap iterators

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h (126917 => 126918)


--- trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h	2012-08-28 19:59:52 UTC (rev 126917)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h	2012-08-28 20:10:07 UTC (rev 126918)
@@ -30,6 +30,7 @@
 #include "CacheModel.h"
 #include "FontSmoothingLevel.h"
 #include "HTTPCookieAcceptPolicy.h"
+#include "ProcessModel.h"
 #include "ResourceCachesToClear.h"
 #include "WebGrammarDetail.h"
 #include "WKContext.h"
@@ -174,6 +175,31 @@
     return kWKCacheModelDocumentViewer;
 }
 
+inline ProcessModel toProcessModel(WKProcessModel wkProcessModel)
+{
+    switch (wkProcessModel) {
+    case kWKProcessModelSharedSecondaryProcess:
+        return ProcessModelSharedSecondaryProcess;
+    case kWKProcessModelMultipleSecondaryProcesses:
+        return ProcessModelMultipleSecondaryProcesses;
+    }
+
+    ASSERT_NOT_REACHED();
+    return ProcessModelSharedSecondaryProcess;
+}
+
+inline WKProcessModel toAPI(ProcessModel processModel)
+{
+    switch (processModel) {
+    case ProcessModelSharedSecondaryProcess:
+        return kWKProcessModelSharedSecondaryProcess;
+    case ProcessModelMultipleSecondaryProcesses:
+        return kWKProcessModelMultipleSecondaryProcesses;
+    }
+    
+    return kWKProcessModelSharedSecondaryProcess;
+}
+
 inline FontSmoothingLevel toFontSmoothingLevel(WKFontSmoothingLevel wkLevel)
 {
     switch (wkLevel) {

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp (126917 => 126918)


--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2012-08-28 19:59:52 UTC (rev 126917)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2012-08-28 20:10:07 UTC (rev 126918)
@@ -120,6 +120,16 @@
     return toAPI(toImpl(contextRef)->cacheModel());
 }
 
+void WKContextSetProcessModel(WKContextRef contextRef, WKProcessModel processModel)
+{
+    toImpl(contextRef)->setProcessModel(toProcessModel(processModel));
+}
+
+WKProcessModel WKContextGetProcessModel(WKContextRef contextRef)
+{
+    return toAPI(toImpl(contextRef)->processModel());
+}
+
 void WKContextSetAlwaysUsesComplexTextCodePath(WKContextRef contextRef, bool alwaysUseComplexTextCodePath)
 {
     toImpl(contextRef)->setAlwaysUsesComplexTextCodePath(alwaysUseComplexTextCodePath);

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.h (126917 => 126918)


--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.h	2012-08-28 19:59:52 UTC (rev 126917)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.h	2012-08-28 20:10:07 UTC (rev 126918)
@@ -123,6 +123,12 @@
 
 enum { kWKContextConnectionClientCurrentVersion = 0 };
 
+enum {
+    kWKProcessModelSharedSecondaryProcess = 0,
+    kWKProcessModelMultipleSecondaryProcesses = 1
+};
+typedef uint32_t WKProcessModel;
+
 WK_EXPORT WKTypeID WKContextGetTypeID();
 
 WK_EXPORT WKContextRef WKContextCreate();
@@ -143,6 +149,9 @@
 WK_EXPORT void WKContextSetCacheModel(WKContextRef context, WKCacheModel cacheModel);
 WK_EXPORT WKCacheModel WKContextGetCacheModel(WKContextRef context);
 
+WK_EXPORT void WKContextSetProcessModel(WKContextRef context, WKProcessModel processModel);
+WK_EXPORT WKProcessModel WKContextGetProcessModel(WKContextRef context);
+
 WK_EXPORT void WKContextStartMemorySampler(WKContextRef context, WKDoubleRef interval);
 WK_EXPORT void WKContextStopMemorySampler(WKContextRef context);
 

Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (126917 => 126918)


--- trunk/Source/WebKit2/UIProcess/WebContext.cpp	2012-08-28 19:59:52 UTC (rev 126917)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp	2012-08-28 20:10:07 UTC (rev 126918)
@@ -255,6 +255,15 @@
     m_downloadClient.initialize(client);
 }
 
+void WebContext::setProcessModel(ProcessModel processModel)
+{
+    // Guard against API misuse.
+    if (!m_processes.isEmpty())
+        CRASH();
+
+    m_processModel = processModel;
+}
+
 WebProcessProxy* WebContext::deprecatedSharedProcess()
 {
     ASSERT(m_processModel == ProcessModelSharedSecondaryProcess);

Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (126917 => 126918)


--- trunk/Source/WebKit2/UIProcess/WebContext.h	2012-08-28 19:59:52 UTC (rev 126917)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h	2012-08-28 20:10:07 UTC (rev 126918)
@@ -89,6 +89,7 @@
     void initializeHistoryClient(const WKContextHistoryClient*);
     void initializeDownloadClient(const WKContextDownloadClient*);
 
+    void setProcessModel(ProcessModel); // Can only be called when there are no processes running.
     ProcessModel processModel() const { return m_processModel; }
 
     // FIXME (Multi-WebProcess): Remove. No code should assume that there is a shared process.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to