WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
143505
Open WebSockets should not prevent a page from entering PageCache
https://bugs.webkit.org/show_bug.cgi?id=143505
Summary
Open WebSockets should not prevent a page from entering PageCache
Chris Dumez
Reported
2015-04-07 17:18:19 PDT
Open WebSockets should not prevent a page from entering PageCache. This is currently causing mobile.nytimes.com to not be page-cacheable. We could close the WebSocket when entering the page cache and fire the "close" event after resuming, similarly to what we did for XMLHttpRequest in
Bug 142612
. Radar: <
rdar://problem/19923085
>
Attachments
Patch
(9.17 KB, patch)
2015-04-07 17:27 PDT
,
Chris Dumez
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Chris Dumez
Comment 1
2015-04-07 17:27:52 PDT
Created
attachment 250319
[details]
Patch
Alexey Proskuryakov
Comment 2
2015-04-07 19:45:06 PDT
Comment on
attachment 250319
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=250319&action=review
> Source/WebCore/Modules/websockets/WebSocket.cpp:481 > + m_channel->suspend();
Is DocumentWillBecomeInactive the only reason for which canSuspend is respected, or are you changing the behavior for other suspension reasons too? If the latter, how did you confirm that it's right?
Chris Dumez
Comment 3
2015-04-07 20:23:16 PDT
Comment on
attachment 250319
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=250319&action=review
>> Source/WebCore/Modules/websockets/WebSocket.cpp:481 >> + m_channel->suspend(); > > Is DocumentWillBecomeInactive the only reason for which canSuspend is respected, or are you changing the behavior for other suspension reasons too? If the latter, how did you confirm that it's right?
I am not changing the behavior for other suspensions than page cache as far as I know. canSuspend() is only called from ScriptExecutionContext::canSuspendActiveDOMObjects(), which is only called from PageCache::canCachePageContainingThisFrame(). When PageCache::canCache() returns true, we call PageCache::add() which constructs a CachedPage and CachedFrame. In the CachedFrame constructor, we call Document::suspendActiveDOMObjects(ActiveDOMObject::DocumentWillBecomeInactive); This is the only place this ReasonForSuspension is used. Also note the following comment in ActiveDOMObject.h: virtual bool canSuspend() const = 0; // Returning false in canSuspend() will prevent the page from entering the PageCache. This time the comment seems accurate :)
Alexey Proskuryakov
Comment 4
2015-04-07 20:32:28 PDT
Makes sense! We should upgrade the comment to a function name (something like canSuspendForPageCache). And ActiveDOMObject::DocumentWillBecomeInactive is a suspicious name too.
Chris Dumez
Comment 5
2015-04-07 20:36:54 PDT
(In reply to
comment #4
)
> Makes sense! We should upgrade the comment to a function name (something > like canSuspendForPageCache). And > ActiveDOMObject::DocumentWillBecomeInactive is a suspicious name too.
Good idea, I'll do the renaming in a follow-up patch.
WebKit Commit Bot
Comment 6
2015-04-07 21:25:19 PDT
Comment on
attachment 250319
[details]
Patch Clearing flags on attachment: 250319 Committed
r182517
: <
http://trac.webkit.org/changeset/182517
>
WebKit Commit Bot
Comment 7
2015-04-07 21:25:26 PDT
All reviewed patches have been landed. Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug