Changeset 49385 in webkit


Ignore:
Timestamp:
Oct 9, 2009 2:36:40 AM (15 years ago)
Author:
jhoneycutt@apple.com
Message:

Remove the WebKitPluginHalterEnabledPreferenceKey in favor of checking
for the existence of a PluginHalterDelegate.

This fixes a leak of WebPluginHalterClients:
https://bugs.webkit.org/show_bug.cgi?id=30119.

WebCore:

Reviewed by Dan Bernstein.

  • WebCore.base.exp:

Removed the export of WebCore::Settings::setPluginHalterEnabled().

  • loader/EmptyClients.h:

(WebCore::EmptyPluginHalterClient::enabled):

  • page/Page.cpp:

(WebCore::Page::Page):
Remove initialization of m_pluginHalterClient, which was removed. If a
non-null PluginHalterClient was passed, create the PluginHalter, and
set its allowed run time.

  • page/Page.h:

Removed pluginHalterEnabledStateChanged() and m_pluginHalterClient.

  • page/PluginHalter.cpp:

(WebCore::PluginHalter::didStartPlugin):
Check whether the PluginHalterClient is enabled.
(WebCore::PluginHalter::didStopPlugin):
Ditto.

  • page/PluginHalter.h:

Made m_client an OwnPtr.

  • page/PluginHalterClient.h:

Added a function to return the enabled state.

  • page/Settings.cpp:

(WebCore::Settings::Settings):
Remove initialization of removed member.

  • page/Settings.h:

Removed settings for the enabled state of the PluginHalter; we now use
the existence of a WebPluginHalterDelegate to determine whether the
PluginHalter is enabled.

WebKit/mac:

  • WebCoreSupport/WebPluginHalterClient.h:

Add declaration for new function.

  • WebCoreSupport/WebPluginHalterClient.mm:

(WebPluginHalterClient::enabled):
Check whether the UIDelegate responds to shouldHaltPlugin.

  • WebView/WebPreferenceKeysPrivate.h:

Remove the "enabled" preference key.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
Remove the initialization of the pref.

  • WebView/WebPreferencesPrivate.h:

Remove the getter/setter for this pref.

  • WebView/WebView.mm:

(-[WebView _preferencesChangedNotification:]):
Remove propagation of the pref.

WebKit/win:

  • Interfaces/IWebPreferencesPrivate.idl:

Remove the getter and setter.

  • WebCoreSupport/WebPluginHalterClient.cpp:

(WebPluginHalterClient::enabled):
Return true if the delegate exists.

  • WebCoreSupport/WebPluginHalterClient.h:

Declare implementation of enabled().

  • WebPreferenceKeysPrivate.h:

Removed the pref key.

  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
Removed initialization of the pref.

  • WebPreferences.h:

Removed declaration of the getter/setter.

  • WebView.cpp:

(WebView::notifyPreferencesChanged):
Don't propagate the pref.

Location:
trunk
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r49372 r49385  
     12009-10-08  Jon Honeycutt  <jhoneycutt@apple.com>
     2
     3        Remove the WebKitPluginHalterEnabledPreferenceKey in favor of checking
     4        for the existence of a PluginHalterDelegate.
     5
     6        This fixes a leak of WebPluginHalterClients:
     7        https://bugs.webkit.org/show_bug.cgi?id=30119.
     8
     9        Reviewed by Dan Bernstein.
     10
     11        * WebCore.base.exp:
     12        Removed the export of WebCore::Settings::setPluginHalterEnabled().
     13
     14        * loader/EmptyClients.h:
     15        (WebCore::EmptyPluginHalterClient::enabled):
     16
     17        * page/Page.cpp:
     18        (WebCore::Page::Page):
     19        Remove initialization of m_pluginHalterClient, which was removed. If a
     20        non-null PluginHalterClient was passed, create the PluginHalter, and
     21        set its allowed run time.
     22
     23        * page/Page.h:
     24        Removed pluginHalterEnabledStateChanged() and m_pluginHalterClient.
     25
     26        * page/PluginHalter.cpp:
     27        (WebCore::PluginHalter::didStartPlugin):
     28        Check whether the PluginHalterClient is enabled.
     29        (WebCore::PluginHalter::didStopPlugin):
     30        Ditto.
     31
     32        * page/PluginHalter.h:
     33        Made m_client an OwnPtr.
     34
     35        * page/PluginHalterClient.h:
     36        Added a function to return the enabled state.
     37
     38        * page/Settings.cpp:
     39        (WebCore::Settings::Settings):
     40        Remove initialization of removed member.
     41
     42        * page/Settings.h:
     43        Removed settings for the enabled state of the PluginHalter; we now use
     44        the existence of a WebPluginHalterDelegate to determine whether the
     45        PluginHalter is enabled.
     46
    1472009-10-08  Adam Barth  <abarth@webkit.org>
    248
  • trunk/WebCore/WebCore.base.exp

    r49372 r49385  
    974974__ZN7WebCore4Page14didStartPluginEPNS_14HaltablePluginE
    975975__ZN7WebCore8Settings23setPluginAllowedRunTimeEj
    976 __ZN7WebCore8Settings22setPluginHalterEnabledEb
    977976_filenameByFixingIllegalCharacters
    978977_hasCaseInsensitiveSubstring
  • trunk/WebCore/loader/EmptyClients.h

    r48748 r49385  
    489489public:
    490490    virtual bool shouldHaltPlugin(Node*) const { return false; }
     491    virtual bool enabled() const { return false; }
    491492};
    492493
  • trunk/WebCore/page/Page.cpp

    r49196 r49385  
    138138    , m_customHTMLTokenizerChunkSize(-1)
    139139    , m_canStartPlugins(true)
    140     , m_pluginHalterClient(pluginHalterClient)
    141140{
    142141#if !ENABLE(CONTEXT_MENUS)
     
    158157    allPages->add(this);
    159158
    160     pluginHalterEnabledStateChanged();
     159    if (pluginHalterClient) {
     160        m_pluginHalter.set(new PluginHalter(pluginHalterClient));
     161        m_pluginHalter->setPluginAllowedRunTime(m_settings->pluginAllowedRunTime());
     162    }
    161163
    162164#if ENABLE(JAVASCRIPT_DEBUGGER)
     
    734736#endif
    735737
    736 void Page::pluginHalterEnabledStateChanged()
    737 {
    738     if (m_settings->pluginHalterEnabled()) {
    739         ASSERT(!m_pluginHalter);
    740         m_pluginHalter.set(new PluginHalter(m_pluginHalterClient));
    741         m_pluginHalter->setPluginAllowedRunTime(m_settings->pluginAllowedRunTime());
    742     } else
    743         m_pluginHalter = 0;
    744 }
    745 
    746738void Page::pluginAllowedRunTimeChanged()
    747739{
  • trunk/WebCore/page/Page.h

    r49196 r49385  
    194194        void didStopPlugin(HaltablePlugin*);
    195195        void pluginAllowedRunTimeChanged();
    196         void pluginHalterEnabledStateChanged();
    197196
    198197        static void setDebuggerForAllPages(JSC::Debugger*);
     
    301300
    302301        OwnPtr<PluginHalter> m_pluginHalter;
    303         PluginHalterClient* m_pluginHalterClient;
    304302
    305303#if ENABLE(DOM_STORAGE)
  • trunk/WebCore/page/PluginHalter.cpp

    r48748 r49385  
    2929
    3030#include "HaltablePlugin.h"
    31 #include "PluginHalterClient.h"
    3231#include <wtf/CurrentTime.h>
    3332#include <wtf/Vector.h>
     
    5049    ASSERT_ARG(obj, !m_plugins.contains(obj));
    5150
     51    if (!m_client->enabled())
     52        return;
     53
    5254    double currentTime = WTF::currentTime();
    5355
     
    6264void PluginHalter::didStopPlugin(HaltablePlugin* obj)
    6365{
     66    if (!m_client->enabled())
     67        return;
     68
    6469    m_plugins.remove(obj);
    6570}
  • trunk/WebCore/page/PluginHalter.h

    r48748 r49385  
    2727#define PluginHalter_h
    2828
     29#include "PluginHalterClient.h"
    2930#include "Timer.h"
    3031#include <wtf/HashMap.h>
     32#include <wtf/OwnPtr.h>
    3133
    3234namespace WebCore {
    3335
    3436class HaltablePlugin;
    35 class PluginHalterClient;
    3637
    3738class PluginHalter {
     
    4849    void startTimerIfNecessary();
    4950
    50     PluginHalterClient* m_client;
     51    OwnPtr<PluginHalterClient> m_client;
    5152    Timer<PluginHalter> m_timer;
    5253    unsigned m_pluginAllowedRunTime;
  • trunk/WebCore/page/PluginHalterClient.h

    r48748 r49385  
    3636
    3737    virtual bool shouldHaltPlugin(Node*) const = 0;
     38    virtual bool enabled() const = 0;
    3839};
    3940
  • trunk/WebCore/page/Settings.cpp

    r49040 r49385  
    118118    , m_acceleratedCompositingEnabled(true)
    119119    , m_experimentalNotificationsEnabled(false)
    120     , m_pluginHalterEnabled(false)
    121120    , m_webGLEnabled(false)
    122121#if ENABLE(WEB_SOCKETS)
     
    516515}
    517516
    518 void Settings::setPluginHalterEnabled(bool enabled)
    519 {
    520     if (m_pluginHalterEnabled == enabled)
    521         return;
    522 
    523     m_pluginHalterEnabled = enabled;
    524 
    525     m_page->pluginHalterEnabledStateChanged();
    526 }
    527 
    528517void Settings::setPluginAllowedRunTime(unsigned runTime)
    529518{
  • trunk/WebCore/page/Settings.h

    r49040 r49385  
    264264        static bool shouldUseHighResolutionTimers() { return gShouldUseHighResolutionTimers; }
    265265#endif
    266 
    267         void setPluginHalterEnabled(bool);
    268         bool pluginHalterEnabled() const { return m_pluginHalterEnabled; }
    269266
    270267        void setPluginAllowedRunTime(unsigned);
     
    346343        bool m_acceleratedCompositingEnabled : 1;
    347344        bool m_experimentalNotificationsEnabled : 1;
    348         bool m_pluginHalterEnabled : 1;
    349345        bool m_webGLEnabled : 1;
    350346
  • trunk/WebKit/mac/ChangeLog

    r49372 r49385  
     12009-10-08  Jon Honeycutt  <jhoneycutt@apple.com>
     2
     3        Remove the WebKitPluginHalterEnabledPreferenceKey in favor of checking
     4        for the existence of a PluginHalterDelegate.
     5
     6        Reviewed by Dan Bernstein.
     7
     8        * WebCoreSupport/WebPluginHalterClient.h:
     9        Add declaration for new function.
     10
     11        * WebCoreSupport/WebPluginHalterClient.mm:
     12        (WebPluginHalterClient::enabled):
     13        Check whether the UIDelegate responds to shouldHaltPlugin.
     14
     15        * WebView/WebPreferenceKeysPrivate.h:
     16        Remove the "enabled" preference key.
     17
     18        * WebView/WebPreferences.mm:
     19        (+[WebPreferences initialize]):
     20        Remove the initialization of the pref.
     21
     22        * WebView/WebPreferencesPrivate.h:
     23        Remove the getter/setter for this pref.
     24
     25        * WebView/WebView.mm:
     26        (-[WebView _preferencesChangedNotification:]):
     27        Remove propagation of the pref.
     28
    1292009-10-08  Adam Barth  <abarth@webkit.org>
    230
  • trunk/WebKit/mac/WebCoreSupport/WebPluginHalterClient.h

    r49152 r49385  
    3737   
    3838    virtual bool shouldHaltPlugin(WebCore::Node*) const;
     39    virtual bool enabled() const;
    3940   
    4041private:
  • trunk/WebKit/mac/WebCoreSupport/WebPluginHalterClient.mm

    r49149 r49385  
    4343    return CallUIDelegateReturningBoolean(NO, m_webView, @selector(webView:shouldHaltPlugin:), kit(pluginNode));
    4444}
     45
     46bool WebPluginHalterClient::enabled() const
     47{
     48    return [[m_webView UIDelegate] respondsToSelector:@selector(webView:shouldHaltPlugin:)];
     49}
  • trunk/WebKit/mac/WebView/WebPreferenceKeysPrivate.h

    r49149 r49385  
    8888#define WebKitAcceleratedCompositingEnabledPreferenceKey @"WebKitAcceleratedCompositingEnabled"
    8989#define WebKitWebGLEnabledPreferenceKey @"WebKitWebGLEnabled"
    90 #define WebKitPluginHalterEnabledPreferenceKey @"WebKitPluginHalterEnabled"
    9190#define WebKitPluginAllowedRunTimePreferenceKey @"WebKitPluginAllowedRunTime"
    9291
  • trunk/WebKit/mac/WebView/WebPreferences.mm

    r49149 r49385  
    354354        [NSNumber numberWithBool:YES],  WebKitAcceleratedCompositingEnabledPreferenceKey,
    355355        [NSNumber numberWithBool:NO],   WebKitWebGLEnabledPreferenceKey,
    356         [NSNumber numberWithBool:NO],   WebKitPluginHalterEnabledPreferenceKey,
    357356        [NSNumber numberWithUnsignedInt:4], WebKitPluginAllowedRunTimePreferenceKey,
    358357        nil];
     
    11741173}
    11751174
    1176 - (BOOL)pluginHalterEnabled
    1177 {
    1178     return [self _boolValueForKey:WebKitPluginHalterEnabledPreferenceKey];
    1179 }
    1180 
    1181 - (void)setPluginHalterEnabled:(BOOL)enabled
    1182 {
    1183     [self _setBoolValue:enabled forKey:WebKitPluginHalterEnabledPreferenceKey];
    1184 }
    1185 
    11861175- (unsigned)pluginAllowedRunTime
    11871176{
  • trunk/WebKit/mac/WebView/WebPreferencesPrivate.h

    r49149 r49385  
    114114- (void)setExperimentalWebSocketsEnabled:(BOOL)websocketsEnabled;
    115115
    116 - (BOOL)pluginHalterEnabled;
    117 - (void)setPluginHalterEnabled:(BOOL)enabled;
    118 
    119116- (unsigned)pluginAllowedRunTime;
    120117- (void)setPluginAllowedRunTime:(unsigned)allowedRunTime;
  • trunk/WebKit/mac/WebView/WebView.mm

    r49372 r49385  
    13181318    settings->setEnforceCSSMIMETypeInStrictMode(!WKAppVersionCheckLessThan(@"com.apple.iWeb", -1, 2.1));
    13191319    settings->setAcceleratedCompositingEnabled([preferences acceleratedCompositingEnabled]);
    1320     settings->setPluginHalterEnabled([preferences pluginHalterEnabled]);
    13211320    settings->setPluginAllowedRunTime([preferences pluginAllowedRunTime]);
    13221321    settings->setWebGLEnabled([preferences webGLEnabled]);
  • trunk/WebKit/win/ChangeLog

    r49372 r49385  
     12009-10-08  Jon Honeycutt  <jhoneycutt@apple.com>
     2
     3        Remove the WebKitPluginHalterEnabledPreferenceKey in favor of checking
     4        for the existence of a PluginHalterDelegate.
     5
     6        Reviewed by Dan Bernstein.
     7
     8        * Interfaces/IWebPreferencesPrivate.idl:
     9        Remove the getter and setter.
     10
     11        * WebCoreSupport/WebPluginHalterClient.cpp:
     12        (WebPluginHalterClient::enabled):
     13        Return true if the delegate exists.
     14
     15        * WebCoreSupport/WebPluginHalterClient.h:
     16        Declare implementation of enabled().
     17
     18        * WebPreferenceKeysPrivate.h:
     19        Removed the pref key.
     20
     21        * WebPreferences.cpp:
     22        (WebPreferences::initializeDefaultSettings):
     23        Removed initialization of the pref.
     24
     25        * WebPreferences.h:
     26        Removed declaration of the getter/setter.
     27
     28        * WebView.cpp:
     29        (WebView::notifyPreferencesChanged):
     30        Don't propagate the pref.
     31
    1322009-10-08  Adam Barth  <abarth@webkit.org>
    233
  • trunk/WebKit/win/Interfaces/IWebPreferencesPrivate.idl

    r48861 r49385  
    9393    HRESULT setPreferenceForTest([in] BSTR key, [in] BSTR value);
    9494
    95     HRESULT setPluginHalterEnabled([in] BOOL enabled);
    96     HRESULT pluginHalterEnabled([out, retval] BOOL* enabled);
    97 
    9895    HRESULT setPluginAllowedRunTime([in] UINT allowedRunTime);
    9996    HRESULT pluginAllowedRunTime([out, retval] UINT* allowedRunTime);
  • trunk/WebKit/win/WebCoreSupport/WebPluginHalterClient.cpp

    r48748 r49385  
    5757    return shouldHalt;
    5858}
     59
     60bool WebPluginHalterClient::enabled() const
     61{
     62    IWebPluginHalterDelegate* d;
     63    if (FAILED(m_webView->pluginHalterDelegate(&d)) || !d)
     64        return false;
     65
     66    return true;
     67}
  • trunk/WebKit/win/WebCoreSupport/WebPluginHalterClient.h

    r48748 r49385  
    4040
    4141    virtual bool shouldHaltPlugin(WebCore::Node* n) const;
     42    virtual bool enabled() const;
    4243
    4344private:
  • trunk/WebKit/win/WebPreferenceKeysPrivate.h

    r48861 r49385  
    130130#define WebKitUseHighResolutionTimersPreferenceKey "WebKitUseHighResolutionTimers"
    131131
    132 #define WebKitPluginHalterEnabledPreferenceKey "WebKitPluginHalterEnabled"
    133 
    134132#define WebKitPluginAllowedRunTimePreferenceKey "WebKitPluginAllowedRunTime"
  • trunk/WebKit/win/WebPreferences.cpp

    r48862 r49385  
    254254    CFDictionaryAddValue(defaults, CFSTR(WebKitUseHighResolutionTimersPreferenceKey), kCFBooleanTrue);
    255255
    256     CFDictionaryAddValue(defaults, CFSTR(WebKitPluginHalterEnabledPreferenceKey), kCFBooleanFalse);
    257 
    258256    RetainPtr<CFStringRef> pluginAllowedRunTime(AdoptCF, CFStringCreateWithFormat(0, 0, CFSTR("%u"), numeric_limits<unsigned>::max()));
    259257    CFDictionaryAddValue(defaults, CFSTR(WebKitPluginAllowedRunTimePreferenceKey), pluginAllowedRunTime.get());
     
    13491347}
    13501348
    1351 
    1352 HRESULT STDMETHODCALLTYPE WebPreferences::setPluginHalterEnabled(BOOL enabled)
    1353 {
    1354     setBoolValue(CFSTR(WebKitPluginHalterEnabledPreferenceKey), enabled);
    1355     return S_OK;
    1356 }
    1357 
    1358 HRESULT STDMETHODCALLTYPE WebPreferences::pluginHalterEnabled(BOOL* enabled)
    1359 {
    1360     *enabled = boolValueForKey(CFSTR(WebKitPluginHalterEnabledPreferenceKey));
    1361     return S_OK;
    1362 }
    1363 
    13641349HRESULT WebPreferences::setPluginAllowedRunTime(UINT allowedRunTime)
    13651350{
  • trunk/WebKit/win/WebPreferences.h

    r48861 r49385  
    381381    /* [retval][out] */ BOOL* useHighResolutionTimers);
    382382
    383     virtual HRESULT STDMETHODCALLTYPE setPluginHalterEnabled(
    384     /* [in] */ BOOL enabled);
    385 
    386     virtual HRESULT STDMETHODCALLTYPE pluginHalterEnabled(
    387     /* [retval][out] */ BOOL* enabled);
    388 
    389383    virtual HRESULT STDMETHODCALLTYPE setPluginAllowedRunTime(
    390384    /* [in] */ UINT allowedRunTime);
  • trunk/WebKit/win/WebView.cpp

    r49372 r49385  
    44424442    settings->setShouldUseHighResolutionTimers(enabled);
    44434443
    4444     hr = prefsPrivate->pluginHalterEnabled(&enabled);
    4445     if (FAILED(hr))
    4446         return hr;
    4447     settings->setPluginHalterEnabled(enabled);
    4448 
    44494444    UINT runTime;
    44504445    hr = prefsPrivate->pluginAllowedRunTime(&runTime);
Note: See TracChangeset for help on using the changeset viewer.