[webkit-dev] Settings and Preferences in layout tests

Brady Eidson beidson at apple.com
Wed Sep 26 16:18:51 PDT 2012


On Sep 26, 2012, at 2:49 PM, Adam Barth <abarth at webkit.org> wrote:

> 
> 
> On Wed, Sep 26, 2012 at 2:35 PM, Brady Eidson <beidson at apple.com> wrote:
> 
> On Sep 26, 2012, at 2:05 PM, Adam Barth <abarth at webkit.org> wrote:
> 
>> [re-sent from the proper address]
>> 
>> On Wed, Sep 26, 2012 at 2:00 PM, Adam Barth <abarth at nowhere> wrote:
>> 
>> 
>> On Wed, Sep 26, 2012 at 1:53 PM, Brady Eidson <beidson at apple.com> wrote:
>> 
>> On Sep 26, 2012, at 1:48 PM, Ryosuke Niwa <rniwa at webkit.org> wrote:
>> 
>>> On Wed, Sep 26, 2012 at 1:44 PM, Simon Fraser <simon.fraser at apple.com> wrote:
>>> 
>>>  First, direct calls on testRunner that just set preferences should be migrated to internals.settings or testRunner.overridePreference calls, I think (I don't know if either is preferred).
>>> 
>>> I support the idea of unifying the approaches and just use internals.settings. However, the last time I checked, Alexey had some concerns about using internals due to settings may not be properly propagated to WebKit2 layer. Has this concern been addressed?
>> 
>> In general I prefer the overridePreference() calls whenever they exist.
>> 
>> internals.settings are not exposed in any real-world product whereas preferences exist in each platform's WebKit-layer API that they expose to their embedders in some form.
>> 
>> The main downside of overridePreference is that it requires that you expose an API for twiddling the preference on every port.  That can lead to us exposing unneeded APIs (making them harder to remove) and to a bunch of port-specific code in an otherwise port-independent patch.
>> 
>> IMHO, we should prefer InternalSettings unless we need to test the WebKit-layer code.
> 
> I suppose we're biased in Mac-land where the mechanism originated, but the "API" is simply a single string based API that only had to be implemented once.
> 
> Your comment leads me to understand that at least one other port doesn't have simple string based preferences.
> 
> Of course to add *any* new internal setting new code must be added specifically for that setting...
> 
> Of course that code only has to be added once for all platforms…
> 
> I would argue it's not a clear cut decision either way.
> 
> I'm curious whether you've added something to overridePreferences recently.  

In general overridePreference is valuable *when nothing has to be added*.

> It's a ton of port-specific work.  

My advocation here is that sometimes it is *no* additional work.

> For example, here's the changed that added WebKitCSSGridLayoutEnabled:  http://trac.webkit.org/changeset/117613.  It had to change these files:
>
That was terrible.

But that was also adding a whole new preference.  If a whole new preference is being added to an API layer for the purposes of providing API for embedding applications then the work you point to is unavoidable.

As mentioned in my last reply http://trac.webkit.org/changeset/127956 was a stark counterexample.  *No* additional work needed to interact with an already existing preference in a layout test.

In my first reply to this thread I said:

On Sep 26, 2012, at 1:53 PM, Brady Eidson <beidson at apple.com> wrote:

> In general I prefer the overridePreference() calls whenever they exist.

That message was not at all clear.  Let me amend it.  In general I prefer using overridePreference() for preferences that already exist as - at least for some ports - no additional work is required.

~Brady

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20120926/97ccf746/attachment-0001.html>


More information about the webkit-dev mailing list