Page MenuHomePhabricator

Flow: when you close then reopen a topic, IE redisplays the closed state
Closed, ResolvedPublic

Description

Summary: Flow needs to tell IE not to cache API requests, otherwise it will reuse old API responses for view-topic, etc.

The Close and open topics "Opening a topic" browser test has always failed on Windows 8 IE.
It genuinely doesn't work!

  1. Close topic, enter a summary "I closed this", submit. Topic redisplays fine.
  2. Reopen topic, enter "I MANUALLY REOPENED THIS", submit.

The topic displays the same *old* state:

This topic was closed by <YOU>
- - -
I closed this

When you close or reopen a topic, Flow JS first makes a POST API request with

action=flow
submodule=close-open-topic
cotmoderationState=close/reopen

But then (by design, see comment for closeOpenTopic inflow-board.js) Flow JS makes a GET API request for action=flow&submodule=view-topic
and the server responds with the entire topic tree, and Flow JS displays this.

Except in Internet Explorer (so far I've reproduced in Windows 8.1 IE11 and Windows 8 IE10 viewing beta labs and mw.org) when you reopen IE doesn't even make the GET view-topic API request. IE remembers the same request when you close, and so IE redisplays the old content, including the old closed state and old summary. It's not until you reload that IE shows the new topic state.

Caching XML HTTP requests is is a known IE "feature", see e.g. http://www.dashbay.com/2011/05/internet-explorer-caches-ajax/ . IE's developer tools Net tab lies and shows an instantaneous server response of 304 Not Modified.

Many other Flow API requests can result in IE reusing an earlier API response. In many cases Flow should tell jQuery ajax to disable caching, either with ajax: { cache: false } in the API request as Echo does, or with a single $.ajaxSetup({ cache: false }) call. But the latter means every Flow API request includes a dummy { _: <TIMESTAMP>} parameter, so every API response has a {"warnings":{"main":{"*":"Unrecognized parameter: '_'"}} response.


Version: master
Severity: normal

Details

Reference
bz69160

Event Timeline

bzimport raised the priority of this task from to Needs Triage.Nov 22 2014, 3:38 AM
bzimport set Reference to bz69160.
bzimport added a subscriber: Unknown Object (MLST).

Change 155463 had a related patch set uploaded by Bsitu:
Make IE not cache ajax request

https://gerrit.wikimedia.org/r/155463

Change 155463 merged by jenkins-bot:
Make IE not cache ajax request

https://gerrit.wikimedia.org/r/155463

All patches mentioned in this report were merged or abandoned - is there more work left to do here (if yes: please reset the bug report status to NEW or ASSIGNED), or can you close this ticket as RESOLVED FIXED?

Quiddity removed a subscriber: Maryana.Dec 19 2014, 1:32 AM