My apologies for derailing your earlier discussion.  I just was in
Document.cpp again yesterday and my mind was blown by the madness that
is that god-class.  Then you posted about adding to Document (which
sounds like the right corse of action here!) and I took advantage of
your post for my stop-pooping-on-Document PSA.

I too have 100% confidence in Dean here. :)  As Maciej says, it's just
a controller on Document.

Carry on.

-eric

On Tue, Aug 17, 2010 at 8:50 AM, Dean Jackson <[email protected]> wrote:
>
> On 17/08/2010, at 12:22 AM, Maciej Stachowiak wrote:
>
>>
>> On Aug 16, 2010, at 10:52 PM, Eric Seidel wrote:
>>
>>> Where-ever it goes, please don't put it on Document directly. :)
>>> (Feel free to tie it to Document's lifetime, just don't add to
>>> Document's 300+ methods.)
>>>
>>> The madness must stop...  Document is long overdue for some weightloss...
>>
>> I assume Dean is suggesting that Document would gain a new data member 
>> (DeviceMotionController?) which strikes me as a reasonable approach.
>
> Right - either one or two (+DeviceOrientationController). I do think the 
> controllers of both events could be a single object - but that is another 
> discussion.
>
> If it wasn't on Document, what do you suggest otherwise? DOMWindow? Putting 
> it on Frame but tying it to Document seems less than perfect.
>
> Dean
>
>>
>>>
>>> -eric
>>>
>>> On Mon, Aug 16, 2010 at 11:43 PM, Dean Jackson <[email protected]> wrote:
>>>> Hi,
>>>>
>>>> I've been looking into implementing the clients for 
>>>> DeviceOrientation/Motion Events. Currently, the controllers for these 
>>>> events are members of Page. I think they are better suited on Document.
>>>>
>>>> Here are a few reasons:
>>>>
>>>> - Page isn't tied to any actual web page or document. Would we want to 
>>>> share the same controller and client across multiple web pages? I don't 
>>>> think so.
>>>> - Document is already the place that is listening for these events
>>>> - It's easy to suspend and resume the client from the Document-level when 
>>>> the user navigates to another page, or the document enters the cache, or a 
>>>> platform needs to temporarily suspend events for some reason.
>>>> - When the API is on Page, it is hidden in the WebView, from where it is 
>>>> difficult to access.
>>>> - it would allow the client to live in WebCore. This avoids tweaking the 
>>>> WebView implementations for all platforms to pass messages back and forth
>>>> https://bugs.webkit.org/show_bug.cgi?id=41616
>>>>
>>>> I assume one of the advantages of having them on Page is that it allows a 
>>>> Mock Controller to be easily created for testing from Dump Render Tree. Am 
>>>> I right? Is this that important?
>>>>
>>>> FWIW, Geolocation seems to take both approaches. One implementation is 
>>>> down in Navigator/Document/DOMWindow, but the mock controller is on Page. 
>>>> I've found the low-level approach much easier to implement.
>>>>
>>>> Thoughts?
>>
>> For this sort of thing, it seems reasonable to me that there is a layer of 
>> the implementation that is a per-document controller, and then below that a 
>> singleton object in case we don't need things to happen multiple times per 
>> document. It doesn't seem especially helpful to have something happen at the 
>> Page level, in normal operation.
>>
>> The reason it seems a singleton would be useful is that you only want to 
>> register with the OS service once, and then multicast the relevant 
>> notifications to all clients that are listening.
>>
>> For purposes of substituting a mock controller:
>>
>> (1) If there is a singleton beneath the per-document controllers, perhaps 
>> the mock object can insert itself at that level.
>> (2) Even if the mock controller is at the per-document level, it is likely 
>> still sufficient for most tests; it might mean a little extra work if we 
>> need to specifically test geolocation or device motion/orientation from a 
>> subframe.
>>
>> Regards,
>> Maciej
>>
>
>
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to