Changeset 39212 in webkit


Ignore:
Timestamp:
Dec 11, 2008 11:10:47 AM (15 years ago)
Author:
eric@webkit.org
Message:

2008-12-10 Glenn Wilson <gwilson@google.com>

Reviewed by Adam Roben.

Added new methods for overriding default WebPreference values
and for resetting preferences to their defaults.
https://bugs.webkit.org/show_bug.cgi?id=20534

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm: (-[WebPreferences resetToDefaults]): new method (-[WebPreferences overridePreference:flag:]): new method
  • WebView/WebPreferencesPrivate.h: new method signatures

2008-12-10 Glenn Wilson <gwilson@google.com>

Reviewed by Adam Roben.

Added support for overriding default preferences per-test.
https://bugs.webkit.org/show_bug.cgi?id=20534
Two new methods were added: resetToDefaults and overridePreference.

  • Interfaces/IWebPreferencesPrivate.idl: new method signatures
  • WebPreferenceKeysPrivate.h: added new key for internal state
  • WebPreferences.cpp: added new methods (WebPreferences::overridePreference): new method (WebPreferences::resetToDefaults): new method
  • WebPreferences.h: new method signatures

2008-12-10 Glenn Wilson <gwilson@google.com>

Reviewed by Adam Roben.

Changed LayoutTestController and DumpRenderTree to allow for manual
overriding of default preferences at test time. Also added support for
resetting the preferences after each test.
https://bugs.webkit.org/show_bug.cgi?id=20534

  • DumpRenderTree/LayoutTestController.cpp: Added callback method for overriding preferences
  • DumpRenderTree/LayoutTestController.h: Added signature for callback
  • DumpRenderTree/win/DumpRenderTree.cpp: Added calls to reset preferences after each test if necessary
  • DumpRenderTree/win/LayoutTestControllerWin.cpp: Added JS override function
  • DumpRenderTree/mac/DumpRenderTree.mm: Added calls to reset preferences after each test if necessary
  • DumpRenderTree/mac/LayoutTestControllerMac.mm: Added JS override function
Location:
trunk
Files:
6 added
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/mac/ChangeLog

    r39195 r39212  
     12008-12-10  Glenn Wilson  <gwilson@google.com>
     2
     3        Reviewed by Adam Roben.
     4
     5        Added new methods for overriding default WebPreference values
     6        and for resetting preferences to their defaults.
     7        https://bugs.webkit.org/show_bug.cgi?id=20534
     8
     9        * WebView/WebPreferenceKeysPrivate.h:
     10        * WebView/WebPreferences.mm:
     11        (-[WebPreferences resetToDefaults]): new method
     12        (-[WebPreferences overridePreference:flag:]): new method
     13        * WebView/WebPreferencesPrivate.h: new method signatures
     14
    1152008-12-10  Anders Carlsson  <andersca@apple.com>
    216
  • trunk/WebKit/mac/WebView/WebPreferenceKeysPrivate.h

    r38410 r39212  
    7373#define WebKitOfflineWebApplicationCacheEnabledPreferenceKey @"WebKitOfflineWebApplicationCacheEnabled"
    7474#define WebKitZoomsTextOnlyPreferenceKey @"WebKitZoomsTextOnly"
     75#define WebKitDefaultPreferencesOverridden @"WebKitDefaultPreferencesOverridden"
    7576
    7677// These are private both because callers should be using the cover methods and because the
  • trunk/WebKit/mac/WebView/WebPreferences.mm

    r38778 r39212  
    10961096    return [self _boolValueForKey:WebKitEnableFullDocumentTeardownPreferenceKey];
    10971097}
     1098
     1099- (void)resetToDefaults
     1100{
     1101    if (![self _boolValueForKey:WebKitDefaultPreferencesOverridden])
     1102        return;
     1103    [self init];
     1104
     1105    [self _setBoolValue:false forKey:WebKitDefaultPreferencesOverridden];
     1106    [self _postPreferencesChangesNotification];
     1107}
     1108
     1109- (void)overridePreference:(NSString *)key flag:(NSString *)preferenceFlag
     1110{
     1111    [self _setStringValue:preferenceFlag forKey:key];
     1112    [self _setBoolValue:true forKey:WebKitDefaultPreferencesOverridden];
     1113}
     1114
     1115
     1116
    10981117@end
    10991118
  • trunk/WebKit/mac/WebView/WebPreferencesPrivate.h

    r38410 r39212  
    103103- (void)setTextDirectionSubmenuInclusionBehavior:(WebTextDirectionSubmenuInclusionBehavior)behavior;
    104104
     105// This method is meant for overriding preferences for tests run
     106// with DumpRenderTree only.
     107-(void)overridePreference:(NSString *)key flag:(NSString *)flag;
     108
     109// This method is meant for resetting overridden preferences for tests run
     110// with DumpRenderTree only.
     111-(void)resetToDefaults;
     112
     113
    105114// If site-specific spoofing is enabled, some pages that do inappropriate user-agent string checks will be
    106115// passed a nonstandard user-agent string to get them to work correctly. This method might be removed in
  • trunk/WebKit/win/ChangeLog

    r39201 r39212  
     12008-12-10  Glenn Wilson  <gwilson@google.com>
     2
     3        Reviewed by Adam Roben.
     4
     5        Added support for overriding default preferences per-test.
     6        https://bugs.webkit.org/show_bug.cgi?id=20534
     7        Two new methods were added: resetToDefaults and overridePreference.
     8
     9        * Interfaces/IWebPreferencesPrivate.idl: new method signatures
     10        * WebPreferenceKeysPrivate.h: added new key for internal state
     11        * WebPreferences.cpp: added new methods
     12        (WebPreferences::overridePreference): new method
     13        (WebPreferences::resetToDefaults): new method
     14        * WebPreferences.h: new method signatures
     15
    1162008-12-08  Tor Arne Vestbø  <tavestbo@trolltech.com>
    217
  • trunk/WebKit/win/Interfaces/IWebPreferencesPrivate.idl

    r38234 r39212  
    6767    HRESULT setLocalStorageEnabled([in] BOOL enabled);
    6868    HRESULT localStorageEnabled([out, retval] BOOL *enabled);
     69
     70    // This method is meant for overriding preferences for tests run
     71    // with DumpRenderTree only.
     72    HRESULT overridePreference([in] BSTR key, [in] BSTR value);
     73
     74    // This method is meant for resetting overridden preferences for tests run
     75    // with DumpRenderTree only.
     76    HRESULT resetToDefaults();
     77
    6978}
  • trunk/WebKit/win/WebPreferenceKeysPrivate.h

    r38234 r39212  
    6363#define WebKitCacheModelPreferenceKey "WebKitCacheModelPreferenceKey"
    6464#define WebKitLocalStorageDatabasePathPreferenceKey "WebKitLocalStorageDatabasePath"
     65#define WebKitDefaultPreferencesOverridden "WebKitDefaultPreferencesOverridden"
    6566
    6667// These are private both because callers should be using the cover methods and because the
  • trunk/WebKit/win/WebPreferences.cpp

    r38234 r39212  
    12241224}
    12251225
     1226HRESULT STDMETHODCALLTYPE WebPreferences::overridePreference(BSTR key, BSTR value)
     1227{
     1228    if (!SysStringLen(key) || !SysStringLen(value))
     1229        return E_FAIL;
     1230    RetainPtr<CFStringRef> keyRef(AdoptCF, CFStringCreateWithCharacters(0, reinterpret_cast<UniChar*>(key), SysStringLen(key)));
     1231    setStringValue(keyRef.get(), value);
     1232    setBoolValue(CFSTR(WebKitDefaultPreferencesOverridden), true);
     1233    return S_OK;
     1234}
     1235
     1236HRESULT STDMETHODCALLTYPE WebPreferences::resetToDefaults()
     1237{
     1238    if (!boolValueForKey(CFSTR(WebKitDefaultPreferencesOverridden)))
     1239        return S_OK;
     1240
     1241    int count = CFDictionaryGetCount(defaultSettings);
     1242    if (count <= 0)
     1243        return S_OK;
     1244
     1245    OwnArrayPtr<CFTypeRef> keys(new CFTypeRef[count]);
     1246    OwnArrayPtr<CFTypeRef> values(new CFTypeRef[count]);
     1247    CFDictionaryGetKeysAndValues(defaultSettings, keys.get(), values.get());
     1248
     1249    for (int i = 0; i < count; ++i)
     1250        setValueForKey(static_cast<CFStringRef>(keys[i]), values[i]);
     1251
     1252    setBoolValue(CFSTR(WebKitDefaultPreferencesOverridden), false);
     1253
     1254    postPreferencesChangesNotification();
     1255
     1256    return S_OK;
     1257}
     1258
    12261259void WebPreferences::willAddToWebView()
    12271260{
  • trunk/WebKit/win/WebPreferences.h

    r38234 r39212  
    339339    /* [retval][out] */ BOOL *zoomsTextOnly);
    340340
     341    // This method is meant for overriding preferences for tests run
     342    // with DumpRenderTree only.
     343    virtual HRESULT STDMETHODCALLTYPE overridePreference(
     344        /* [in] */ BSTR key,
     345        /* [in] */ BSTR value);
     346
     347    // This method is meant for resetting overridden preferences for tests run
     348    // with DumpRenderTree only.
     349    virtual HRESULT STDMETHODCALLTYPE resetToDefaults();
     350
    341351    // WebPreferences
    342352
  • trunk/WebKitTools/ChangeLog

    r39191 r39212  
     12008-12-10  Glenn Wilson  <gwilson@google.com>
     2
     3        Reviewed by Adam Roben.
     4
     5        Changed LayoutTestController and DumpRenderTree to allow for manual
     6        overriding of default preferences at test time.  Also added support for
     7        resetting the preferences after each test.
     8        https://bugs.webkit.org/show_bug.cgi?id=20534
     9
     10        * DumpRenderTree/LayoutTestController.cpp: Added callback method for overriding preferences
     11        * DumpRenderTree/LayoutTestController.h: Added signature for callback
     12        * DumpRenderTree/win/DumpRenderTree.cpp: Added calls to reset preferences after each test if necessary
     13        * DumpRenderTree/win/LayoutTestControllerWin.cpp: Added JS override function
     14        * DumpRenderTree/mac/DumpRenderTree.mm: Added calls to reset preferences after each test if necessary
     15        * DumpRenderTree/mac/LayoutTestControllerMac.mm: Added JS override function
     16
    1172008-12-10  Brady Eidson  <beidson@apple.com>
    218
    3         Reviewed by Darin
     19        Reviewed by Darin Adler.
    420       
    521        Implement the new policy delegate (including navigation type and permissive mode) for DRT/win
  • trunk/WebKitTools/DumpRenderTree/LayoutTestController.cpp

    r39178 r39212  
    349349}
    350350
     351static JSValueRef overridePreferenceCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
     352{
     353    if (argumentCount < 2)
     354        return JSValueMakeUndefined(context);
     355
     356    JSRetainPtr<JSStringRef> key(Adopt, JSValueToStringCopy(context, arguments[0], exception));
     357    ASSERT(!*exception);
     358    JSRetainPtr<JSStringRef> value(Adopt, JSValueToStringCopy(context, arguments[1], exception));
     359    ASSERT(!*exception);
     360
     361    LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
     362    controller->overridePreference(key.get(), value.get());
     363
     364    return JSValueMakeUndefined(context);
     365}
     366
    351367static JSValueRef keepWebHistoryCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
    352368{
     
    803819        { "keepWebHistory", keepWebHistoryCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    804820        { "notifyDone", notifyDoneCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     821        { "overridePreference", overridePreferenceCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    805822        { "pathToLocalResource", pathToLocalResourceCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    806823        { "queueBackNavigation", queueBackNavigationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
  • trunk/WebKitTools/DumpRenderTree/LayoutTestController.h

    r39178 r39212  
    7474    void setPersistentUserStyleSheetLocation(JSStringRef path);
    7575    void clearPersistentUserStyleSheet();
     76    void overridePreference(JSStringRef key, JSStringRef flag);
    7677    int windowCount();
    7778   
  • trunk/WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm

    r38884 r39212  
    979979
    980980    WebPreferences *preferences = [webView preferences];
     981    [preferences resetToDefaults];
    981982    [preferences setPrivateBrowsingEnabled:NO];
    982983    [preferences setAuthorAndUserStylesEnabled:YES];
  • trunk/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm

    r39178 r39212  
    268268}
    269269
     270void LayoutTestController::overridePreference(JSStringRef key, JSStringRef flag)
     271{
     272    RetainPtr<CFStringRef> keyCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, key));
     273    NSString *keyNS = (NSString *)keyCF.get();
     274
     275    RetainPtr<CFStringRef> flagCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, flag));
     276    NSString *flagNS = (NSString *)flagCF.get();
     277
     278    [[WebPreferences standardPreferences] overridePreference:keyNS flag:flagNS];
     279}
     280
    270281void LayoutTestController::setPersistentUserStyleSheetLocation(JSStringRef jsURL)
    271282{
  • trunk/WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp

    r39191 r39212  
    657657        COMPtr<IWebPreferencesPrivate> prefsPrivate(Query, preferences);
    658658        if (prefsPrivate) {
     659            prefsPrivate->resetToDefaults();
    659660            prefsPrivate->setAuthorAndUserStylesEnabled(TRUE);
    660661            prefsPrivate->setDeveloperExtrasEnabled(FALSE);
  • trunk/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp

    r39191 r39212  
    4242#include <JavaScriptCore/JavaScriptCore.h>
    4343#include <JavaScriptCore/JSRetainPtr.h>
     44#include <JavaScriptCore/JSStringRefBSTR.h>
    4445#include <WebKit/WebKit.h>
    4546#include <string>
     
    659660    return false; // FIXME: Implement this on Windows
    660661}
     662
     663void LayoutTestController::overridePreference(JSStringRef key, JSStringRef flag)
     664{
     665    COMPtr<IWebView> webView;
     666    if (FAILED(frame->webView(&webView)))
     667        return;
     668
     669    COMPtr<IWebPreferences> preferences;
     670    if (FAILED(webView->preferences(&preferences)))
     671        return;
     672
     673    COMPtr<IWebPreferencesPrivate> prefsPrivate(Query, preferences);
     674    if (!prefsPrivate)
     675        return;
     676
     677    BSTR keyBSTR = JSStringCopyBSTR(key);
     678    BSTR flagBSTR = JSStringCopyBSTR(flag);
     679    prefsPrivate->overridePreference(keyBSTR, flagBSTR);
     680    SysFreeString(keyBSTR);
     681    SysFreeString(flagBSTR);
     682}
Note: See TracChangeset for help on using the changeset viewer.