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