Title: [137420] trunk/Source/WebKit2
Revision
137420
Author
[email protected]
Date
2012-12-11 23:01:03 -0800 (Tue, 11 Dec 2012)

Log Message

Add API to set the maximum number of processes allowed in a WKContext
https://bugs.webkit.org/show_bug.cgi?id=104769

Reviewed by Dan Bernstein.

Switch from using NSUserDefaults to a WKContext API to set the maximum number of processes
for a context.

* UIProcess/API/C/WKContext.cpp:
(WKContextSetMaximumNumberOfProcesses):
(WKContextGetMaximumNumberOfProcesses):
* UIProcess/API/C/WKContext.h:
* UIProcess/WebContext.cpp:
(WebKit::WebContext::setMaximumNumberOfProcesses):
(WebKit):
* UIProcess/WebContext.h:
(WebContext):
(WebKit::WebContext::maximumNumberOfProcesses):
* UIProcess/mac/WebContextMac.mm:
(WebKit::registerUserDefaultsIfNeeded):
(WebKit::WebContext::platformInitialize):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (137419 => 137420)


--- trunk/Source/WebKit2/ChangeLog	2012-12-12 06:37:00 UTC (rev 137419)
+++ trunk/Source/WebKit2/ChangeLog	2012-12-12 07:01:03 UTC (rev 137420)
@@ -1,3 +1,27 @@
+2012-12-11  Sam Weinig  <[email protected]>
+
+        Add API to set the maximum number of processes allowed in a WKContext
+        https://bugs.webkit.org/show_bug.cgi?id=104769
+
+        Reviewed by Dan Bernstein.
+
+        Switch from using NSUserDefaults to a WKContext API to set the maximum number of processes
+        for a context.
+
+        * UIProcess/API/C/WKContext.cpp:
+        (WKContextSetMaximumNumberOfProcesses):
+        (WKContextGetMaximumNumberOfProcesses):
+        * UIProcess/API/C/WKContext.h:
+        * UIProcess/WebContext.cpp:
+        (WebKit::WebContext::setMaximumNumberOfProcesses):
+        (WebKit):
+        * UIProcess/WebContext.h:
+        (WebContext):
+        (WebKit::WebContext::maximumNumberOfProcesses):
+        * UIProcess/mac/WebContextMac.mm:
+        (WebKit::registerUserDefaultsIfNeeded):
+        (WebKit::WebContext::platformInitialize):
+
 2012-12-11  Kihong Kwon  <[email protected]>
 
         Vibration API: IDL type doesn't match implementation type

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


--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2012-12-12 06:37:00 UTC (rev 137419)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp	2012-12-12 07:01:03 UTC (rev 137420)
@@ -131,6 +131,16 @@
     return toAPI(toImpl(contextRef)->processModel());
 }
 
+void WKContextSetMaximumNumberOfProcesses(WKContextRef contextRef, unsigned numberOfProcesses)
+{
+    toImpl(contextRef)->setMaximumNumberOfProcesses(numberOfProcesses);
+}
+
+unsigned WKContextGetMaximumNumberOfProcesses(WKContextRef contextRef)
+{
+    return toImpl(contextRef)->maximumNumberOfProcesses();
+}
+
 void WKContextSetAlwaysUsesComplexTextCodePath(WKContextRef contextRef, bool alwaysUseComplexTextCodePath)
 {
     toImpl(contextRef)->setAlwaysUsesComplexTextCodePath(alwaysUseComplexTextCodePath);

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


--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.h	2012-12-12 06:37:00 UTC (rev 137419)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.h	2012-12-12 07:01:03 UTC (rev 137420)
@@ -152,6 +152,9 @@
 WK_EXPORT void WKContextSetProcessModel(WKContextRef context, WKProcessModel processModel);
 WK_EXPORT WKProcessModel WKContextGetProcessModel(WKContextRef context);
 
+WK_EXPORT void WKContextSetMaximumNumberOfProcesses(WKContextRef context, unsigned numberOfProcesses);
+WK_EXPORT unsigned WKContextGetMaximumNumberOfProcesses(WKContextRef context);
+
 WK_EXPORT void WKContextStartMemorySampler(WKContextRef context, WKDoubleRef interval);
 WK_EXPORT void WKContextStopMemorySampler(WKContextRef context);
 

Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (137419 => 137420)


--- trunk/Source/WebKit2/UIProcess/WebContext.cpp	2012-12-12 06:37:00 UTC (rev 137419)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp	2012-12-12 07:01:03 UTC (rev 137420)
@@ -299,6 +299,18 @@
     m_processModel = processModel;
 }
 
+void WebContext::setMaximumNumberOfProcesses(unsigned maximumNumberOfProcesses)
+{
+    // Guard against API misuse.
+    if (!m_processes.isEmpty())
+        CRASH();
+
+    if (maximumNumberOfProcesses == 0)
+        m_webProcessCountLimit = UINT_MAX;
+    else
+        m_webProcessCountLimit = maximumNumberOfProcesses;
+}
+
 WebProcessProxy* WebContext::deprecatedSharedProcess()
 {
     ASSERT(m_processModel == ProcessModelSharedSecondaryProcess);

Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (137419 => 137420)


--- trunk/Source/WebKit2/UIProcess/WebContext.h	2012-12-12 06:37:00 UTC (rev 137419)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h	2012-12-12 07:01:03 UTC (rev 137420)
@@ -104,6 +104,9 @@
     void setProcessModel(ProcessModel); // Can only be called when there are no processes running.
     ProcessModel processModel() const { return m_processModel; }
 
+    void setMaximumNumberOfProcesses(unsigned); // Can only be called when there are no processes running.
+    unsigned maximumNumberOfProcesses() const { return m_webProcessCountLimit; }
+
     // FIXME (Multi-WebProcess): Remove. No code should assume that there is a shared process.
     WebProcessProxy* deprecatedSharedProcess();
 

Modified: trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm (137419 => 137420)


--- trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm	2012-12-12 06:37:00 UTC (rev 137419)
+++ trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm	2012-12-12 07:01:03 UTC (rev 137420)
@@ -47,7 +47,6 @@
 NSString *WebKitLocalCacheDefaultsKey = @"WebKitLocalCache";
 NSString *WebStorageDirectoryDefaultsKey = @"WebKitLocalStorageDatabasePathPreferenceKey";
 NSString *WebKitKerningAndLigaturesEnabledByDefaultDefaultsKey = @"WebKitKerningAndLigaturesEnabledByDefault";
-NSString *WebKitWebProcessCountLimitDefaultsKey = @"WebKitWebProcessCountLimit";
 
 static NSString *WebKitApplicationDidChangeAccessibilityEnhancedUserInterfaceNotification = @"NSApplicationDidChangeAccessibilityEnhancedUserInterfaceNotification";
 
@@ -70,7 +69,6 @@
     didRegister = true;
     NSMutableDictionary *registrationDictionary = [NSMutableDictionary dictionary];
     
-    [registrationDictionary setObject:[NSNumber numberWithInteger:INT_MAX] forKey:WebKitWebProcessCountLimitDefaultsKey];
 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
     [registrationDictionary setObject:[NSNumber numberWithBool:YES] forKey:WebKitKerningAndLigaturesEnabledByDefaultDefaultsKey];
 #endif
@@ -81,10 +79,6 @@
 void WebContext::platformInitialize()
 {
     registerUserDefaultsIfNeeded();
-
-    m_webProcessCountLimit = [[NSUserDefaults standardUserDefaults] integerForKey:WebKitWebProcessCountLimitDefaultsKey];
-    if (m_webProcessCountLimit <= 0)
-        m_webProcessCountLimit = 1;
 }
 
 String WebContext::applicationCacheDirectory()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to