[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

mnaganov at chromium.org mnaganov at chromium.org
Wed Dec 22 11:16:18 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit df0fa0d563ed0b7db361f1ad57099cfdbb9c094e
Author: mnaganov at chromium.org <mnaganov at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Jul 16 09:54:21 2010 +0000

    2010-07-16  Mikhail Naganov  <mnaganov at chromium.org>
    
    	Reviewed by Pavel Feldman.
    
    	Make JS memory stats available via 'Performance' object (Web Timing).
    	This statistics is populated only if 'WebKitMemoryInfoEnabled'
    	preference is set.
    
    	'console.memory' is kept until Web Timing object becomes visible by
    	default (currently it is hidden under compile-time flag).  These stats
    	are guarded with the same preference.
    
    	https://bugs.webkit.org/show_bug.cgi?id=41617
    
    	* bindings/js/JSConsoleCustom.cpp:
    	* bindings/v8/custom/V8ConsoleCustom.cpp:
    	* page/Console.cpp:
    	(WebCore::Console::disconnectFrame):
    	(WebCore::Console::memory):
    	* page/Console.h:
    	* page/Console.idl:
    	* page/MemoryInfo.cpp:
    	(WebCore::MemoryInfo::MemoryInfo):
    	* page/MemoryInfo.h:
    	(WebCore::MemoryInfo::create):
    	* page/Performance.cpp:
    	(WebCore::Performance::disconnectFrame):
    	(WebCore::Performance::memory):
    	* page/Performance.h:
    	* page/Performance.idl:
    	* page/Settings.cpp:
    	(WebCore::Settings::Settings):
    	* page/Settings.h:
    	(WebCore::Settings::setMemoryInfoEnabled):
    	(WebCore::Settings::memoryInfoEnabled):
    
    	* public/WebSettings.h:
    	* src/WebSettingsImpl.cpp:
    	(WebKit::WebSettingsImpl::setMemoryInfoEnabled):
    	* src/WebSettingsImpl.h:
    
    	* WebKit.order:
    	* WebView/WebPreferenceKeysPrivate.h:
    	* WebView/WebPreferences.mm:
    	(+[WebPreferences initialize]):
    	(-[WebPreferences memoryInfoEnabled]):
    	(-[WebPreferences setMemoryInfoEnabled:]):
    	* WebView/WebPreferencesPrivate.h:
    	* WebView/WebView.mm:
    	(-[WebView _preferencesChangedNotification:]):
    
    	* Interfaces/IWebPreferencesPrivate.idl:
    	* WebPreferenceKeysPrivate.h:
    	* WebPreferences.cpp:
    	(WebPreferences::initializeDefaultSettings):
    	(WebPreferences::memoryInfoEnabled):
    	(WebPreferences::setMemoryInfoEnabled):
    	* WebPreferences.h:
    	* WebView.cpp:
    	(WebView::notifyPreferencesChanged):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63537 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index e8f0bab..bd5c3f2 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,39 @@
+2010-07-16  Mikhail Naganov  <mnaganov at chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Make JS memory stats available via 'Performance' object (Web Timing).
+        This statistics is populated only if 'WebKitMemoryInfoEnabled'
+        preference is set.
+
+        'console.memory' is kept until Web Timing object becomes visible by
+        default (currently it is hidden under compile-time flag).  These stats
+        are guarded with the same preference.
+
+        https://bugs.webkit.org/show_bug.cgi?id=41617
+
+        * bindings/js/JSConsoleCustom.cpp:
+        * bindings/v8/custom/V8ConsoleCustom.cpp:
+        * page/Console.cpp:
+        (WebCore::Console::disconnectFrame):
+        (WebCore::Console::memory):
+        * page/Console.h:
+        * page/Console.idl:
+        * page/MemoryInfo.cpp:
+        (WebCore::MemoryInfo::MemoryInfo):
+        * page/MemoryInfo.h:
+        (WebCore::MemoryInfo::create):
+        * page/Performance.cpp:
+        (WebCore::Performance::disconnectFrame):
+        (WebCore::Performance::memory):
+        * page/Performance.h:
+        * page/Performance.idl:
+        * page/Settings.cpp:
+        (WebCore::Settings::Settings):
+        * page/Settings.h:
+        (WebCore::Settings::setMemoryInfoEnabled):
+        (WebCore::Settings::memoryInfoEnabled):
+
 2010-07-16  Nikolas Zimmermann  <nzimmermann at rim.com>
 
         Reviewed by Dirk Schulze.
diff --git a/WebCore/bindings/js/JSConsoleCustom.cpp b/WebCore/bindings/js/JSConsoleCustom.cpp
index b9b407c..3ad34a3 100644
--- a/WebCore/bindings/js/JSConsoleCustom.cpp
+++ b/WebCore/bindings/js/JSConsoleCustom.cpp
@@ -28,9 +28,7 @@
 #include "JSConsole.h"
 
 #include "Console.h"
-#include "JSMemoryInfo.h"
 #include "JSScriptProfile.h"
-#include "MemoryInfo.h"
 #include "ScriptCallStack.h"
 #include "ScriptProfile.h"
 #include <runtime/JSArray.h>
@@ -57,9 +55,4 @@ JSValue JSConsole::profiles(ExecState* exec) const
 
 #endif
 
-JSValue JSConsole::memory(ExecState* exec) const
-{
-    return toJS(exec, MemoryInfo::create());
-}
-
 } // namespace WebCore
diff --git a/WebCore/bindings/v8/custom/V8ConsoleCustom.cpp b/WebCore/bindings/v8/custom/V8ConsoleCustom.cpp
index 62838a0..e925f0d 100644
--- a/WebCore/bindings/v8/custom/V8ConsoleCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8ConsoleCustom.cpp
@@ -33,10 +33,8 @@
 #include "V8Console.h"
 
 #include "Console.h"
-#include "MemoryInfo.h"
 #include "ScriptProfile.h"
 #include "V8Binding.h"
-#include "V8MemoryInfo.h"
 #include "V8Proxy.h"
 #include "V8ScriptProfile.h"
 
@@ -59,10 +57,4 @@ v8::Handle<v8::Value> V8Console::profilesAccessorGetter(v8::Local<v8::String> na
 }
 #endif
 
-v8::Handle<v8::Value> V8Console::memoryAccessorGetter(v8::Local<v8::String>, const v8::AccessorInfo&)
-{
-    INC_STATS("DOM.Console.memoryAccessorGetter");
-    return toV8(MemoryInfo::create());
-}
-
 } // namespace WebCore
diff --git a/WebCore/page/Console.cpp b/WebCore/page/Console.cpp
index 1d6c095..423477a 100644
--- a/WebCore/page/Console.cpp
+++ b/WebCore/page/Console.cpp
@@ -36,6 +36,7 @@
 #include "FrameLoader.h"
 #include "FrameTree.h"
 #include "InspectorController.h"
+#include "MemoryInfo.h"
 #include "Page.h"
 #include "PageGroup.h"
 #include "PlatformString.h"
@@ -61,6 +62,8 @@ Frame* Console::frame() const
 
 void Console::disconnectFrame()
 {
+    if (m_memory)
+        m_memory = 0;
     m_frame = 0;
 }
 
@@ -456,6 +459,12 @@ void Console::warn(ScriptCallStack* callStack)
     addMessage(LogMessageType, WarningMessageLevel, callStack);
 }
 
+MemoryInfo* Console::memory() const
+{
+    m_memory = MemoryInfo::create(m_frame);
+    return m_memory.get();
+}
+
 static bool printExceptions = false;
 
 bool Console::shouldPrintExceptions()
diff --git a/WebCore/page/Console.h b/WebCore/page/Console.h
index 04e743e..3e00050 100644
--- a/WebCore/page/Console.h
+++ b/WebCore/page/Console.h
@@ -29,8 +29,8 @@
 #ifndef Console_h
 #define Console_h
 
+#include "MemoryInfo.h"
 #include "PlatformString.h"
-
 #include "ScriptProfile.h"
 
 #include <wtf/PassRefPtr.h>
@@ -43,7 +43,6 @@ typedef Vector<RefPtr<ScriptProfile> > ProfilesArray;
 #endif
 
 class Frame;
-class MemoryInfo;
 class Page;
 class String;
 class ScriptCallStack;
@@ -116,6 +115,8 @@ public:
     const ProfilesArray& profiles() const { return m_profiles; }
 #endif
 
+    MemoryInfo* memory() const;
+
 private:
     inline Page* page() const;
     void addMessage(MessageType, MessageLevel, ScriptCallStack*, bool acceptNoArguments = false);
@@ -126,6 +127,7 @@ private:
 #if ENABLE(JAVASCRIPT_DEBUGGER)
     ProfilesArray m_profiles;
 #endif
+    mutable RefPtr<MemoryInfo> m_memory;
 };
 
 } // namespace WebCore
diff --git a/WebCore/page/Console.idl b/WebCore/page/Console.idl
index 1506210..b79ff50 100644
--- a/WebCore/page/Console.idl
+++ b/WebCore/page/Console.idl
@@ -61,7 +61,7 @@ module window {
         [CustomArgumentHandling] void groupCollapsed();
         void groupEnd();
 
-        readonly attribute [CustomGetter] MemoryInfo memory;
+        readonly attribute MemoryInfo memory;
     };
 
 }
diff --git a/WebCore/page/MemoryInfo.cpp b/WebCore/page/MemoryInfo.cpp
index 010a19c..c2247b9 100644
--- a/WebCore/page/MemoryInfo.cpp
+++ b/WebCore/page/MemoryInfo.cpp
@@ -31,17 +31,21 @@
 #include "config.h"
 #include "MemoryInfo.h"
 
+#include "Frame.h"
 #include "ScriptGCEvent.h"
+#include "Settings.h"
 
 namespace WebCore {
 
-MemoryInfo::MemoryInfo()
+MemoryInfo::MemoryInfo(Frame* frame)
         : m_totalJSHeapSize(0),
           m_usedJSHeapSize(0)
 {
+    if (frame && frame->settings() && frame->settings()->memoryInfoEnabled()) {
 #if ENABLE(INSPECTOR)
-    ScriptGCEvent::getHeapSize(m_usedJSHeapSize, m_totalJSHeapSize);
+        ScriptGCEvent::getHeapSize(m_usedJSHeapSize, m_totalJSHeapSize);
 #endif
+    }
 }
 
 } // namespace WebCore
diff --git a/WebCore/page/MemoryInfo.h b/WebCore/page/MemoryInfo.h
index e9e0fa5..615e952 100644
--- a/WebCore/page/MemoryInfo.h
+++ b/WebCore/page/MemoryInfo.h
@@ -36,15 +36,17 @@
 
 namespace WebCore {
 
+class Frame;
+
 class MemoryInfo : public RefCounted<MemoryInfo> {
 public:
-    static PassRefPtr<MemoryInfo> create() { return adoptRef(new MemoryInfo()); }
+    static PassRefPtr<MemoryInfo> create(Frame* frame) { return adoptRef(new MemoryInfo(frame)); }
 
     size_t totalJSHeapSize() const { return m_totalJSHeapSize; }
     size_t usedJSHeapSize() const { return m_usedJSHeapSize; }
 
 private:
-    MemoryInfo();
+    MemoryInfo(Frame*);
 
     size_t m_totalJSHeapSize;
     size_t m_usedJSHeapSize;
diff --git a/WebCore/page/Performance.cpp b/WebCore/page/Performance.cpp
index c19ce8f..c4234a7 100644
--- a/WebCore/page/Performance.cpp
+++ b/WebCore/page/Performance.cpp
@@ -31,6 +31,7 @@
 #include "config.h"
 #include "Performance.h"
 
+#include "MemoryInfo.h"
 #include "Navigation.h"
 #include "Timing.h"
 
@@ -52,6 +53,8 @@ Frame* Performance::frame() const
 
 void Performance::disconnectFrame()
 {
+    if (m_memory)
+        m_memory = 0;
     if (m_navigation) {
         m_navigation->disconnectFrame();
         m_navigation = 0;
@@ -63,6 +66,12 @@ void Performance::disconnectFrame()
     m_frame = 0;
 }
 
+MemoryInfo* Performance::memory() const
+{
+    m_memory = MemoryInfo::create(m_frame);
+    return m_memory.get();
+}
+
 Navigation* Performance::navigation() const
 {
     if (!m_navigation)
diff --git a/WebCore/page/Performance.h b/WebCore/page/Performance.h
index f317076..9736fe7 100644
--- a/WebCore/page/Performance.h
+++ b/WebCore/page/Performance.h
@@ -33,6 +33,7 @@
 
 #if ENABLE(WEB_TIMING)
 
+#include "MemoryInfo.h"
 #include "Navigation.h"
 #include "Timing.h"
 #include <wtf/PassRefPtr.h>
@@ -48,12 +49,14 @@ public:
     Frame* frame() const;
     void disconnectFrame();
 
+    MemoryInfo* memory() const;
     Navigation* navigation() const;
     Timing* timing() const;
 
 private:
     Performance(Frame*);
 
+    mutable RefPtr<MemoryInfo> m_memory;
     mutable RefPtr<Navigation> m_navigation;
     mutable RefPtr<Timing> m_timing;
     Frame* m_frame;
diff --git a/WebCore/page/Performance.idl b/WebCore/page/Performance.idl
index 3885e2c..ffe8b6f 100644
--- a/WebCore/page/Performance.idl
+++ b/WebCore/page/Performance.idl
@@ -34,6 +34,7 @@ module window {
     interface [Conditional=WEB_TIMING, OmitConstructor] Performance {
         readonly attribute Navigation navigation;
         readonly attribute Timing timing;
+        readonly attribute MemoryInfo memory;
     };
 
 }
diff --git a/WebCore/page/Settings.cpp b/WebCore/page/Settings.cpp
index f100688..3a942ed 100644
--- a/WebCore/page/Settings.cpp
+++ b/WebCore/page/Settings.cpp
@@ -136,6 +136,7 @@ Settings::Settings(Page* page)
     , m_html5TreeBuilderEnabled(false) // Will be deleted soon, do not use.
     , m_paginateDuringLayoutEnabled(false)
     , m_dnsPrefetchingEnabled(true)
+    , m_memoryInfoEnabled(false)
 {
     // A Frame may not have been created yet, so we initialize the AtomicString 
     // hash before trying to use it.
diff --git a/WebCore/page/Settings.h b/WebCore/page/Settings.h
index 2ac5d27..b42fe02 100644
--- a/WebCore/page/Settings.h
+++ b/WebCore/page/Settings.h
@@ -310,6 +310,9 @@ namespace WebCore {
         void setPaginateDuringLayoutEnabled(bool flag) { m_paginateDuringLayoutEnabled = flag; }
         bool paginateDuringLayoutEnabled() const { return m_paginateDuringLayoutEnabled; }
 
+        void setMemoryInfoEnabled(bool flag) { m_memoryInfoEnabled = flag; }
+        bool memoryInfoEnabled() const { return m_memoryInfoEnabled; }
+
     private:
         Page* m_page;
         
@@ -393,6 +396,7 @@ namespace WebCore {
         bool m_html5TreeBuilderEnabled: 1; // Will be deleted soon, do not use.
         bool m_paginateDuringLayoutEnabled : 1;
         bool m_dnsPrefetchingEnabled : 1;
+        bool m_memoryInfoEnabled: 1;
     
 #if USE(SAFARI_THEME)
         static bool gShouldPaintNativeControls;
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index e005ba8..f258c2a 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,22 @@
+2010-07-16  Mikhail Naganov  <mnaganov at chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Make JS memory stats available via 'Performance' object (Web Timing).
+        This statistics is populated only if 'WebKitMemoryInfoEnabled'
+        preference is set.
+
+        'console.memory' is kept until Web Timing object becomes visible by
+        default (currently it is hidden under compile-time flag).  These stats
+        are guarded with the same preference.
+
+        https://bugs.webkit.org/show_bug.cgi?id=41617
+
+        * public/WebSettings.h:
+        * src/WebSettingsImpl.cpp:
+        (WebKit::WebSettingsImpl::setMemoryInfoEnabled):
+        * src/WebSettingsImpl.h:
+
 2010-07-15  Victor Wang  <victorw at chromium.org>
 
         Reviewed by David Levin.
diff --git a/WebKit/chromium/public/WebSettings.h b/WebKit/chromium/public/WebSettings.h
index de895e1..32cefa1 100644
--- a/WebKit/chromium/public/WebSettings.h
+++ b/WebKit/chromium/public/WebSettings.h
@@ -92,6 +92,7 @@ public:
     virtual void setEditingBehavior(EditingBehavior) = 0;
     virtual void setAcceleratedCompositingEnabled(bool) = 0;
     virtual void setHTML5ParserEnabled(bool) = 0;
+    virtual void setMemoryInfoEnabled(bool) = 0;
 
 protected:
     ~WebSettings() { }
diff --git a/WebKit/chromium/src/WebSettingsImpl.cpp b/WebKit/chromium/src/WebSettingsImpl.cpp
index 7e89a77..6a02ed6 100644
--- a/WebKit/chromium/src/WebSettingsImpl.cpp
+++ b/WebKit/chromium/src/WebSettingsImpl.cpp
@@ -284,4 +284,9 @@ void WebSettingsImpl::setHTML5ParserEnabled(bool enabled)
     m_settings->setHTML5ParserEnabled(enabled);
 }
 
+void WebSettingsImpl::setMemoryInfoEnabled(bool enabled)
+{
+    m_settings->setMemoryInfoEnabled(enabled);
+}
+
 } // namespace WebKit
diff --git a/WebKit/chromium/src/WebSettingsImpl.h b/WebKit/chromium/src/WebSettingsImpl.h
index 70bd792..fe5db51 100644
--- a/WebKit/chromium/src/WebSettingsImpl.h
+++ b/WebKit/chromium/src/WebSettingsImpl.h
@@ -88,6 +88,7 @@ public:
     virtual void setEditingBehavior(EditingBehavior);
     virtual void setAcceleratedCompositingEnabled(bool);
     virtual void setHTML5ParserEnabled(bool);
+    virtual void setMemoryInfoEnabled(bool);
 
 private:
     WebCore::Settings* m_settings;
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index 069bcc5..7281ad2 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,27 @@
+2010-07-16  Mikhail Naganov  <mnaganov at chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Make JS memory stats available via 'Performance' object (Web Timing).
+        This statistics is populated only if 'WebKitMemoryInfoEnabled'
+        preference is set.
+
+        'console.memory' is kept until Web Timing object becomes visible by
+        default (currently it is hidden under compile-time flag).  These stats
+        are guarded with the same preference.
+
+        https://bugs.webkit.org/show_bug.cgi?id=41617
+
+        * WebKit.order:
+        * WebView/WebPreferenceKeysPrivate.h:
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        (-[WebPreferences memoryInfoEnabled]):
+        (-[WebPreferences setMemoryInfoEnabled:]):
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChangedNotification:]):
+
 2010-07-15  Shinichiro Hamaji  <hamaji at chromium.org>
 
         Reviewed by Darin Adler.
diff --git a/WebKit/mac/WebKit.order b/WebKit/mac/WebKit.order
index 1776616..c2b5f5d 100644
--- a/WebKit/mac/WebKit.order
+++ b/WebKit/mac/WebKit.order
@@ -283,6 +283,7 @@ _WKAppVersionCheckLessThan
 -[WebPreferences(WebPrivate) showRepaintCounter]
 -[WebPreferences(WebPrivate) pluginAllowedRunTime]
 -[WebPreferences(WebPrivate) webGLEnabled]
+-[WebPreferences(WebPrivate) memoryInfoEnabled]
 -[WebPreferences(WebPrivate) isFrameFlatteningEnabled]
 -[WebView setMaintainsBackForwardList:]
 -[WebView setUIDelegate:]
@@ -1883,6 +1884,7 @@ __ZN24WebDatabaseTrackerClient25dispatchDidModifyDatabaseEPN7WebCore14SecurityOr
 -[WebPreferences setUsesPageCache:]
 -[WebPreferences(WebPrivate) setAcceleratedCompositingEnabled:]
 -[WebPreferences(WebPrivate) setWebGLEnabled:]
+-[WebPreferences(WebPrivate) setMemoryInfoEnabled:]
 +[WebPluginDatabase setAdditionalWebPlugInPaths:]
 -[WebDefaultUIDelegate webView:didDrawRect:]
 -[WebView(WebPrivate) _setPostsAcceleratedCompositingNotifications:]
diff --git a/WebKit/mac/WebView/WebPreferenceKeysPrivate.h b/WebKit/mac/WebView/WebPreferenceKeysPrivate.h
index a28be49..4175a5d 100644
--- a/WebKit/mac/WebView/WebPreferenceKeysPrivate.h
+++ b/WebKit/mac/WebView/WebPreferenceKeysPrivate.h
@@ -97,6 +97,7 @@
 #define WebKitHTML5TreeBuilderEnabledPreferenceKey @"WebKitHTML5TreeBuilderEnabled" // Temporary, do not use.
 #define WebKitPaginateDuringLayoutEnabledPreferenceKey @"WebKitPaginateDuringLayoutEnabled"
 #define WebKitDNSPrefetchingEnabledPreferenceKey @"WebKitDNSPrefetchingEnabled"
+#define WebKitMemoryInfoEnabledPreferenceKey @"WebKitMemoryInfoEnabled"
 
 // These are private both because callers should be using the cover methods and because the
 // cover methods themselves are private.
diff --git a/WebKit/mac/WebView/WebPreferences.mm b/WebKit/mac/WebView/WebPreferences.mm
index a376458..6f6230b 100644
--- a/WebKit/mac/WebView/WebPreferences.mm
+++ b/WebKit/mac/WebView/WebPreferences.mm
@@ -363,6 +363,7 @@ static WebCacheModel cacheModelForMainBundle(void)
         [NSNumber numberWithBool:YES],  WebKitHTML5ParserEnabledPreferenceKey,
         [NSNumber numberWithBool:NO],   WebKitHTML5TreeBuilderEnabledPreferenceKey,
         [NSNumber numberWithBool:YES],  WebKitDNSPrefetchingEnabledPreferenceKey,
+        [NSNumber numberWithBool:NO],   WebKitMemoryInfoEnabledPreferenceKey,
         nil];
 
     // This value shouldn't ever change, which is assumed in the initialization of WebKitPDFDisplayModePreferenceKey above
@@ -1281,6 +1282,16 @@ static NSString *classIBCreatorID = nil;
     [self _setBoolValue:flag forKey:WebKitPaginateDuringLayoutEnabledPreferenceKey];
 }
 
+- (BOOL)memoryInfoEnabled
+{
+    return [self _boolValueForKey:WebKitMemoryInfoEnabledPreferenceKey];
+}
+
+- (void)setMemoryInfoEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitMemoryInfoEnabledPreferenceKey];
+}
+
 - (WebKitEditingBehavior)editingBehavior
 {
     return static_cast<WebKitEditingBehavior>([self _integerValueForKey:WebKitEditingBehaviorPreferenceKey]);
diff --git a/WebKit/mac/WebView/WebPreferencesPrivate.h b/WebKit/mac/WebView/WebPreferencesPrivate.h
index e94943f..073b364 100644
--- a/WebKit/mac/WebView/WebPreferencesPrivate.h
+++ b/WebKit/mac/WebView/WebPreferencesPrivate.h
@@ -191,6 +191,9 @@ extern NSString *WebPreferencesRemovedNotification;
 - (BOOL)usesProxiedOpenPanel;
 - (void)setUsesProxiedOpenPanel:(BOOL)enabled;
 
+- (BOOL)memoryInfoEnabled;
+- (void)setMemoryInfoEnabled:(BOOL)enabled;
+
 // Other private methods
 - (void)_postPreferencesChangesNotification;
 + (WebPreferences *)_getInstanceForIdentifier:(NSString *)identifier;
diff --git a/WebKit/mac/WebView/WebView.mm b/WebKit/mac/WebView/WebView.mm
index 6881072..25a990a 100644
--- a/WebKit/mac/WebView/WebView.mm
+++ b/WebKit/mac/WebView/WebView.mm
@@ -1433,6 +1433,7 @@ static bool fastDocumentTeardownEnabled()
     settings->setHTML5ParserEnabled([preferences html5ParserEnabled]);
     settings->setHTML5TreeBuilderEnabled_DO_NOT_USE([preferences html5TreeBuilderEnabled]);
     settings->setPaginateDuringLayoutEnabled([preferences paginateDuringLayoutEnabled]);
+    settings->setMemoryInfoEnabled([preferences memoryInfoEnabled]);
 }
 
 static inline IMP getMethod(id o, SEL s)
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index d03924b..52ee776 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,27 @@
+2010-07-16  Mikhail Naganov  <mnaganov at chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Make JS memory stats available via 'Performance' object (Web Timing).
+        This statistics is populated only if 'WebKitMemoryInfoEnabled'
+        preference is set.
+
+        'console.memory' is kept until Web Timing object becomes visible by
+        default (currently it is hidden under compile-time flag).  These stats
+        are guarded with the same preference.
+
+        https://bugs.webkit.org/show_bug.cgi?id=41617
+
+        * Interfaces/IWebPreferencesPrivate.idl:
+        * WebPreferenceKeysPrivate.h:
+        * WebPreferences.cpp:
+        (WebPreferences::initializeDefaultSettings):
+        (WebPreferences::memoryInfoEnabled):
+        (WebPreferences::setMemoryInfoEnabled):
+        * WebPreferences.h:
+        * WebView.cpp:
+        (WebView::notifyPreferencesChanged):
+
 2010-07-14  Brent Fulgham  <bfulgham at webkit.org>
 
         Reviewed by Steve Falkenburg.
diff --git a/WebKit/win/Interfaces/IWebPreferencesPrivate.idl b/WebKit/win/Interfaces/IWebPreferencesPrivate.idl
index 119c3ff..bca8d6f 100644
--- a/WebKit/win/Interfaces/IWebPreferencesPrivate.idl
+++ b/WebKit/win/Interfaces/IWebPreferencesPrivate.idl
@@ -115,4 +115,7 @@ interface IWebPreferencesPrivate : IUnknown
 
     HRESULT isDNSPrefetchingEnabled([out, retval] BOOL *enabled);
     HRESULT setDNSPrefetchingEnabled([in] BOOL enabled);
+
+    HRESULT memoryInfoEnabled([out, retval] BOOL *enabled);
+    HRESULT setMemoryInfoEnabled([in] BOOL enabled);
 }
diff --git a/WebKit/win/WebPreferenceKeysPrivate.h b/WebKit/win/WebPreferenceKeysPrivate.h
index 40c86c0..f62905c 100644
--- a/WebKit/win/WebPreferenceKeysPrivate.h
+++ b/WebKit/win/WebPreferenceKeysPrivate.h
@@ -145,3 +145,5 @@
 #define WebKitCustomDragCursorsEnabledPreferenceKey "WebKitCustomDragCursorsEnabled"
 
 #define WebKitDNSPrefetchingEnabledPreferenceKey "WebKitDNSPrefetchingEnabled"
+
+#define WebKitMemoryInfoEnabledPreferenceKey "WebKitMemoryInfoEnabled"
diff --git a/WebKit/win/WebPreferences.cpp b/WebKit/win/WebPreferences.cpp
index 12b0a72..a1055cb 100644
--- a/WebKit/win/WebPreferences.cpp
+++ b/WebKit/win/WebPreferences.cpp
@@ -263,6 +263,8 @@ void WebPreferences::initializeDefaultSettings()
 
     CFDictionaryAddValue(defaults, CFSTR(WebKitDNSPrefetchingEnabledPreferenceKey), kCFBooleanTrue);
 
+    CFDictionaryAddValue(defaults, CFSTR(WebKitMemoryInfoEnabledPreferenceKey), kCFBooleanFalse);
+
     defaultSettings = defaults;
 }
 
@@ -1485,6 +1487,18 @@ HRESULT WebPreferences::isDNSPrefetchingEnabled(BOOL* enabled)
     return S_OK;
 }
 
+HRESULT WebPreferences::memoryInfoEnabled(BOOL* enabled)
+{
+    *enabled = boolValueForKey(CFSTR(WebKitMemoryInfoEnabledPreferenceKey));
+    return S_OK;
+}
+
+HRESULT WebPreferences::setMemoryInfoEnabled(BOOL enabled)
+{
+    setBoolValue(CFSTR(WebKitMemoryInfoEnabledPreferenceKey), enabled);
+    return S_OK;
+}
+
 void WebPreferences::willAddToWebView()
 {
     ++m_numWebViews;
diff --git a/WebKit/win/WebPreferences.h b/WebKit/win/WebPreferences.h
index fc57241..463e1b3 100644
--- a/WebKit/win/WebPreferences.h
+++ b/WebKit/win/WebPreferences.h
@@ -423,6 +423,9 @@ public:
     virtual HRESULT STDMETHODCALLTYPE setDNSPrefetchingEnabled(BOOL);
     virtual HRESULT STDMETHODCALLTYPE isDNSPrefetchingEnabled(BOOL*);
 
+    virtual HRESULT STDMETHODCALLTYPE setMemoryInfoEnabled(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE memoryInfoEnabled(BOOL*);
+
     // WebPreferences
 
     // This method accesses a different preference key than developerExtrasEnabled.
diff --git a/WebKit/win/WebView.cpp b/WebKit/win/WebView.cpp
index a24944d..441ebb9 100644
--- a/WebKit/win/WebView.cpp
+++ b/WebKit/win/WebView.cpp
@@ -4745,6 +4745,11 @@ HRESULT WebView::notifyPreferencesChanged(IWebNotification* notification)
         return hr;
     settings->setDNSPrefetchingEnabled(enabled);
 
+    hr = prefsPrivate->memoryInfoEnabled(&enabled);
+    if (FAILED(hr))
+        return hr;
+    settings->setMemoryInfoEnabled(enabled);
+
     if (!m_closeWindowTimer)
         m_mainFrame->invalidate(); // FIXME
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list