[webkit-dev] Platform specific fields on WebCore::HistoryItem
Brady Eidson
beidson at apple.com
Tue Dec 21 17:29:26 PST 2010
On Dec 21, 2010, at 4:26 PM, Darin Fisher wrote:
> On Tue, Dec 21, 2010 at 3:59 PM, Darin Fisher <darin at chromium.org> wrote:
> On Tue, Dec 21, 2010 at 2:56 PM, Brady Eidson <beidson at apple.com> wrote:
>
> On Dec 21, 2010, at 1:57 PM, Darin Fisher wrote:
>
>>
>>
>> On Tue, Dec 21, 2010 at 11:49 AM, Darin Fisher <darin at chromium.org> wrote:
>>
>>
>> On Tue, Dec 21, 2010 at 11:46 AM, Brady Eidson <beidson at apple.com> wrote:
>>
>> On Dec 21, 2010, at 11:39 AM, Darin Fisher wrote:
>>
>>> I'm working on fixing some session history bugs related to a HistoryItem's URL property changing.
>>> See for example the call to HistoryItem::setURL in HistoryController::updateForReload [1].
>>>
>>> I'm curious about the platform specific fields on WebCore::HistoryItem. *** Do any of those need to
>>> be updated when the URL of the HistoryItem changes? ***
>>>
>>> Here are the fields I'm referring to:
>>>
>>> class HistoryItem ... {
>>> private:
>>> ...
>>> #if PLATFORM(MAC)
>>> RetainPtr<id> m_viewState;
>>
>> This is used for the Page Cache only. The URL had sure better not change while the page is cached!
>>
>> OK, I will assert that it is 0.
>>
>>
>> Awesome, I found a layout test where the URL of the HistoryItem changes, and there is an associated cached page for the HistoryItem! I presume the right fix is to clear the cached page.
>
> No no no!!!
>
> Why is anyone trying to do anything to the URL of an item that represents a cached page???
>
> Hmm, the testcase is simply assigning location within onload (the equivalent of location.replace). The document is getting replaced with a new document, but the same HistoryItem is being overwritten with the URL of the new document.
>
> I'm not super familiar with the cached page implementation since Chromium does not enable it, but if that system assumes there is a 1:1 relationship between HistoryItems and cached pages / documents, then that could be problematic.
>
> I'm toying with calling HistoryController::invalidateCurrentItemCachedPage() in this case, but maybe that would be suboptimal?
>
> OK, false alarm. The issue is as follows:
>
> The cached page corresponding to the new document is assigned to the HistoryItem before we change its URL. In other words, I don't need to do anything special.
>
Sounds fine.
~Brady
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20101221/6cfbcb6c/attachment.html>
More information about the webkit-dev
mailing list